« Atelier SysRes SE4 2024/2025 E9 » : différence entre les versions
(→HTTPS) |
|||
(5 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 229 : | Ligne 229 : | ||
<syntaxhighlight lang="shell"> | <syntaxhighlight lang="shell"> | ||
@ IN SOA ns.pardon-macron.online. admin.pardon-macron.online. ( | @ IN SOA ns.pardon-macron.online. admin.pardon-macron.online. ( | ||
2025031206 ; Serial | |||
3600 ; Refresh | 3600 ; Refresh | ||
1800 ; Retry | 1800 ; Retry | ||
Ligne 245 : | Ligne 245 : | ||
www IN CNAME ns | www IN CNAME ns | ||
_h2b0puznzq25812xy3l958emg9ud41r.pardon-macron.online. 10800 IN CNAME dcv.digicert.com. | |||
_h2b0puznzq25812xy3l958emg9ud41r.www.pardon-macron.online. 10800 IN CNAME dcv.digicert.com. | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Plus qu'a attendre que la nouvelle version du DNS se propage et que Gandi crée le certificat, on vérifie avec la commande <code>dig _h2b0puznzq25812xy3l958emg9ud41r.pardon-macron.online. CNAME +short</code> après quelques minutes on obtient bien la réponse attendue (par Gandi) : | |||
<syntaxhighlight lang="shell"> | |||
louis@macbookpro ~ % dig _h2b0puznzq25812xy3l958emg9ud41r.pardon-macron.online. CNAME +short | |||
dcv.digicert.com. | |||
</syntaxhighlight> | |||
Maintenant que Gandi a validé que nous possédons bien le contrôle du DNS, il nous génère le certificat SSL pour le nom de domaine, que nous pouvons ensuite ajouter sur le serveur, modifier les fichiers de configuration nécessaires et activer HTTPS. | |||
<syntaxhighlight lang="shell"> | |||
a2enmod ssl | |||
a2ensite pardon-macron.conf | |||
service apache2 reload | |||
</syntaxhighlight> | |||
=== Accès en IPV4 === | |||
Selon le réseau où on se situe on peux accéder au site, en IPV6 uniquement. Pour corriger ce problème on utilise la machine mandataire comme proxy inverse avec la configuration suivante dans <code>/etc/apache2/sites-available/pardon-macron.conf</code> (Merci à Kevan et Maxime) | |||
<syntaxhighlight lang="shell"> | |||
<VirtualHost *:80> | |||
ServerName pardon-macron.online | |||
ServerAlias www.pardon-macron.online | |||
RedirectPermanent / https://pardon-macron.online/ | |||
</VirtualHost> | |||
<VirtualHost *:443> | |||
ServerName pardon-macron.online | |||
ServerAlias www.pardon-macron.online | |||
SSLProxyEngine on | |||
ProxyPreserveHost On | |||
ProxyPass / https://pardon-macron.online/ | |||
ProxyPassReverse / https://pardon-macron.online/ | |||
ErrorLog ${APACHE_LOG_DIR}/error.log | |||
CustomLog ${APACHE_LOG_DIR}/access.log combined | |||
SSLCertificateFile /etc/ssl/certs/pardon-macron.online.crt | |||
SSLCertificateKeyFile /home/certif/myserver.key | |||
SSLCertificateChainFile /home/certif/GandiCert.pem | |||
<FilesMatch "\.(?:cgi|shtml|phtml|php)$"> | |||
SSLOptions +StdEnvVars | |||
</FilesMatch> | |||
<Directory /usr/lib/cgi-bin> | |||
SSLOptions +StdEnvVars | |||
</Directory> | |||
</VirtualHost> | |||
</syntaxhighlight> | |||
== Conclusion == | |||
Le site est accessible à l'adresse : https://pardon-macron.online , fonctionnel avec un FAI ipv6 ou ipv4 et en HTTPS | |||
Ce projet nous à permis de comprendre la mise en place d'un réseau de plusieurs VM, la mise en place d'un DNS et sa sécurisation avec DNSSEC ainsi que la gestion de certificats SSL. Après la mésaventure avec le mélange/perte de notre clef SSL nous avons appris la leçon et ne recommencerons pas cette erreur dans le futur. | |||
[[File:sysres_2024-2025_lbon_resultat.png|thumb|center|600px|Résultat politiquement correct]] |
Version du 12 mars 2025 à 22:23
AARV - BOURSAULT - BONNINGRE
Configuration machines virtuelles
Création de la VM
xen-create-image --hostname=SE4.Bree --dhcp --dir=/usr/local/xen --size=10G --dist=daedalus --memory=2G --bridge=macron
Démarrage de la VM : xen create SE4.Bree.cfg
Ouverture de la VM : xen console SE4.Bree
Var et Home
On monte les disques dans /var et /home en ajoutant
/dev/xvda3 /home ext4 defaults 02
/dev/xvdb1 /var ext4 defaults 02
dans /etc/fstab
IP
On modifie la configuration réseau de la machine mandataire dans /etc/interfaces L'interface eth0 permet de connecter les trois machines entre elles, l'interface eth1 permet de se connecter à internet via le réseau de l'école
On modifie ensuite la configuration de l'interface des machines de service
On peut ping entre les machines.
On peux maintenant accéder a internet et ping 8.8.8.8 depuis la mandataire, pour accéder à internet sur les machines de service il faut utiliser une mascarade.
On installe iptables avec apt install iptables
puis on crée la mascaradeiptables -t nat -A POSTROUTING -j MASQUERADE -s 192.168.1.0/24
,on décommente la ligne net.ipv4.ip_forward=1
du fichier /etc/sysctl.conf et enfin sysctl -p
.
Succès, les machines de service sont connectées à internet.
SSH
On active le SSH sur les 3 machines, on peut accéder à la mandataire avec son adresse IPV4 routée, pour les machines de service on redirige un port (2201 et 2202) de la mandataire vers le port 22 des services avec iptables.
Pour se connecter à Bree on utilise donc la commande ssh -p 2201 root@193.48.57.174
Et pour se connecter à Gaby on utilise la commande ssh -p 2202 root@193.48.57.174
On peut également se connecter avec les adresses IPV6 mais elles ne sont pas facile à retenir.
DNS
Pour la partie DNS on installe bind9 et apache2, on ajoute ensuite les addresses IPV4 et IPV6 de la machine de service dans le Glue Record de Gandi.
On modifie /etc/resolv.conf
root@Gaby:/etc/bind# cat /etc/resolv.conf
search plil.info
nameserver 127.0.0.1
search macron-explosion.online
nameserver 192.168.1.21
nameserver 192.168.1.20
Le fichier /etc/bind/named.conf.local
de la machine de service Gaby
zone "macron-explosion.online" {
type master;
file "/etc/bind/macron-explosion.online.db";
allow-transfer{secondaries;};
also-notify{hiddensecondaries;};
notify yes;
};
acl "secondaries"{
2001:660:4401:60a0:216:3eff:fe1f:1cae; //Adresse de l autre machine de service (ici Bree)
2001:660:4401:60a0:216:3eff:fe7a:5d61; //Adresse de la mandataire
};
masters "hiddensecondaries" {
2001:660:4401:60a0:216:3eff:fe7a:5d61;
};
zone "macron-demission.online" {
type slave;
file "/etc/bind/macron-demission.online.db";
masters {2001:660:4401:60a0:216:3eff:fe1f:1cae; }; //Adresse de l autre machine de service (ici Bree)
};
Et le fichier macron-explosion.online.db
root@Gaby:/etc/bind# cat macron-explosion.online.db
$TTL 200
@ IN SOA ns.macron-explosion.online. admin.macron-explosion.online. (
2023021101 ; Serial
3600 ; Refresh
1800 ; Retry
1209600 ; Expire
200 ) ; Minimum TTL
@ IN NS ns.macron-explosion.online.
ns IN A 193.48.57.174 ; Adresse IPv4 de votre serveur DNS primaire
ns IN AAAA 2001:660:4401:60a0:216:3eff:fe2d:8017
www IN CNAME ns
On gére le service dns avec la commande
systemctl stop bind9
systemctl start bind9
systemctl restart bind9
Et on observe les logs avec la commande cat /var/log/syslog | grep named
Avec le site DNS-checker on remarque notre DNS est en train de se propager (en IPV4 et IPV6)
On peut modifier la page d'accueil d'apache2 avec la commande echo "Coucou c'est Louis" | tee /var/www/html/index.html
On accède bien à cette page avec un navigateur à l'adresse : http://ns.macron-explosion.online (en IPV6 seulement pour l'instant ??)
DNSSEC
On ajoute dans /etc/bind/named.conf.local
zone "macron-explosion.online" {
type master;
file "/etc/bind/macron-explosion.online.db";
allow-transfer{secondaries;};
also-notify{hiddensecondaries;};
notify yes;
key-directory "/etc/bind/keys";
dnssec-policy "dnspol";
inline-signing yes;
};
.....
dnssec-policy "dnspol" {
keys {
ksk key-directory lifetime unlimited algorithm 13;
zsk key-directory lifetime unlimited algorithm 13;
};
nsec3param;
};
Ensuite on crée le dossier keys et on donne les droits a bind d'écrire dedans avec :
mkdir /etc/bind/keys
chown bind:bind /etc/bind/keys
chmod 750 /etc/bind/keys
On redemarre le daemon bind9 et les clefs sont crées automatiquement :
root@Gaby:/etc/bind/keys# ls
Kmacron-explosion.online.+013+28684.key Kmacron-explosion.online.+013+28684.state Kmacron-explosion.online.+013+30228.private
Kmacron-explosion.online.+013+28684.private Kmacron-explosion.online.+013+30228.key Kmacron-explosion.online.+013+30228.state
Il ne reste qu'à ajouter la clef KSK sur Gandi
Fail2ban
On remarque dans les logs des tentatives de connexion en SSH sur les machines. Pour stopper les attaques brutforce j'installe fail2ban sur les machines, avec la configuration suivante :
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
findtime = 600
Si 3 tentatives infructueuses de connexion ont lieu, l’IP est bannie pendant une heure.
Ca fonctionne, en seulement quelques minutes des adresses ont été bloquées:
root@Desperate:~# fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 7
| |- Total failed: 23
| `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 2
|- Total banned: 2
`- Banned IP list: 148.72.64.105 103.171.85.186
Apache
HTTPS
Apres avoir ajouter les fichiers de configuration nécessaires et relancé apache sur la machine de service la fonctionne HTTPS ne fonctionne pas.
/etc/apache2/sites-available/macron-explosion.online.conf
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin webmaster@macron-explosion.online
ServerName macron-explosion.online
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/macron-explosion.online.crt
SSLCertificateKeyFile /home/certif/macron-explosion.key
SSLCertificateChainFile /home/certif/GandiCert.pem
SSLProxyEngine on
ProxyPass / http://macron-explosion.online/
ProxyPassReverse / http://macron-explosion.online/
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>
En regardant dans /var/log/apache2/error.log
je remarque la ligne suivante :
[Thu Mar 06 09:21:01.139831 2025] [ssl:emerg] [pid 2089:tid 2089] AH02565: Certificate and private key macron-explosion.online:443:0 from /etc/ssl/certs/macron-explosion.online.crt and /home/certif/macron-explosion.key do not match
AH00016: Configuration Failed
Malheuresement nous avons mélangé/perdu la précieuse clef SSL :-(
Pour régler ce problème nous n'avons pas d'autre choix que de commander un nouveau nom de domaine et recommencer la partie DNS. De peur d'être envoyés au front nous avons choisis des nouveaux noms de domaines qui sont "pardon-macron.online" et "merci-macron.online". Il nous suffit de modifier les fichiers précédents et de remplir le GLUE sur gandi, notre nouveau nom de domaine se propage dans les DNS.
Pour générer le certificat SSL gandi nous demande d'ajouter des CNAME dans notre DNS pour valider notre identité, on incrémente le serial et relançons bind9 pour propager cette nouvelle version de notre DNS.
@ IN SOA ns.pardon-macron.online. admin.pardon-macron.online. (
2025031206 ; Serial
3600 ; Refresh
1800 ; Retry
1209600 ; Expire
200 ) ; Minimum TTL
@ IN NS ns.pardon-macron.online.
@ IN A 193.48.57.174 ;
@ IN AAAA 2001:660:4401:60a0:216:3eff:fe2d:8017 ;
ns IN A 193.48.57.174 ;
ns IN AAAA 2001:660:4401:60a0:216:3eff:fe2d:8017
www IN CNAME ns
_h2b0puznzq25812xy3l958emg9ud41r.pardon-macron.online. 10800 IN CNAME dcv.digicert.com.
_h2b0puznzq25812xy3l958emg9ud41r.www.pardon-macron.online. 10800 IN CNAME dcv.digicert.com.
Plus qu'a attendre que la nouvelle version du DNS se propage et que Gandi crée le certificat, on vérifie avec la commande dig _h2b0puznzq25812xy3l958emg9ud41r.pardon-macron.online. CNAME +short
après quelques minutes on obtient bien la réponse attendue (par Gandi) :
louis@macbookpro ~ % dig _h2b0puznzq25812xy3l958emg9ud41r.pardon-macron.online. CNAME +short
dcv.digicert.com.
Maintenant que Gandi a validé que nous possédons bien le contrôle du DNS, il nous génère le certificat SSL pour le nom de domaine, que nous pouvons ensuite ajouter sur le serveur, modifier les fichiers de configuration nécessaires et activer HTTPS.
a2enmod ssl
a2ensite pardon-macron.conf
service apache2 reload
Accès en IPV4
Selon le réseau où on se situe on peux accéder au site, en IPV6 uniquement. Pour corriger ce problème on utilise la machine mandataire comme proxy inverse avec la configuration suivante dans /etc/apache2/sites-available/pardon-macron.conf
(Merci à Kevan et Maxime)
<VirtualHost *:80>
ServerName pardon-macron.online
ServerAlias www.pardon-macron.online
RedirectPermanent / https://pardon-macron.online/
</VirtualHost>
<VirtualHost *:443>
ServerName pardon-macron.online
ServerAlias www.pardon-macron.online
SSLProxyEngine on
ProxyPreserveHost On
ProxyPass / https://pardon-macron.online/
ProxyPassReverse / https://pardon-macron.online/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLCertificateFile /etc/ssl/certs/pardon-macron.online.crt
SSLCertificateKeyFile /home/certif/myserver.key
SSLCertificateChainFile /home/certif/GandiCert.pem
<FilesMatch "\.(?:cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
Conclusion
Le site est accessible à l'adresse : https://pardon-macron.online , fonctionnel avec un FAI ipv6 ou ipv4 et en HTTPS
Ce projet nous à permis de comprendre la mise en place d'un réseau de plusieurs VM, la mise en place d'un DNS et sa sécurisation avec DNSSEC ainsi que la gestion de certificats SSL. Après la mésaventure avec le mélange/perte de notre clef SSL nous avons appris la leçon et ne recommencerons pas cette erreur dans le futur.