TP sysres IMA2a5 2015/2016 G1 : Différence entre versions
Ligne 346 : | Ligne 346 : | ||
#}<br /><br /> | #}<br /><br /> | ||
par les lignes :<br /> | par les lignes :<br /> | ||
− | client 172.20.99.0/24 {<br /> | + | client 172.20.99.0/24 { <br /> |
secret = BigSecret <br /> | secret = BigSecret <br /> | ||
shortname = wifi<br /> | shortname = wifi<br /> | ||
− | }<br /> | + | } <br /> |
<br /> | <br /> | ||
<br /><br />Nom de domaine reservé : clement-millet.work | <br /><br />Nom de domaine reservé : clement-millet.work |
Version du 27 novembre 2015 à 12:25
Sommaire
Projet Sys&Res IMA2A S9
Partie I - Réalisation en monome : Configuration du routeur
a) Affectation des Vlan et des adresses aux élèves
Ci-dessous, le tableau regroupant Les adresses et Vlan associés aux élèves :
Vlan N° | Nom | Plage d'adresse | Adresse Vlan | Adresse Passerelle |
---|---|---|---|---|
1 | Network | 172.20.99.0/24 | 172.20.99.253 | 172.20.99.254 |
2 | Puduc | 172.20.100.0/24 | 172.20.100.253 | 172.20.100.254 |
3 | Nounours | 172.20.101.0/24 | 172.20.101.253 | 172.20.101.254 |
4 | Jeuno | 172.20.102.0/24 | 172.20.102.253 | 172.20.102.254 |
5 | Relax | 172.20.103.0/24 | 172.20.103.253 | 172.20.103.254 |
6 | John | 172.20.104.0/24 | 172.20.104.253 | 172.20.104.254 |
7 | Loki | 172.20.105.0/24 | 172.20.105.253 | 172.20.105.254 |
8 | Papy | 172.20.106.0/24 | 172.20.106.253 | 172.20.106.254 |
10 | Hub | 193.48.57.176/28 | 193.48.57.189 | 193.48.57.190 |
131 | Interco | 192.168.222.8/29 | 192.168.222.10/29 | X |
Explication :
Chaque élève obtient une plage d'adresse allant de 172.20.10X.0 à 172.20.10X.254 (172.20.10X.255 étant le broadcast).
Deux routeur sont sur le réseau en redodance. Un seul suffit pour router. C'est pourquoi, pour chaque Vlan, on associe l'adresse par défaut 172.20.10X.254.
Puis, le routeur disponible change cette adresse par : 172.20.100.252 pour le routeur d'Eric et 172.20.100.253 pour le miens.
Dans le cas où les deux routeurs sont disponibles, alors c'est celui qui a la plus grande priorité qui fera l'action. La priorité se change avec la comande suivante : Switch(config-if)#stanby 1 priority 110 // pour une priorité égale à 110 (par défaut, la priorité est de 100).
Pour que le routeur de l'école connaît toutes ces adresses et vis-versa, on effectue un échange de table de routage par le protocole de routage OSPF.
b) Implantation des éléments dans le routeur
Astuce pour trouver le numéro de port usb connecté au routeur :
taper la commande ls /dev/ttyUSB*. Puis, connecter le routeur au PC via la liaison série. Enfin retaper la même commande
Le port usb recherché est celui qui vient d’apparaître.
Passer en root pour pouvoir accéder au routeur. Puis minicom -os.
Pour sortir de minicom : CTRL + A ; q
Astuce 2 : En sortie de minicom -os, le terminal peut déconner. Dans ce cas, taper la commande stty sane
Une fois en dialogue avec le routeur, les lignes à taper sont les suivantes :
/*****Affectation adresse IP et netmask*****/ Switch>en //passage en administrateur Switch#conf t //configuration Enter configuration commands, one per line. End with CNTL/Z. Switch(config)#int vlan 2 //Entrer dans la config du vlan 2 Switch(config-if)#ip address 172.20.100.253 255.255.255.0 //Affectation de l'adresse du Vlan Switch(config-if)#standby 1 ip 172.20.100.254 //Affectation de l'adresse du Vlan connu par les machines Switch(config-if)#standby 1 preempt //Utilisation du protocole HSRP (pour la redondance) Switch(config-if)#standby 1 priority 100 //Affecte le niveau de priorité. (Inutile pour priorité = 100) Switch(config-if)#exit Switch(config)#exit Switch#write //Avec cette commande, la config ne sera pas perdu si le routeur est éteint électriquement. /*****Affecter un nom au Vlan*****/ Switch#conf t //configuration Enter configuration commands, one per line. End with CNTL/Z. Switch(config)#vlan 3 Switch(config-vlan)#name Nounours Switch(config-vlan)#exit Switch(config)#exit Switch#write /*****Affecter un port pour internet*****/ Switch#conf t Enter configuration commands, one per line. End with CNTL/Z. Switch(config)#int GigabitEthernet 0/47 //on entre dans la config du port GigabitEthernet 0/47 Switch(config-if)#Switchport mode acess Vlan 131 //On définit que ce port est associé au Vlan 131 (internet) Switch(config-if)#exit Switch(config)#exit Switch#write /*****Echange des tables de routages*****/ Switch(config)#router ospf 1 Switch(config-router)#log-adjacency-changes Switch(config-router)#router-id 172.20.100.253 Switch(config-router)#log-adjacency-changes Switch(config-router)#summary-address 172.20.96.0 255.255.240.0 //Nos adresses allant de 172.20.100.0/24 à 172.20.106.0/24, j'ai ciblé l'échange en associant le masque 255.255.240.0. Switch(config-router)#summary-address 193.48.57.0 255.255.255.0 Switch(config-router)#redistribute connected subnets Switch(config-router)#redistribute connected metric 30 subnets /*Pour que le routeur de l'école connaît le routeur à utiliser pour contacter nos machines, on attribue sur chaque routeur une priorité. Comme j'ai le routeur "de secoure", je mets donc moins de priorité au miens. J'ai donc attribué un metric 30 et Eric un metric 20.*/ Switch(config-router)#network 192.168.222.8 0.0.0.7 area 2 Switch(config-router)#exit Switch(config)#exit Switch#write
Avant le write, il est possible de voir l'ensemble de la config grâce à show run.
Partie II - Réalisations communes
a) Installation des systèmes d'exploitation
a1) Installation sur l'eeePC
Il a tout d'abord fallu trouver une image debian sur internet qui est adapté à notre eeePc, puis la mettre sur une clé USB bootable.
Avant de booter sur cette clé, j'ai dû désactiver l'option de démarrage sécurisé (option qui vérifie que l'OS est authentique).
Puis j'ai démarré l'eeePc sur cette clé est installé le linux.
Configuration réseau manuelle :
Adresse IP de la machine (une adresse dans ma zone réservé qui est 172.20.100.0/24) : 172.20.100.10 Masque du réseau : 255.255.255.0 (/24) Passerelle : 172.20.100.254 Serveur de nom : 193.48.57.34 Nom de la machine : zebrasoma Domaine : Deule.net
Configuration de la partition manuelle :
J'ai changé la partition de windows initialement de 22.0 GB à 8GB.
Il me reste donc 14GB de libre, j'ai pu donc mettre linux sur cette espace.
Pour continuer l'installation il faut renseigner les points suivant :
Nom du miroir de l'archive Debian : debian.polytech-lille.fr
Mandataire HTTP : http ://proxy.polytech-lille.fr:3128
a2) Installation dans la machine virtuelle Xen
Puis, j'ai créé une machine virtuelle en me connectant sur root@cordouan.insecserv.deule.net
La commande pour creer la machine virtuelle est la suivante :
xen-create-image --hostname Troll --ip 193.48.57.177 --netmask 255.255.255.240 --dir /usr/local/xen
Hostname : Troll
Distribution : jessie
MAC Address : 00:16:3E:9F:A4:0A
IP Address(es) : 193.48.57.177
RSA Fingerprint : 9b:68:20:bf:bc:04:d1:2f:85:2d:8a:2e:52:e8:38:e2
Root Password : tenue secret non mais oh!
Commande utile :
Pour ouvrir la machine : xl create /etc/xen/Troll.cfg
Pour voir les machine d'ouverte : xl list
Pour acceder à la machine : xl console Troll
Pour la fermer : halt
nano /etc/ssh/sshd_config allow route login (without password)->yes
apt -get purge network-manager systemd
Attention, avant de rebooter, taper cette commande impérativement
init tab , puis trouver tout en bas 1:??45:tty1 remplacer par 1:??45:hvc0
b) Service Internet
b1) Serveur ssh
Pour que mon Eee PC se connecte automatiquement à une borne wifi, il est nécessaire de modifier le fichier /etc/network/interfaces
Pour ma part, je me connecte sur la borne de Marrouane. Ci dessous, la modification apporté au fichier :
uto wlan0 iface wlan0 inet static wireless-mode managed wireless-essid T1 //Borne de marouanne wireless-key 0000000000 //Mot de passe de la borne wifi de marrouane address 172.26.79.63 //adresse de mon pc netmask 255.255.240.0 gateway 172.26.79.254
Les deux machine sont maintenant connectés et accessibles par ssh
b2) Serveur DNS
Afin de configurer notre serveur DNS, il est necessaire de modifier les trois fichiers suivant :
- named.conf.local
- db.Clem
- named.conf.options
En voici les modifications :
named.conf.local : zone "clement-millet.work" { type master; // dns maître (l'esclave sera gandi) file "/etc/bind/db.Clem"; //On met la conf dans ce fichier et on garde la conf par defaut dans le fichier /etc/bind/db. ----------------------------------------------------------------------------------------------------------------------------------- db.Clem : ; ; BIND data file for local loopback interface ; $TTL 3600 @ IN SOA ns admin ( 3 ; Serial //Numéro qu'on incrémente à chaque modif de façon à ce que ce soit pris en compte 3600 ; Refresh //Données en seconde 600 ; Retry 36000 ; Expire 3600 ) ; Negative Cache TTL ; @ IN NS ns @ IN NS ns6.gandi.net. @ IN MX 100 mail ns IN A 193.48.57.177 //adresse de ma machine virtuel mail IN A 193.48.57.177 www IN CNAME ns // = alias de ns }; ----------------------------------------------------------------------------------------------------------------------------------- named.conf.options : options { directory "/var/cache/bind"; dnssec-validation auto; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { any; }; allow-transfer { "allowed_to_transfer"; }; }; acl "allowed_to_transfer" { 217.70.177.40/32; //On autorise toutes les adresses dans cette plage, sachant que L'adresse de www.gandi.net est 217.70.184.1 };
Il est maintenant necessaire de renseigner à gandi l'adresse de ????
b3) Sécurisation de site web par certificat
Je me connecte sur ma machine virtuelle puis j'installe les packages suivants :
- postfix
- mailx
- bsd-mailx
Je modifie le fichier /etc/aliases et j'ajoute la ligne : admin: root
Je recompile en tapant la commande newaliases
J'envoie ensuite un mail à admin@clement-millet.work
Puis, je vérifie si j'ai bien reçu le mail en tapant mailx => mail bien reçu
Je peux donc maintenant creer un certificat ssl pour mon nom de domaine et recevoir la confirmation par mail.
Puis, je créer les fichiers suivant qui vont stocker les certificats donnés par gandi.net :
troll.crt //certificat intermédiaire
gandi.crt
Il est ensuite nécessaire de créer le fichier /etc/apache2/sites-available/000-domain.tld-ssl.conf puis y écrire les lignes suivantes :
<VirtualHost 193.48.57.177:443> ServerName www.clement-millet.work ServerAlias clement-millet.work DocumentRoot /var/www/ CustomLog /var/log/apache2/secure_access.log combined SSLEngine on SSLCertificateFile /root/troll.crt //clé publique + signature de gandi SSLCertificateKeyFile /root/troll.key //private key SSLCertificateChainFile /root/gandi.crt SSLVerifyClient None </VirtualHost>
Enfin, il faut taper les commandes suivantes pour prendre en compte le serveur https:
a2ensite 000-domain.tld-ssl a2enmod ssl service apache2 reload service apache2 restart
b4) Sécurisation de serveur DNS par DNSSEC
Je modifie tout d’abord le fichier /etc/bind/named.conf.options et j'y ajoute la ligne dnssec-enable yes;
Je créer ensuite le répertoire /etc/bind/clement-millet pour y stocker les clefs.
J’exécute ensuite les commande suivantes :
dnssec-keygen -a RSASHA1 -b 2048 -f KSK -n ZONE -r /dev/urandom clement-millet.work //création de la clef asymétrique de signature de clefs de zone mv *.key clement-millet-ksk.key //Je renome les clefs générées mv *.private clement-millet-ksk.private dnssec-keygen -a RSASHA1 -b 1024 -n ZONE -r /dev/urandom clement-millet.work //création de la clef asymétrique de la zone pour signer les enregistrements mv Kclement-millet.work.+005+18675.key clement-millet-zsk.key mv Kclement-millet.work.+005+18675.private clement-millet-zsk.private
Puis, je modifie le fichier db.Clem en y incluant mes deux cléf publiques précédemment générées.
Je signe les enregistrements de la zone en tapant la commande :
dnssec-signzone -o clement-millet.work -k clement-millet-ksk ../db.Clem clement-millet-zsk
Dans mon fichier named.conf.local, je remplace la ligne
file "/etc/bind/db.Clem"; par file "/etc/bind/db.Clem.signed";
Enfin, je communique ma clef publique KSK à gandi.net
c) Tests d'intrusion
c1) Intrusion par changement d'adresse MAC
En changeant le fichier /etc/network/interfaces de façon à me connecter à la borne de maxime, je n'ai plus de connexion internet
Cela est normale vu que dans la config de sa borne, mon adresse mac n'est pas autorisé.
En changent mon adresse mac par celle de Nour par exemple, je peux me connecter.
Changement d’adresse mac :
# ifconfig wlan0 down # ifconfig wlan0 hw ether 00:15:af:e7:19:f3 //adresse mac de Nour # ifconfig wlan0 up
c2) Cassage de clef WEP d'un point d'accès Wifi
En premier lieu, j'ai installé le paquetages utile à la manipulation : aircrack-ng
Après avoir installé tous ce qu'il faut, nous avons remarqué qu'il était impossible de passer nos carte wifi en mode monitor.
Nous utiliserons donc une clé Wifi pour faire cette manipulation, puis je l'identifie (wlan4).
Je passe donc cette clé en mode monitor grâce à la commande airmon-ng start wlan4 après avoir fait un apt-get install firmware-ralink
Ceci me génère le mon0 qui permet de voir passer toute les trames wifi passer, et pas uniquement les trame ethernet.
Afin d'augmenter le trafique du point d'accès, je peux utiliser la commande aireplay-ng
Puis j'écoute toues les trames wifi avec la commande airodump-ng mon0
Lorsque les différents réseaux sont identifiés, je me focalise sur celui qui m'intéresse (cracotte02) grâce à la commande airodump-ng -d BSSID mon0 -- channel 5
avec BSSID de cracotte02 = 04:DA:D2:9C:50:51
afin de tout enregistrer dans des fichier pour ensuite annaliser les capture, je rajoute à la fin -w nom_fichier
Après avoir obtenue au moins 50 000 données capturées, je lance l'algorithme de craquage aircrack-ng nom_fichier*.cap.
KEY FOUND! [AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:BB]
c3) Cassage de mot de passe WPA-PSK par force brute
Ici, le cassage de clés fonctionne différemment. Nous devons tout d'abord établir un dictionnaire regroupant tous les clés possible. (en supposant que la clé est de 8 octets n'ayant que des chiffres)
Pour générer ce dictionnaire, j’exécute le programme suivant :
#include <stdio.h> #include <stdlib.h> #include <math.h> int main() { int i=0; for(i=0;i < pow(10,8);i++) //10⁸-1 { printf("%08d\n",i); } return 0; }
Je l'execute avec une redirection vers le fichier dictionnaire.txt.
Puis, il faut maintenant attendre que quelqu'un se connecte à la borne afin de récupérer le handshake (que je place dans un fichier)
Je tape donc la commande : airodump-ng --channel 7 -d 04:DA:D2:9C:50:51 mon0 -w handshake
Je copie les fichiers générés sur une zabeth afin de cracker plus rapidement.
Je lance ensuite l'algorithme de craquage : aircrack-ng -w dictionnaire.txt handshake*.cap, puis j'attends
KEY FOUND! [ 12399902 ]
d) Réalisation
d6) Sécurisation Wifi par WPA2-EAP
Avant tout, il faut installer le package FreeRaduis sur la VM.
Dans le fichier /etc/freeradius/eap.conf, je change la ligne "default_eap_type = md5" en "default_eap_type = peap".
Dans le fichier /etc/freeradius/client.conf, je remplace les ligne suivantes :
- client 192.168.0.0/24 {
- secret = testing123-1
- shortname = private-network-1
- }
par les lignes :
client 172.20.99.0/24 {
secret = BigSecret
shortname = wifi
}
Nom de domaine reservé : clement-millet.work