TP sysres IMA2a5 2015/2016 G5

De Wiki de Projets IMA

Introduction

Ce TP comporte deux parties, la première est une tâche particulière pour chaque personne. La seconde est commune, elle comprend notamment (d'après le sujet disponible ici) l'installation d'une machine virtuelle Xen, l'implantation d'un auto-commutateur téléphonique logiciel ainsi que la mise en place d'un réseau Wifi et d'un site sécurisés.

Ma tâche particulière consiste à configurer les liens EtherChannel entre les routeurs et les commutateurs. Ensuite j'ai dû réaliser le câblage ainsi que le bridge pour le serveur Xen.

Étape 1 : Les tâches particulières

La Configuration de l'EtherChannel

L'EtherChannel consiste à regrouper plusieurs liens physique en un unique lien logique, cela permet par exemple d'avoir un lien avec un débit de 5Gb/s à partir de 5 liens 1Gb/s. On peut placer jusqu'à 16 liens physiques dans un lien EtherChannel. Sur ces 16 liens physiques, 8 seront actifs et les 8 autres serviront de redondance en cas de problème avec un des liens actifs.

Le cahier des charges imposait de réaliser deux liens EtherChannel de 5Gb/s. N'ayant réussi à trouver que 9 GBIC (Gigabit Interface Converter) sur les 10 qui étaient nécessaires, un des liens aura un débit de 4Gb/s.

Le travail est symétrique sur les deux couples routeurs/commutateurs, je n'en décrirais donc qu'un seul.

J'ai donc connecté les ports Gigabit 0/3 à 0/7 du routeur aux ports Gigabit 5/1 à 5/5 du commutateur.

Ensuite je me suis connecté sur le routeur via le port série, on entre alors les commandes suivantes :

>enable
//passage en mode configuration
#conf term
//Selection des ports Gigabit 3 à 7
#interface range GigabitEthernet 0/3-7
//choix de l'encapsulation à utiliser
#switchport trunk encapsulation dot1q
//passage des ports en mode trunk
#switchport mode trunk
//choix du protocole utilisé
#channel-protocol lacp
//création du groupe EtherChannel
#channel-group 1 mode active
//activation des ports
#no shut
#exit
#write

sur les commandes à entrer sont à peu près les mêmes, il faut juste remplacer par les bons ports :

>enable
#conf term
#interface range GigabitEthernet 5/1-5
#switchport trunk encapsulation dot1q
#switchport mode trunk
#channel-protocol lacp
#channel-group 1 mode active
#no shut
#exit
#write

On peut ensuite vérifier que le lien est correctement configuré en entrant :

#show etherchannel

Le câblage

Voici le schéma du câblage réalisé premièrement, en attendant de recevoir d'autres fibres assez longue pour relier la baies de la salle E304 à celle de la salle E306.

Reseau.jpg

MAJ : Suite à la réception de nouvelles cartes Gigabit pour les commutateurs les Etherchannel ont désormais un débit de 8Gb. Les points d'accès wifi ont également été connecté sur des ports Gigabit.

Le bridge

Pour cette partie, le travail a été mâché par les IMA5sc. En effet les configurations pour le bridge avaient déjà été entrée dans le fichier /etc/network/interfaces du serveur Xen. J'ai seulement dû remplacer la ligne

auto bridge *****
avec ***** représentant le nom du bridge.

Par :

auto *****

J'ai ensuite ajouté les lignes :

pre-up ifconfig $IFACE up
post-down ifconfig $IFACE down

sous chaque ligne :

iface ***** inet manual
avec ***** représentant le nom de l'interface.

Les ports qui m'étaient attribué étaient les ports eth6 et eth7. Avec le câblage temporaire je n'ai besoin que d'un seul de ces ports j'ai donc relié le port 10 (qui est sur le VLAN 10) du commutateur sur le port eth6 de la machine Xen.

Je peux ensuite vérifier que l'interface eth6 est bien connectée à l'aide de la commande :

mii-tool

Étape 2 : la partie commune

Création et configuration du serveur Xen

Installation

Pour la création de la machine virtuelle il faut se connecter sur la machine cordouan en tant que root. On lance alors la commande :

xen-create-image --hostname griffon --ip 193.48.57.182 --netmask 255.255.255.240 --dir /usr/local/xen

Les noms des machines virtuelles a été choisi en suivant le thème : créatures fantastiques. Sauf un intrus qui s'est glissé dans le lot. Pendant l'installation de la machine virtuelle on peut afficher le fichier de log afin d'avoir un aperçu de l'avancement :

tail -f /var/log/xen-tools/griffon.log

Une fois que l'installation est terminée (et donc que le mot de passe root choisi au hasard s'affiche) on peut aller modifier le fichier de configuration qui se trouve dans le dossier : /etc/xen/griffon.cfg. On va notamment y indiquer la mémoire disponible pour la machine ainsi que la façon dont elle accèdera au réseau (le fameux bridge).

On peut ensuite démarrer notre serveur avec la commande :

xl create /etc/xen/griffon.cfg

Puis y accéder :

xl console griffon

La première chose à faire est de configurer le fichier /etc/network/interfaces afin d'avoir accès à internet mais surtout aux dépots. On pourra ainsi installer les paquets nécessaires. Ensuite on va modifier le fichier /etc/ssh/sshd_config en authorisant la connexion en ssh via le mot de passe. On remplace tty1 par hvc0 dans /etc/inittab,on peut ensuite désinstaller systemd et network-manager.

On en profite également pour installer les paquets : apache2 (serveur web) ,bind9 (serveur dns), mailx (boite mail), postfix (serveur mail), free-radius (serveur d'authentification). On verra dans la suite comment les configurer.

Configuration du DNS

Avant de configurer notre serveur DNS il faut acheter un nom de domaine. Pour cela on se rend sur gandi.net et on suit la procédure pour en acheter un. Pour ma part il s'agit du nom de domaine : polytech-lille.lol.

On veut ensuite que notre serveur serve de DNS. Dans l'interface d'administration de gandi on modifie les glue records. On indique donc notre serveur dns : 193.48.57.182 ainsi que son nom ns.polytech-lille.lol.

On modifie ensuite le fichier /etc/bind/named.conf.local :

named.conf.local :
zone "polytech-lille.lol" {
        type master;
        file "/etc/bind/db.polytech-lille";  

Puis le fichier /etc/bind/db.polytech-lille :

; BIND data file for local loopback interface
;
$TTL    3600
@       IN      SOA     ns admin (
                              3         ; Serial  //à incrémenter après chaque modification
                           3600         ; Refresh
                            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.182
mail    IN      A       193.48.57.182
www     IN      CNAME   ns 
};

Et enfin le fichier /etc/bind/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;
};

Il faut ensuite attendre que la propagation se fasse, ce qui peut prendre une petite journée.

Sécurisation avec DNSSEC

Afin de sécuriser notre serveur DNS nous allons devoir créer deux paires de clé privée et clé publique afin de signer notre racine DNS. Pour cela il suffit de suivre les indications sur cette page.

Configuration du serveur Apache

Pour la configuration du serveur Apache en lui même il n'y a rien de spécial à faire. Une fois le paquet apache2 installé il suffit de placer les fichiers du site web dans le répertoire /var/www.

Pour la sécurisation grâce au protocole HTTPS il faut utiliser SSL.

Configuration du serveur mail

Afin d'obtenir un certificat il nous faut recevoir un mail sur l'adresse admin@polytech-lille.lol Pour cela on modifie le fichier /etc/aliases en y ajoutant la ligne :

admin : root

On utilise ensuite la commande :

newaliases

afin que le fichier de configuration soit "compilé".

On peut ensuite vérifier que cela fonctionne en envoyant un mail à l'adresse admin@polytech-lille.lol

Sécurisation avec SSL

Maintenant que notre mail fonctionne nous pouvant générer une clé privée et une clé publique avec la commande :

openssl req -nodes -newkey rsa:2048 -sha256 -keyout griffon.key -out griffon.csr

Pour s'y retrouver on range ces clés dans le dossier /etc/apache2/ssl que l'on crée au préalable. Grâce à ces clés on peut désormais demander à gandi de nous signer un certificat. Il faut alors suivre les différentes étapes de validation. J'enregistre mon certificat dans le fichier /etc/apache2/ssl/griffon.crt et le certificat secondaire dans /etc/apache2/ssl/secondaire.crt. On modifie alors le fichier /etc/apache2/sites-available en ajoutant ces lignes :

SSLCertificateFile      /etc/apache2/ssl/griffon.cer
SSLCertificateKeyFile /etc/apache2/ssl/griffon.key
SSLCertificateChainFile /etc/apache2/ssl/secondaire.cer

On doit ensuite activer le service ssl et redémarrer apache :

a2ensite default-ssl
a2enmod ssl
service apache2 restart

On peut désormais accéder de manière sécurisée à notre site via l'adresse https://polytech-lille.lol.

On va également créer une redirection afin que http://.... renvoie vers https://...... comme cela l'accès au site sera sécurisé par défaut.

Pour cela dans /etc/apache2/sites-available/000-default.conf on supprime les lignes :

DocumentRoot /var/www/html

et on ajoute :

Redirect permanent / "https://www.polytech-lille.lol"

Sécurisation du point d'accès Wifi avec WPA-EAP

Pour cette partie il faut commencer par configurer free-radius.

On modifie le fichier /etc/freeradius/clients.conf : On ajoute ces lignes

client 172.20.99.0/24 {
        secret          = secret-griffon
        shortname       = wifi
}

puis le fichier /etc/freeradius/eap.conf : On remplace :

default_eap_type = md5

par

default_eap_type = peap 

Enfin on modifie /etc/freeradius/users : en ajoutant cette ligne

nico    Cleartext-Password := "motDePasse" 

afin d'ajouter un utilisateur dont le login est "nico" et le mot de passe : "motDePasse".

On peut alors configurer le point d'accès wifi afin qu'il interroge le serveur d'authentification.

on rentre ces commandes sur la borne cisco :

>en
#conf t
#aaa new-model
#aaa group server radius griffon_EAP
#server 193.48.57.182 auth-port 1812 acct-port 1813
#exit
#
#radius-server host griffon_EAP auth-port 1812 acct-port 1813 key secret-griffon
#
#aaa authentication login griffon group griffon_EAP
#
#dot11 ssid Griffon
#vlan 7
#authentication open eap griffon 
#authentication network-eap griffon 
#authentication key-management wpa
#mbssid guest-mode
#exit
#
#interface Dot11Radio0
#encryption vlan 7 mode ciphers aes-ccm tkip
#ssid Griffon
#mbssid
#exit
#
#interface Dot11Radio0.7
#encapsulation dot1Q 7
#bridge-group 7
#exit
#interface GigabitEthernet0.7
#encapsulation dot1Q 7
#bridge-group 7
#exit
#exit
#write

On peut ensuite vérifier que cela fonctionne en se connectant sur la borne avec un eePC ou un téléphone.

Contournement du filtrage par adresse MAC

Dans cette partie nous allons essayer de contourner le filtrage par adresse MAC mis en place sur une borne Wifi. Pour cela, je vais tenter de me connecter sur borne Wifi de Marouane dont le SSID est T2. Le mot de passe est 000000000. Après la première tentative, la connexion est impossible car mon adresse MAC n'est pas dans la liste blanche de la borne. Grâce à un peu social engineering (recherche sur la page wiki de Marouane) je trouve une adresse MAC qui est autorisée à se connecter (celle d'Eric en l'occurence). J'utilise donc la commande :

    ifconfig wlan0 hw ether 00:15:af:e7:2d:fb

Mon adresse MAC est maintenant modifiée et donc autorisée sur la borne. Je peux donc accéder à internet.

Cassage de clé WEP

Nous allons désormais essayer de casser la clé WEP d'une borne du banc d'essai (ici cracotte07).

Pour cela nous allons utiliser la suite aircrack.

Tout d'abord on démarre notre carte Wifi en mode monitor.

    airmon-ng start wlan2 /* wlan2 car c'est une clé Wifi rajoutée en USB */

On repère ensuite le BSSID et le canal grâce à airodump :

   airodump-ng mon0

Pour cracotte07 il s'agit de 04:DA:D2:9C:50:56 et du canal 5.

On récupère ensuite des IVs :

   airodump-ng --write capture --channel 5 --BSSID 04:DA:D2:9C:50:56 mon0

en parallèle on lance aircrack :

   aircrack-ng -s *.cap

On a plus qu'à attendre d'avoir récupéré assez d'IVs. Après 35760 IVs :

   KEY FOUND! [ AA:AA:AA:AA:AA:AA:AA:AA:AA:AB:BB:BB:BB ]

Cassage de clé WPA

Nous passons désormais au cassage de la clé WPA. Pour cela nous devons récupérer un handshake lors de la connexion d'un autre utilisateur sur la borne. On lance donc :

   airodump-ng --write capture_WPA --channel 7 --BSSID 04:DA:D2:9C:50:56 mon0

et on attend d'avoir capturé un handshake (ou on le provoque avec aireplay). Pendant ce temps on peut créer notre dictionnaire à l'aide d'une programme en C :

   #include <stdio.h>

   int main(void){
	int i=0;
	while(i<100000000){
		printf("%08d\n",i);
		i++;
	}
	return 0;
}

Une fois le handshake recupéré et le dictionnaire genéré on peut lancer le cassage de la clé avec la commande :

 aircrack-ng -w nom_du_fichier_dictionnaire nom_du_fichier_capture_handshake

Après quelques (dizaines de) minutes de patience on obtient la clé WPA de cracotte07 : 12399907 Pour gagner du temps on peut d'ailleurs essayer d'intuiter les autres clés ainsi la clé de cracotte0X devrait être 1239990X.