TP sysres IMA2a5 2017/2018 G2

De Wiki d'activités IMA

Introduction

Dans le cadre de la 5ème année en section IMA à Polytech'Lille nous avons pu réaliser sur une machine virtuelle des serveurs web et DNS. De plus une tâche personnel nous a été confiée.
Ce wiki relate des tenants et aboutissants des mésaventures encourues.

Objectifs communs

  • Installer une machine virtuelle
  • Mettre en place un serveur DNS sécurisé
  • Mettre en place un serveur web sécurisé
  • Réaliser des tests d'intrusion WIFI

Objectifs personnels

  • Rétablir les connexions ADSL et SDSL du local technique en B300.
  • Déplacer les modems sur le routeur destiné aux TP et reconfigurer ce dernier
  • Aménager un espace pour les différents modems




Analyse des plans de câblage avant modification

Liste des différents appareils et connexions

1. SpeedTouch 546-V6

  • Port 1 > Câble Ethernet Rouge > CISCO Catalyst 3560-E Series "3560E-2" | Port 7
  • Port 2 > Câble Ethernet Blanc > SpeedTouch 609-V5 | Port 1
  • Port Adsl > Câble Adsl Noir > "Rocade" Baie de brassage | A-03


2. SpeedTouch 609-V5

  • Port 1 > Câble Ethernet Blanc > SpeedTouch 546-V6 | Port 2
  • Port Adsl > Câble Adsl Blanc > "Rocade" Baie de brassage | A-04


3. LA-210

  • Port 1/2 > Câble Ethernet Blanc > "Rocade" Baie de brassage | A-05
  • Port 3/4 > Câble Ethernet Blanc > "Rocade" Baie de brassage | A-06
  • Port 10/100 > Câble Ethernet Rouge > CISCO-1700 | Port 10/100


4. CISCO-1700

  • Port 2 > Câble Ethernet Noir > CISCO Catalyst 3560-E Series "3560E-2" | Port 5
  • Port 3 > Câble Ethernet Blanc > "Rocade" Baie de brassage | A-01
  • Port 10/100 > Câble Ethernet Blanc > LA-210 | Port 10/100


5. "Rocade" Baie de brassage

  • A-01 > PC
  • A-02 > ADSL
  • A-03 > ADSL
  • A-04 > SDSL
  • A-05 > SDSL - 0036WvW5
  • A-06 > SDSL - S036WvW5

Topographie des différents appareils et connexions

    Topographie.png




































TP commun

Installation de la machine virtuelle

Nous avons installé notre machine sur le serveur Cordouan de l'école, c'est pourquoi dans un premier temps nous nous connectâmes sur ce dernier en ssh:

 ssh cordouan.insecserv.deule.net

Puis avec la commande suivante...

 xen-create-image

... et les paramètres ci-dessous, nous avons pu crée notre VM:

 --hostname karmeliett -- ip 193.48.57.167 -- dir /etc/xen

Pour lancer la VM il suffit d'entrer la commande suivante:

xl create /etc/karmeliett.cfg

(comme vous avez pu le remarquer, 'karmeliet' est écrit avec une faute d'orthographe, pour une question de cohérence la faute ne sera pas corrigée sur ce wiki)

Pour s'y connecter, le mot clé 'console' est utilisé:

xl console karmeliett

Par la suite, le ssh étant configuré sur la VM nous avons utilisé:

ssh root@193.48.57.167

Configuration du serveur DNS

Grâce à l'achat d'un nom de domaine sur Gandi, nous avons pu configurer notre propre serveur DNS sur notre VM. Dans un premier temps il a fallu installer les packages Bind9

$ apt-get install bind9

On commence par renseigner notre nom de réseau IP, l'interface du routeur, notre machine et le nom de l'adresse de diffusion de notre réseau IP dans le fichier de zone correspondant à notre nom de domaine: db.karmeliet.space . (PS: NE PAS OUBLIER LES '.' A LA FIN DES ADRESSES ! En effet c'est une erreur qui nous a coûté chère en heures...)

root@karmeliett:/etc/bind# cat db.karmeliet.space
$TTL 604800
@ IN SOA ns.karmeliet.space. admin.karmeliet.space. (
	6	; Serial
	72000	; Refresh
	3600	; Retry
	1209600	; Expire
	259200 ); Negative Cache TTL
 IN NS	ns.karmeliet.space.
 IN NS	ns6.gandi.net.
 IN MX 100 ns.karmeliet.space.
ns	IN A 193.48.57.167
	IN MX	100 ns.karmeliet.space.
	IN AAAA	2001:660:4401:60b8:216:3eff:fe96:a908
ns6	IN A 217.70.177.40
www	IN CNAME ns

A notre nom de domaine, on associe le fichier de zone précédemment crée:

root@karmeliett:/etc/bind# cat named.conf.local 
zone "karmeliet.space" {
	type master;
	file "/etc/bind/db.karmeliet.space";
};

On autorise également le DNS secondaire ns6.gandi.net à transferer:

root@karmeliett:/etc/bind# cat named.conf.options

...       
    allow-transfer {217.70.177.40;};
};

On modifie le fichier resolv.conf afin d'indiquer le serveur de nom utilisé par notre machine.

root@karmeliett:/etc/bind# cat /etc/resolv.conf
search karmeliet.space
nameserver 127.0.0.1

Après un restart du service bind, on vérifie le bon fonctionnement du service DNS configuré

root@karmeliett:/etc/bind# host ns.karmeliet.space
ns.karmeliet.space has address 193.48.57.167
ns.karmeliet.space has IPv6 address 2001:660:4401:60b8:216:3eff:fe96:a908
ns.karmeliet.space mail is handled by 100 ns.karmeliet.space.

La dernière étape consiste à renseigner (sur Gandi) les noms des serveurs DNS associés à notre nom de domaine: ns.karmeliet.space et ns6.gandi.net

C'est sur cette dernière étape qu'a était notre plus grosse erreur. C'est également à partir de ce point que nous avons était en retard sur le reste du groupe. En effet n'y connaissant peu dans ce domaine, nous avons décidé de renseigner sur Gandi le nom du serveur DNS maître de l'école: 'douaisis.escaut.net' . Or une fois enregistré par Gandi, nous avons essayé une dizaine de fois de remettre ns.karmeliet.space et ns6.gandi.net sans succès. 48h après une demande, Gandi rejetait à chaque fois notre requête. Finalement in extremis pendant la dernière séance, l'idée de rétablir les serveurs DNS Gandi par défaut nous est venue. 'a.dns.gandi.net', 'b.dns.gandi.net' et 'c.dns.gandi.net' furent trouvés en 10 minutes à peine. C'est seulement à partir de ce point que Gandi à pu retrouver 'ns.karmeliet.space' et 'ns6.gandi.net', en 10 minutes également. (PS/Conclusion : préférez rester en retrait et suivre les autres groupes de TP pas à pas que de vouloir prendre les devants)

Installation d'un site web sécurisé

Installation du package apache2 pour faire office de serveur web

root@karmeliett:/# apt-get install apache2

Ajout du nom du serveur web et de son alias:

root@karmeliett:/etc/apache2/sites-available# cat default-ssl.conf 
...
ServerName www.karmeliet.space
ServerAlias karmeliet.space
...

Certification SSL :

Pour la sécurisation de notre site web, nous avons utilisé 'openssl' pour créer une clé asymétrique (myKEY.key) et une demande de certification (myCRS.crs) afin de recevoir un certificat signé (myCRT.crt) par un CA (dans notre cas Gandi) et une chaîne de certification (myPEM.pem):

root@karmeliett:/etc/apache2# ls
apache2.conf	conf-enabled  magic	      mods-enabled  myCSR.csr  myPEM.pem   sites-available
conf-available	envvars       mods-available  myCRT.crt     myKEY.key  ports.conf  sites-enabled


Ensuite il faut renseigner tous ces fichiers dans la configuration pour gérer le HTTPS sur le port 443:

root@karmeliett:/etc/apache2# cat sites-available/default-ssl.conf 
<IfModule mod_ssl.c>
	<VirtualHost _default_:443>
		ServerName www.karmeliet.space
        	ServerAlias karmeliet.space

		...

		#   SSL Engine Switch:
		#   Enable/Disable SSL for this virtual host.
		SSLEngine on

		#   A self-signed (snakeoil) certificate can be created by installing
		#   the ssl-cert package. See
		#   /usr/share/doc/apache2/README.Debian.gz for more info.
		#   If both key and certificate are stored in the same file, only the
		#   SSLCertificateFile directive is needed.
		SSLCertificateFile	myCRT.crt
		SSLCertificateKeyFile 	myKEY.key

		#   Server Certificate Chain:
		#   Point SSLCertificateChainFile at a file containing the
		#   concatenation of PEM encoded CA certificates which form the
		#   certificate chain for the server certificate. Alternatively
		#   the referenced file can be the same as SSLCertificateFile
		#   when the CA certificates are directly appended to the server
		#   certificate for convinience.
		SSLCertificateChainFile myPEM.pem

		...

	</VirtualHost>
</IfModule>


Finalement notre site web sécurisé fonctionne bien:
https://www.karmeliet.space/

Installation du DNSSEC

Nous avons sécurisé notre serveur DNS avec la création de deux clés asymétriques et en signant les enregistrements de la zone grâce à celle-ci.

Dans un premier temps il a fallut ajouter l'option 'dnssec-enable yes' dans le fichier named.conf.options:

root@karmeliett:/etc/bind# cat named.conf.options

options {
	directory "/etc/bind";
       ...
	dnssec-validation auto;
	dnssec-enable yes;
	auth-nxdomain no;    # conform to RFC1035
	listen-on-v6 { any; };
};

Puis nous avons crée le dossier karmeliet.space.dnssec pour y stocker les clés. La première paire de clés crée est la clé asymétrique de signature de clefs de zone:

dnssec-keygen -r /dev/urandom -a RSASHA1 -b 2048 -f KSK -n ZONE karmeliet.space

(utilisez '-r /dev/urandom' uniquement pour un système de test) Les clés crées sont renommées en 'karmeliet.space-ksk.key' et 'karmeliet.space-ksk.private'.

la deuxième paire de clés crée est la clé asymétrique de la zone pour signer les enregistrements

dnssec-keygen -r /dev/urandom -a RSASHA1 -b 1024 -n ZONE karmeliet.space

(de même utilisez '-r /dev/urandom' uniquement pour un système de test) Les clés crées sont renommées en 'karmeliet.space-zsk.key' et 'karmeliet.space-zsk.private'.

Ensuite nous avons inclus les clés publics dans notre fichier de zone 'db.karmeliet.space':

root@karmeliett:/etc/bind# cat db.karmeliet.space
;
; BIND data file for local loopback interface
;
$TTL 604800

$include /etc/bind/karmeliet.space.dnssec/karmeliet.space-ksk.key
$include /etc/bind/karmeliet.space.dnssec/karmeliet.space-zsk.key
...

(PS: ne pas oublier d'incrémenter le numéro de série du fichier de zone et de redemarrer bind9 'service bind9 restart')

Et enfin la commande suivante lancée depuis le dossier 'karmeliet.space.dnssec' nous a permis de signer les enregistrements de notre zone:

dnssec-signzone -o karmeliet.space -k karmeliet.space-ksk ../db.karmeliet.space karmeliet.space-zsk
 

L'avant dernière étape consistait remplacer l'ancienne zone par la nouvelle signée en remplaçant 'db.karmeliet.space' par 'db.karmeliet.space.signed' dans le fichier 'named.conf.local':

root@karmeliett:/etc/bind# cat named.conf.local 
zone "karmeliet.space" {
	type master;
	file "/etc/bind/db.karmeliet.space.signed";
};
...

La dernière étape était de communiquer la partie publique de la KSK soit 'karmeliet.space-ksk.key' à Gandi. (Voir l'onglet "Manage DNSSEC" sur Gandi)

Pour vérifier la sécurisation DNSSEC on peut utiliser le site 'dnsviz.net' et entrer notre nom de domaine 'www.karmeliet.space'
http://dnsviz.net/d/www.karmeliet.space/dnssec/

    Dnsviz karmeliet.png