Security Web
2020/2021
P.Lafourcade
TP5 HTTP to HTTPS
L’objectif est de configurer pas ` a pas un site en https.
L’objectif n’´etant pas le design de page web, nous supposons que les pages sont stock´ees dans le r´epertoire /var/www/html/index.html .
VDN.
Nous allons utiliser vdn . La documentation est disponible
1:
https://opale.u-clermont1.fr/info/wiki/doku.php?id=public:vdn:guide&#utilisation Dans le compte rendu vous noterez toutes les instructions que vous avez tap´ees et les r´esultats obtenus une fois connect´es.
Pour copier un fichier de votre session vdn vous devez dans une fenˆetre ssh sur debian-1 utilisez la commande scp [email protected]:file . afin de copier le fichier file dans la racine de debian-1.
Dans l’autre sens vdn-scp file root@debian-1:. pour copier le fichier file sur debian-1.
Faire vdn-halt debian-1 pour arrˆeter proprement vdn.
Pr´ eliminaires.
Connectez vous en ssh `a l’IUT sur tokyo .
Scannez les machines allum´ees ˜gudavala/bin/iut-scan Connectez `a une machine par ssh de puis tokyo .
Lancer la commande vdn-tmux pour avoir 4 fenˆetres
2.
La commande wget https://sancy.iut-clermont.uca.fr/˜lafourcade/vdn-start-secure-1 vous permet de r´ecup´erer le fichier vdn-start-secure-1
Faire chmod 755 vdn-start-secure-1 Lancer la commande ./vdn-start-secure-1
Connectez-vous `a debian-1 en tant que root avec la commande vdn-ssh root@debian-1 Si besoin pouvouvez vous connectez `a debian-1 en tant que test avec la commande vdn-ssh test@debian-1
En mode texte Se connecter en ssh `a l’IUT sur ssh.iut-clermont.uca.fr, puis scanner les machines allum´ees avec iut-scan et vous connecter en ssh `a l’une d’entre elles. Pour partager votre ´ecran avec l’enseignant faire iut-tmux -a palafour
Lancer vdn-start -t debian-1
Puis lancer dans un autre terminal le script baseConfigSecure-1 avec la commande vdn-scripts
que vous aller t´el´echarger https://sancy.iut-clermont.uca.fr/˜lafourcade/SECWEB/baseConfigSecure-1 cette commande prend un peu de temps.
Puis se connecter `a la machine debian-1 il faut faire vdn-ssh root@debian-1
En mode grahique avec X2GO ou Guacamaol Connectez-vous `a l’IUT avec https://
guacamole.iut-clermont.uca.fr/#/ ou avec X2GO. Puis tapez ssh -X localhost . Pour partager votre ´ecran avec l’enseignant faire iut-vnc -a palafour
Ensuite lancer VDN avec la commande ˜vdn/vdn/bin/vdn puis ouvrir le r´eseau secure1 et d´emarrer la machine debian-1, lancer le script baseConfigSecure-1 et se connecter en tant que root.
1login : sesame / password : 2019
2vdn-tmux -rpour arretertmux.
1
V´ erification du fonctionnement de la machine.
V´erifier avec la commande systemctl status apache2 l’´etat du serveur apache2 , si be- soin l’arreter avec la commande systemctl stop apache2 ou le d´emarer avec la commande systemctl start apache2 .
Normalement vous avez acc`es `a la page /var/www/html/index.html grˆace au navigateur en ligne de commande links http://127.0.0.1:80
En changeant le fichier /var/www/html/index.html vous pouvez v´erifier que cela fonctione, en le rempla¸cant par ces quelques lignes.
<html>
It works!
</html>
V´erifions que le port https (443) est bien inactif en acc´edant `a la page suivante : links https://127.0.0.1:443
Exercise 1 (Cr´ eation des certificats auto-sign´ es (3 points)) Par d´efault openssl fournit un certificat.
/etc/ssl/certs/ssl-cert-snakeoil.pem De plus, openssl fournit aussi une clef priv´ee.
/etc/ssl/private/ssl-cert-snakeoil.key Utilisez la commande suivante pour en savoir plus.
openssl rsa -noout -text -check -in /etc/ssl/private/ssl-cert-snakeoil.key 1. (1 point) La commande ci-dessous permet de lire ce certificat. Quelles sont les principales
caracr´eristiques de ce certificat? Quelle est sa date de p´eremption ? openssl x509 -text -in /etc/ssl/certs/ssl-cert-snakeoil.pem
2. La commande suivante permet de reg´en´erer ce certificat et cette clef. Avant de les reg´en´erer sauvegarder les anciens. Comparer les deux versions (1 point). Dans combien de jours le nouveau certificat perime-t-il ?
make-ssl-cert generate-default-snakeoil --force-overwrite
Rajouter cette ligne dans le fichier /etc/hosts avant de lancer la commande sinon cela ne fonctionnera pas.
10.0.2.15 debian-1
3. (1 point) Ouvrir le contenu du fichier /usr/sbin/make-ssl-cert et d´eterminer les param`etres utilis´es pour g´en´erer la clef et le certificat. Modifier ce fichier pour que le certificat g´en´erer ne soit valable que 10 jours.
Exercise 2 (Configuration d’apache2 pour activer https (3 points)) Pour les fichiers de configuration d’ apache2 lisez les fichiers suivants :
/etc/apache2/ports.conf (port 443)
/etc/apache2/sites-available/default-ssl.conf (port 80) /etc/apache2/sites-available/000-default.conf
La commande a2enmod ssl active le module ssl d’Apache2 a2 = apache2, en = enable, mod = module, ce qui est ´equivalent `a
ln -s /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-enabled/000-default.conf La commande suivante active le virtual host a2ensite default-ssl
Elle est ´equivalente aux deux commandes suivantes:
ln -s /etc/apache2/mods-available/ssl.conf /etc/apache2/mods-enabled/ssl.conf ln -s /etc/apache2/mods-available/ssl.load /etc/apache2/mods-enabled/ssl.load La commande suivante relance le serveur Apache2
service apache2 reload ou bien
sudo service apache2 restart
1. (1 point) Qu’observez-vous sur le site http://0.0.0.0:443 ? Est-ce normal ? 2. (1 point) Observer ce site en https ?
2
3. (1 point) Verifier quels protocoles sont accept´es grˆace au script testssl.sh qui est dans le home de debian-1 .
Exercise 3 (Rediriger http vers https (4 points))
Nous allons utiliser le mode mod_rewrite afin de redirigier les pages http en https
3(lire la docu- mentation apache peut aider).
Ne pas oublier de recharger le service avec la commande suivante apr`es chaque changement de configuration d’apache : service apache2 reload
Il faut tout d’abord activer le mode rewrite avec la commande suivante:
a2enmod rewrite
Ensuite il faut modifier le fichier 000-default.conf afin d’activier RewriteEngine, de mettre un condition avec RewriteCond et d’ajouter une r`egle de r´e´ecriture avec RewriteRule
V´erifier que cela fonctionne, en visitant http://127.0.0.1 avec links Exercise 4 (Mettre en place TLS 1.3 (3 points))
1. Tester ces commandes afin de v´erifier que ces sites soient bien en TLS1.2 et TLS1.3.
openssl s_client -proxy 193.49.118.36:8080 -connect www.google.com -tls1_2 openssl s_client -proxy 193.49.118.36:8080 -connect www.google.com -tls1_3 openssl s_client -proxy 193.49.118.36:8080 -connect ayesh.me:443 -tls1_3 2. Ouvrir ce fichier : etc/apache2/mods-available/ssl.conf
Enlever les anciennes versions de TLS : all -SSLv2 -SSLv3 .
3. V´erifier que votre site 127.0.0.1 est bien en TLSv1.2 avec le script testssl.sh ensuite enlever aussi ces versions TLSv1 et TLSv1.1 et v´erifier encore une fois.
4. Maintenant mettre TLS 1.3 est par d´efaut SSLProtocol -all +TLSv1.3 +TLSv1.2 V´erifier que cela fonctionne avec openssl et pas avec testssl.sh .
5. Jouez avec les param´etres cryptographiques et v´erifier que cela focntionne.
SSLOpenSSLConfCmd Ciphersuites TLS_CHACHA20_POLY1305_SHA256:
TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384 SSLOpenSSLConfCmd Curves X25519:sect571r1:secp521r1:secp384r1
SSLOpenSSLConfCmd Curves X25519:secp521r1:secp384r1:prime256v1
ATTENTION. Faire un service apache2 restart entre chaque manipulation.
Exercise 5 (https en g´ erant la cryptographie avec openssl (7 points))
Objectif : Ajouter un certificat racine dans votre navigateur et placer une autorit´e interm´ediaire dans votre site pour que l’acc`es `a vos pages web soient consid´er´ees comme sˆures.
1. (1 point) G´en´erer avec openssl une clef RSA de 4096-bits qui servira de root CA (Certifi- cate Auhtority), choisir comme nom de fichier cert/rootca.key en indiquant comme CN (Common Name) www.rootdom.com
2. (1 point) Cr´eer avec la commande openssl req -new -x509 -key cert/rootca.key un certificat X.509 auto-sign´e pour root CA, le r´esultat sera plac´e dans le fichier cert/rootca.crt . 3. (2 points) Cr´eer un CA interm´ediaire pour cela :
• Commencer par cr´eer une clef de 4096-bits qui sera stock´ee dans le fichier : cert/inter.key
• G´en´erer un certificat X.509 pour ce subordinate CA dans le fichier cert/inter.csr en indiquant comme CN (Common Name) www.mydom.com en utilisant la clef inter.key
• Faire signer ce certificat par le root CA.
openssl x509 -req -in cert/inter.csr -CA cert/rootca.crt -CAkey cert/rootca.key -set_serial 01 -out cert/inter.crt
• Exporter les certificats PKCS12 dans cert/inter.p12
openssl pkcs12 -export -out cert/inter.p12 -inkey cert/inter.key -in cert/inter.crt -chain -CAfile cert/rootca.crt
• Exporter `a partir du ceftificat inter.p12 le certificat et la clef au format PEM dans cert/my.crt.pem et cert/my.key.pem .
openssl pkcs12 -in cert/inter.p12 -out cert/my.key.pem -nocerts -nodes
3https://httpd.apache.org/docs/2.4/fr/mod/mod_rewrite.html