TP sysres IMA2a5 2017/2018 G2 : Différence entre versions
(→Configuration du serveur DNS) |
|||
Ligne 239 : | Ligne 239 : | ||
(PS/Conclusion : préférez rester en retrait et suivre les autres groupes de TP pas à pas que de vouloir prendre les devants) | (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 | Installation du package apache2 pour faire office de serveur web | ||
Ligne 296 : | Ligne 296 : | ||
</VirtualHost> | </VirtualHost> | ||
</IfModule> | </IfModule> | ||
+ | |||
+ | |||
+ | === 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: | ||
+ | |||
+ | |||
+ | |||
+ | ajoutez l’option ; dans le fichier named.conf.options ; | ||
+ | il est conseillé de créer un répertoire de nom <nom_de_zone>.dnssec pour y générer les clefs ; | ||
+ | créez la clef asymétrique de signature de clefs de zone (pour accélerer la génération sur un système de test vous pouvez utiliser l’option -r /dev/urandom) ; | ||
+ | dnssec-keygen -a RSASHA1 -b 2048 -f KSK -n ZONE <nom_de_zone> | ||
+ | |||
+ | créez la clef asymétrique de la zone pour signer les enregistrements (pour accélerer la génération sur un système de test vous pouvez utiliser l’option -r /dev/urandom) ; | ||
+ | dnssec-keygen -a RSASHA1 -b 1024 -n ZONE <nom_de_zone> | ||
+ | |||
+ | renommez les deux paires de clefs obtenues en utilisant le nom de la zone comme préfixe puis en suffixant d’abord par la destination de la clef (-ksk pour la KSK ou -zsk pour la ZSK) puis par le type de clef (.key pour la clef publique ou .private pour la clef privée) ; | ||
+ | incluez les clefs publiques dans votre fichier de zone, incrémentez le numéro de version de la zone ; | ||
+ | $include /etc/bind/<nom_de_zone>.dnssec/<nom_de_zone>-ksk.key | ||
+ | $include /etc/bind/<nom_de_zone>.dnssec/<nom_de_zone>-zsk.key | ||
+ | |||
+ | signez les enregistrements de la zone ; | ||
+ | dnssec-signzone -o <nom_de_zone> -k <nom_de_zone>-ksk ../<nom_de_zone> <nom_de_zone>-zsk | ||
+ | |||
+ | modifiez le fichier named.conf.local pour utiliser la zone signée de suffixe .signed ; | ||
+ | il ne reste plus qu’à communiquer la partie publique de la KSK (présente dans le fichier <nom_de_zone>-ksk.key) à votre registrar (par exemple gandi.net, regardez à "Manage DNSSEC" dans la section "DNS servers"). |
Version du 30 novembre 2017 à 13:28
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
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
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
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
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
"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
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>
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:
ajoutez l’option ; dans le fichier named.conf.options ; il est conseillé de créer un répertoire de nom <nom_de_zone>.dnssec pour y générer les clefs ; créez la clef asymétrique de signature de clefs de zone (pour accélerer la génération sur un système de test vous pouvez utiliser l’option -r /dev/urandom) ; dnssec-keygen -a RSASHA1 -b 2048 -f KSK -n ZONE <nom_de_zone>
créez la clef asymétrique de la zone pour signer les enregistrements (pour accélerer la génération sur un système de test vous pouvez utiliser l’option -r /dev/urandom) ; dnssec-keygen -a RSASHA1 -b 1024 -n ZONE <nom_de_zone>
renommez les deux paires de clefs obtenues en utilisant le nom de la zone comme préfixe puis en suffixant d’abord par la destination de la clef (-ksk pour la KSK ou -zsk pour la ZSK) puis par le type de clef (.key pour la clef publique ou .private pour la clef privée) ; incluez les clefs publiques dans votre fichier de zone, incrémentez le numéro de version de la zone ; $include /etc/bind/<nom_de_zone>.dnssec/<nom_de_zone>-ksk.key $include /etc/bind/<nom_de_zone>.dnssec/<nom_de_zone>-zsk.key
signez les enregistrements de la zone ; dnssec-signzone -o <nom_de_zone> -k <nom_de_zone>-ksk ../<nom_de_zone> <nom_de_zone>-zsk
modifiez le fichier named.conf.local pour utiliser la zone signée de suffixe .signed ; il ne reste plus qu’à communiquer la partie publique de la KSK (présente dans le fichier <nom_de_zone>-ksk.key) à votre registrar (par exemple gandi.net, regardez à "Manage DNSSEC" dans la section "DNS servers").