Cahier 2017 groupe n°1

De Wiki d'activités IMA

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 :

Architecture projet IMA5 17-18 router.png

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

Cisco4331.png

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

Catalyst3560.png

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.

Plug catalyst 3560.png

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 :

Gluerecords.png

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