Cahier 2017 groupe n°1
Sommaire
Cahier des charges
Objectif du projet
L'objectif du projet consiste à réaliser un réseau permettant de manipuler les protocoles de redondance réseau ainsi que le protocole réseau IPv6.
Architecture générale du projet
Le réseau doit être redondant, pour réaliser cela nous avons utilisé deux routeurs, deux commutateurs et deux points d'accès WiFi. Les points d'accès sont connectés chacun à un commutateur, les routeurs sont connectés sur les deux commutateurs, entre eux, l'un des deux sur le serveur cordouan et l'autre au réseau d'interconnexion avec l'école (Local technique SR52). Voici, le schéma général de l'architecture :
Machine Virtuelle
Dans un premier temps nous avons créé une machine virtuelle Xen Linux sur le serveur cordouan. Le nom de notre machine virtuelle est "IMA5-GOYAVE" et son adresse IP est 193.48.57.182/28 qui est sur le réseau 193.48.57.176/28. De plus, nous avons installer des paquetages nécessaires à la suite du projet que sont SSH, le serveur web apache2 et le serveur DNS bind9.
Qu'est ce qu'un routeur ?
Un routeur est un élément intermédiaire dans un réseau informatique assurant le routage des paquets. Son rôle est de faire transiter des paquets d'une interface réseau vers une autre selon un ensemble de règles.
(Photo schéma routeur)
Le Routeur 4331
Le routeur 4331 est un routeur créé par Cisco, il possède 3 interfaces de connexions : - interface GigabitEthernet0/0/0, qui peut être en connexion rj45 ou optique. Dans notre configuration il sera utilisé en connexion ethernet pour le relier avec le premier commutateur (en E304); - interface GigabitEthernet0/0/1, qui peut être uniquement connecté en ethernet sera quant à lui relier au réseau de l'école, par l'intermédiaire du local technique SR52; - interface GigabitEthernet0/0/2, qui peut être uniquement connecté en fibre optique. Il le sera avec le second routeur (le 3560, en E306).
L'adresse de ce routeur sera 193.48.57.185/28.
Le Routeur 3560
Le routeur 3560 est également un routeur créé par Cisco, il possède quant à lui de nombreux ports, reprennant ainsi le principe d'un commutateur. De plus, il possède un module optionnel de connexion pour rajouter différents types de connexion, dans notre cas, deux connexions en fibre optique.
Fichier:Plug-catalyst-3560.jpg
Pour notre part nous n'utiliserons seulement 4 interfaces, dont le module complémentaire : - interface TenGigabitEthernet0/1, qui sera relié par l'intermédiaire de la fibre optique avec le premier routeur (le 4331, en E304); - interface TenGigabitEthernet0/2, lui aussi en fibre optique permettra la liaison avec le serveur cordouan; - interface GigabitEthernet0/1, en liaison rj45 avec le seconde commutateur (en E306); - interface GigabitEthernet0/3, en liaison rj45 avec le premier commutateur (en E304).
L'adresse de ce routeur sera 193.48.57.177/28.
Configuration du routeur 4331
Les deux routeurs se configurent par l'intermédiaire de l'utilitaire minicom. Toute configuration d'interface du routeur nécessite deux lignes de code :
Router>enable Router#configure terminal (conf t)
Interface routeur - commutateur
La première étape de configuration du routeur 4331 fut la mise en place de l'interface GigabitEthernet0/0/0, pour cela nous l'avons configuré sans adresse IP et en rj45, puisque celle-ci sera définie par chacun de ses services :
Router(config)#interface GigabitEthernet0/0/0 Router(config-if)#no ip address Router(config-if)#media-type rj45 Router(config-if)#negotiation auto
Ensuite, nous avons mis en place les services de cette première interface en spécifiant a chaque fois le type d'encapsulation (dot1q), la "modification" des en-têtes 802.1Q, l'utilisation du spanning-tree et le numéro du bridge.
Router(config-if)#service instance 1 ethernet Router(config-if-srv)#encapsulation dot1q 1 Router(config-if-srv)#rewrite ingress tag pop 1 symmetric Router(config-if-srv)#l2protocol peer stp Router(config-if-srv)#bridge-domain 1 Router(config-if-srv)#exit
La "modification" des en-têtes 802.1Q, définit par la ligne "rewrite ingress tag pop 1 symmetric" est nécessaire pour la bonne redirection des paquets entre les différents VLAN. En effet, contrairement à un "switchport access vlan ..." le routeur ne va pas supprimer le tag802.1Q lors de la correspondance avec la "service instance". Il est donc obligatoire de supprimer celle-ci quand les trames arrivent et de les ré-appliquer quand elles repartent.
Interface routeur - SR52
La seconde interface permet de connecter le routeur au local technique SR52 et donc à l'extérieur de l'école :
Router(config)#interface GigabitEthernet0/0/1 Router(config-if)#ip address 192.168.222.2 255.255.255.248 Router(config-if)#negotiation auto Router(config-if)#end
Interface inter-routeurs
La dernière interface à configurer du premier routeur qui permettra la communication entre les deux routeurs du projet :
Router(config)#interface GigabitEthernet0/0/2 Router(config-if)#no ip address Router(config-if)#negotiation auto
Là aussi il faut spécifier les services, de façon identique à la première interface.
Une fois les premières configurations terminées, on peut vérifier le contenu avec la commande "show run" et enregistrer les modifications effectuées par l'intermédiaire de la commande "write".
Bridge-Domain
Enfin, on configure les bridges déclarés dans la première et troisième interfaces, en leur associant une adresse IP ainsi que leur masque :
Router(config)#interface BDI 1 Router(config-if)#ip address 10.10.0.2 255.255.255.0 Router(config-if)#exit
Voici, les adresses associées à chaque bridge :
BDI 1 | 10.10.0.2 | ??? |
---|---|---|
BDI 2 | 10.2.0.1 | 2001:660:4401:60b2::/64 |
BDI 3 | 10.3.0.1 | 2001:660:4401:60b3::/64 |
BDI 4 | 10.4.0.1 | 2001:660:4401:60b4::/64 |
BDI 5 | 10.5.0.1 | 2001:660:4401:60b5::/64 |
BDI 6 | 10.6.0.1 | 2001:660:4401:60b6::/64 |
BDI 7 | 10.7.0.1 | 2001:660:4401:60b7::/64 |
BDI 8 | 10.8.0.1 | ??? |
BDI 9 | 193.48.57.185 | |
BDI 10 | 10.1.0.1 | 2001:660:4401:60b1::/64 |
Configuration OPSF
L'OSPF (Open Shortest Path First) est un protocole de routage interne IP. Le protocole OSPF a pour principal avantage de prendre en compte le type de connexion et donc la vitesse de celui-ci. En effet, l'OSPF attribue un coût à chaque liaison, et choisi le coût le plus faible (car plus intéressant). Les coûts sont calculés en fonction de la bande passante du lien, et on a par exemple :
Type de réseau | Coût par défaut |
---|---|
FDDI, FastEthernet (10 Gbit/s,1 Gbit/s, 100 Mbits/s) | 1 |
Ethernet (10 Mbps) | 10 |
E1 (2,048 Mbps) | 48 |
T1 (1,544 Mbps) | 65 |
64 Kbps | 1562 |
56 Kbps | 1758 |
19.2 Kbps | 5208 |
L'OSPF est mis en place de cette façon sur le routeur :
Router(config)#router ospf 1 Router(config-router)#router-id 10.10.0.2 Router(config-router)#summary-address 193.48.57.176 255.255.255.240 Router(config-router)#redistribute connected subnets Router(config-router)#network 192.168.222.0 0.0.0.7 area 70 Router(config-router)#end
Configuration de l'IPv6
Pour chaque Bridge Domain il faut spécifier son adresse IPv6.
Router(config)#int BDI6 Router(config-if)#ipv6 address 2001:660:4401:60b4::/64 eui-64 Router(config-if)#ipv6 nd prefix 2001:660:4401:60b4::/64 1000 900 Router(config-if)#ipv6 nd router-preference high Router(config-if)#ipv6 enable Router(config-if)#exit Router(config)#ipv6 unicast-routing
Configuration du RIP pour l'ipv6
Router(config)#ipv6 router rip tpima5sc Router(config-if)#redistribute connected metric 1 Router(config-if)#redistribute rip 1 metric 1 Router(config-if)#redistribute static metric 1
Router(config)#ipv6 rip tpima5sc enable //Refused
Configuration du routeur 3560
Configuration des interfaces
La configuration des interfaces se fait plus simplement que sur le routeur 4331. En effet, il suffit de spécifier le type d'encapsulation ou son VLAN et de définir son mode (trunk ou access). Dans notre cas, le type d'encapsulation est le dot1q pour le mode trunk. Ce mode trunk est utilisé uniquement pour la première interface car celle-ci est connectée au commutateur possédant les VLANs des machines virtuelles. Pour les trois autres interfaces, elles sont configurées en mode access. La configuration est donc la suivante :
Switch(config)#interface GigabitEthernet0/1 Switch(config-if)#switchport trunk encapsulation dot1q Switch(config-if)#switchport mode trunk Switch(config-if)#exit Switch(config)#interface GigabitEthernet0/3 Switch(config-if)#switchport access vlan 3 Switch(config-if)#switchport mode access Switch(config-if)#exit Switch(config)#interface TenGigabitEthernet0/1 Switch(config-if)#switchport access vlan 130 Switch(config-if)#switchport mode access Switch(config-if)#exit Switch(config)#interface TenGigabitEthernet0/2 Switch(config-if)#switchport access vlan 9 Switch(config-if)#switchport mode access Switch(config-if)#end
Configuration des VLAN
Il faut ensuite configurer les VLAN du routeur avec leur adresse spécifique ainsi que leur masque :
Switch(config)#interface Vlan1 Switch(config-if)#ip address 10.10.0.1 255.255.255.0 Switch(config-if)#exit Switch(config)#interface Vlan3 Switch(config-if)#ip address 10.2.0.2 255.255.0.0 Switch(config-if)#exit Switch(config)#interface Vlan9 Switch(config-if)#ip address 193.48.57.177 255.255.255.240 Switch(config-if)#exit Switch(config)#interface Vlan130 Switch(config-if)#ip address 192.168.222.1 255.255.255.248 Switch(config-if)#exit
Configuration de l'OSPF
De la même manière que pour le routeur 4331, on configure le routeur en OSPF, en faisant attention à spécifier la bonne adresse du routeur :
Switch(config)#router ospf 1 Switch(config-router)#router-id 10.10.0.1 Switch(config-router)#summary-address 193.48.57.176 255.255.255.240 Switch(config-router)#redistribute connected subnets Switch(config-router)#network 192.168.222.0 0.0.0.7 area 70 Switch(config-router)#end
Configuration des adresses IPv6
//TODO
Switch(config)#ipv6 enable Switch(config-if)#ipv6 address 2001:660:4401:60XX::/64 eui-64 Switch(config-if)#ipv6 nd prefix 2001:660:4401:60XX::/64 1000 900 Switch(config-if)#ipv6 nd router-preference high
Mise en place de l'interconnexion IPv6
Switch(config)#ipv6 router rip tpima5sc Switch(config-if)#redistribute connected metric 1 Switch(config-if)#redistribute static metric 1 Switch(config-if)#redistribute rip 1 metric 1
Configuration du serveur SSH sur la machine virtuelle
SSH est le protocole qui va nous permette d'obtenir un terminal distant via une connexion sécurisée. On commence donc par installer un serveur SSH sur notre machine :
apt install ssh
On édite ensuite le fichier de configuration suivant /etc/ssh/sshd_config, et on modifie la ligne :
PermitRootLogin Prohibited
par :
PermitRootLogin yes
Ce qui nous permettra de nous connecter avec l'utilisateur root.
On s'assure que le ficher de configuration est bien rechargé en relançant le service ssh :
service ssh restart
Configuration DNS
Nous allons configurer serveur Apache2 accessible via un nom de domaine obtenu sur Gandi.net : goyave.space.
Nous installons ensuite un serveur DNS via le paquet bind9 :
apt install bind9
On édite ensuite le fichier /etc/default/bind9
On modifie ou on ajoute la ligne suivante si elle n'existe pas :
OPTIONS="-4 -u bind"
On crée le fichier de zone /etc/bind/dns.goyave.space et on y ajoute la configuration suivante :
$TTL 604800 @ IN SOA dns.goyave.space. root.goyave.space ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; IN NS dns.goyave.space. dns IN A 193.48.57.182 www IN A 193.48.57.182
On configure la zone dans le fichier /etc/bind/named.conf.local :
zone "goyave.space" { type master; file "/etc/bind/dns.goyave.space"; };
On ajoute les options suivantes dans le fichier /etc/bind/named.conf.options
options { directory "var/cache/bind" dnssec-validation auto; auth-nxdomain no; allow-transfer {"allowed_to_transfer";} listen-on-v6 {any;} } acl "allowed_to_transfer" { 217.70.177.40/32; }
On peut vérifier q'il n'y pas d'erreurs syntaxiques dans les fichiers de configuration en utilisant l’exécutable named-checkconf :
named-checkconf /etc/bind/named.conf
On relance ensuite le bind9
service restart bind9
Finalement on associe notre serveur DNS à notre adresse IP dans les glue records de gandi :
Sécurisation du site avec certificat
On sécurise notre serveur Apache en activant le protocole HTTPS.
On commence par générer la requête de certificat et la clé privée avec la commande suivante :
openssl req -nodes -newkey rsa:2048 -sha1 -keyout goyave.space.key -out goyave.space.csr
On répond ensuite au questionnaire en spécifiant notre nom de domaine.
L'étape suivant consiste à faire valider notre certificat par une autorité de certification. Dans notre cas Gandi.
Mais il semblerait que 3 semaines après notre certificat n'a toujours pas été validé. La suite de paragraphe n'a donc pas pu être testée et reste donc théorique mais certainement valide.
On obtient donc de gandi notre clé publique et un certificat, et on les place dans le dossier /etc/ssl/certs/
La clé privé doit être stockée dans le dossier /etc/ssl/private/
On exécute la commande suivante pour que nos modifications soient prisent en compte :
c_rehash /etc/ssl/certs
On crée ensuite le fichier 000-goyave.space-ssl.conf dans /etc/apache2/sites-available/ et on y écrit la configuration suivante :
#NameVirtualHost *:443 <VirtualHost 193.48.57.182:443> ServerName www.goayve.space ServerAlias goyave.space DocumentRoot /var/www/www.goyave.space/ CustomLog /var/log/apache2/secure_acces.log combined SSLEngine on SSLCertificateFile /etc/ssl/certs/goyave.space.crt SSLCertificateKeyFile /etc/ssl/private/goyave.space.key SSLCertificateChainFile /etc/ssl/certs/GandiStandardSSLCA.pem SSLVerifyClient None </VirtualHost> <Directory /var/www/www.goyave.space> Require all granted </Directory> ServerName "goyave.space"
On configure le port d'écoute du serveur Apache en activant le port HTTPS par défaut (443) :
Listen 80 443 <IfModule ssl_module> Listen 443 </IfModule>
Finalement on active le module SSL d'Apache :
a2enmod ssl a2ensite 000-goyave.space-ssl.conf service apache2 reload
Un cadenas vert devrait maintenant apparaître maintenant à coté de l'url du site dans le navigateur
Sécurisation du DNS via un DNSSEC
Afin d'activer le protocole DNSSEC sur notre serveur DNS nous modifions la ligne suivante dans le fichier /etc/bind/named.conf.options :
dnssec-enable yes;
On crée ensuite un dossier ou nous allons stocker nos clés dans /etc/bind :
mkdir goyave.space.dnssec
On génère ensuite les clés en utilisant les deux commandes :
dnssec-keygen -a RSASHA1 -b 2048 -f KSK -r /dev/urandom -n ZONE goyave.space dnssec-keygen -a RSASHA1 -b 1024 -r /dev/urandom -n ZONE goyave.space
On modifie la configuration de notre fichier de zone pour qu'il prenne en compte les clés en y ajoutant les lignes suivantes :
$include /etc/bind/goyave.space.dnssec/Kgoyave.space.+005+09436.key $include /etc/bind/goyave.space.dnssec/Kgoyave.space.+005+37530.key
On signe la zone avec la commande :
dnssec-signzone -o goyave.space -k Kgoyave.space.+005+09436 ../dns.goyave.space Kgoyave.space.+005+37530
Voici le résultat de la commande dig qui nous montre que la DNSSEC est activé :
dig DNSKEY goyave.space @localhost
; <<>> DiG 9.9.5-9+deb8u13-Debian <<>> DNSKEY goyave.space @localhost ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7918 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;goyave.space. IN DNSKEY
;; AUTHORITY SECTION: goyave.space. 604800 IN SOA dns.goyave.space. root.goyave.space. 2 604800 86400 2419200 604800
;; Query time: 2 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Tue Dec 05 15:10:08 CET 2017 ;; MSG SIZE rcvd: 86