TP sysres IMA2a5 2021/2022 G3 : Différence entre versions
(→Réalisations) |
|||
(26 révisions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
− | [[''' | + | |
− | + | == Introduction == | |
− | + | ||
− | + | Ce projet consiste à mettre en place une architecture réseau qui me permettra de manipuler les protocoles de redondance réseau ainsi que le protocole réseau IPv6. Il faudra installer une machine virtuelle et y configurer des services. Je mettrai en place un réseau WIFI sécurisé et un serveur DNS que je configurerais comme serveur principal pour accéder à un nom de domaine que j'aurais réservé auparavant. | |
− | + | ||
− | + | == Architecture réseau == | |
− | + | ||
− | + | [[Fichier:ar_bel.jpeg]] | |
+ | |||
+ | == Installation dans la machine virtuelle Xen == | ||
+ | L'idée est de se connecter sur la machine capbreton et d'y créer une machine virtuelle sur laquelle, je ferais toutes les manipulations. | ||
+ | |||
+ | * Connexion sur capbreton en ssh depuis un zabeth : | ||
+ | |||
+ | <code>ssh capbreton.plil.info</code> | ||
+ | |||
+ | * Création d'une image xen: | ||
+ | |||
+ | <code>xen-create-image --hostname=HumanKind --ip=193.48.57.163 --gateway=193.48.57.174 --netmask=255.255.255.0 --dir=/usr/local/xen --password=glopglopglop --dist=buster</code> | ||
+ | |||
+ | * On peut vérifier l'avancement de l'installation avec cette commande : | ||
+ | |||
+ | tail -f /var/log/xen-tools/HumanKind.cfg | ||
+ | |||
+ | * Création de la partition pour la machine: | ||
+ | |||
+ | <code>lvcreate -L1G -n HumanKind virtual</code> | ||
+ | |||
+ | * Création des répertoires var et home: | ||
+ | |||
+ | lvcreate -L10G -n Humankind-home virtual | ||
+ | lvcreate -L10G -n Humankind-var virtual | ||
+ | * Modification du fichier de configuration de la machine virtuelle /etc/xen/Humankind.cfg : | ||
+ | |||
+ | disk= ['file:/usr/local/xen/domains/Humankind/disk.img,xvda2,w', | ||
+ | 'file:/usr/local/xen/domains/Humankind/swap.img,xvda1,w', | ||
+ | 'phy:/dev/virtual/Humankind-home, xvdb1,w', | ||
+ | 'phy:/dev/virtual/Humankind-var,xvdb2,w',] | ||
+ | |||
+ | S'assurer que dans networking, il y a bridge=IMA2A5 | ||
+ | |||
+ | * Démarrage de la machine virtuelle: | ||
+ | xen create /etc/xen/Humankind.cfg | ||
+ | xen console HumanKind | ||
+ | |||
+ | == Services Internet == | ||
+ | |||
+ | ;Configuration du réseau | ||
+ | * Configuration de l'interface réseau pour avoir accès au réseau. Dans /etc/network/interfaces : | ||
+ | |||
+ | auto lo | ||
+ | iface lo inet loopback | ||
+ | |||
+ | auto eth0 | ||
+ | |||
+ | iface eth0 inet6 auto | ||
+ | iface eth0 inet static | ||
+ | address 10.60.100.163/24 | ||
+ | up ip address add dev eth0 193.48.57.163/32 ; ip route add default via 10.60.100.254 src 193.48.57.163 | ||
+ | down ip address del dev eth0 193.48.57.163/32 ; ip route del default via 10.60.100.254 src 193.48.57.163 | ||
+ | |||
+ | Configuration des interfaces réseau grâce aux définitions du fichier au dessus | ||
+ | ifdown eth0 | ||
+ | ifup eth0 | ||
+ | |||
+ | ;Serveur SSH | ||
+ | *Installer le paquet | ||
+ | apt-get install openssh-server | ||
+ | Ne pas oublier d'autoriser ssh dans le fichier /etc/ssh/ssh_config avec '''PermitRootLogin yes''' et de redémarrer le service : | ||
+ | service ssh restart | ||
+ | Pour avoir accès depuis une autre machine | ||
+ | ssh root@193.48.57.163 | ||
+ | ;Serveur DNS | ||
+ | Le serveur DNS est un service dont la principale fonction est de traduire un nom de domaine en adresse IP. | ||
+ | |||
+ | J'ai donc commencé par acheter un nom de domaine sur [http://www.gandi.net/ gandi.net] | ||
+ | |||
+ | J'ai acheté le nom [http://www.humankind59.site/ humankind59.site] | ||
+ | |||
+ | Ensuite je l'ai associé à mon adresse IP dans la rubrique '''Glue records''' | ||
+ | |||
+ | [[Fichier:gluerecord.png]] | ||
+ | |||
+ | J'ai aussi configuré sur gandi.net dans la rubrique '''NameSevers''',ma machine virtuelle comme serveur DNS principale et gandi.net comme serveur secondaire | ||
+ | |||
+ | [[Fichier:nameserves.png]] | ||
+ | |||
+ | *Configuration du serveur DNS | ||
+ | |||
+ | Comme je viens de renseigner ma machine virtuelle comme serveur DNS, il faut donc configurer un service DNS sur ma MV avec Bind9 | ||
+ | |||
+ | Installation du package bind9 | ||
+ | apt-get install bind9 | ||
+ | |||
+ | Pour inscrire l'IP autorisé à communiquer avec ma machine j'ai changé dans le fichier /etc/bind/named.conf.options : | ||
+ | |||
+ | options { | ||
+ | directory "/var/cache/bind"; | ||
+ | forwarders { | ||
+ | 0.0.0.0; | ||
+ | }; | ||
+ | dnssec-enable yes; | ||
+ | dnssec-validation auto; | ||
+ | listen-on-v6 { any; }; | ||
+ | allow-transfer{ "allowed_to_transfer"; }; | ||
+ | }; | ||
+ | acl "allowed_to_transfer"{ | ||
+ | 217.70.177.40/32; | ||
+ | }; | ||
+ | |||
+ | Ensuite j'ai défini la zone correspondante à mon domaine dans le fichier /etc/bind/named.conf.local : | ||
+ | |||
+ | zone "humankind59.site" { | ||
+ | type master; | ||
+ | file "/etc/bind/db.humankind.site"; | ||
+ | }; | ||
+ | Après , j'ai écrit le fichier de configuration du domaine dans /etc/bind/db.humankind.site: | ||
+ | |||
+ | $TTL 3600 | ||
+ | @ IN SOA ns.humankind59.site. postmaster.humankind59.site. ( | ||
+ | 1 ; Version | ||
+ | 1800 ; Refresh (30m) | ||
+ | 600 ; Retry (10m) | ||
+ | 3600 ; Expire (1h) | ||
+ | 3600 ) ; Minimum TTL (1h) | ||
+ | IN NS ns.humankind59.site. | ||
+ | IN NS ns6.gandi.net. | ||
+ | IN MX 100 ns | ||
+ | ns IN A 193.48.57.163 | ||
+ | www IN CNAME ns | ||
+ | |||
+ | Pour vérifier les erreurs de syntaxe dans le fichier de configuration, j'utilise la commande suivante , elle doit me retourner OK: | ||
+ | |||
+ | named-checkzone humankind59.site /etc/bind/db.humankind.site | ||
+ | La configuration étant terminé , je relance le service bind avec : | ||
+ | |||
+ | service bind9 restart | ||
+ | |||
+ | Pour tester si le DNS marche, j'essaie de ping avec : | ||
+ | |||
+ | ping -4 google.fr // pou IPV4 | ||
+ | Normalement, si tout s'est bien passé mon site est disponible en tapant www.humankind59.site | ||
+ | |||
+ | *Sécurisation de site web par certificat | ||
+ | |||
+ | Maintenant que mon site est opérationnel, je vais le sécuriser en configurant Apache HTTP avec le certificat SSL, ce dernier doit être signé par une autorité de certification , ici Gandi | ||
+ | |||
+ | D'abord j'installe le package apache | ||
+ | |||
+ | apt-get install apache2 | ||
+ | Pour la géneration des clefs ,j'utilise openSSL : | ||
+ | |||
+ | openssl req -nodes -newkey rsa:2048 -sha256 -keyout myserver.key -out server.csr | ||
+ | |||
+ | Je copie-colle le contenu de server.csr , c'est la clef que je dois transmettre à Gandi pour qu'il la valide. | ||
+ | Pour la validation Gandi a besoin d'un compte mail pour la validation du compte avant de mettre à disposition les certificats, j'ai utilisé le service mail gratuit de gandi, !!! attention bien le créer avant de valider les clefs à fin de recevoir le mail de vérification. | ||
+ | |||
+ | Une fois validé, on retrouver les certificats sur le site de Gandi, il faut les récupérer et les renseigner sur mon serveur. | ||
+ | |||
+ | mkdir /etc/apache2/certificates | ||
+ | Ensuite depuis la machine sur laquelle j'ai téléchargé les certificats, j'envoie les certificats via ssh dans ce dossier | ||
+ | |||
+ | scp GandiStandardSSLCA2.pem root@193.48.57.163:/etc/apache2/certificates | ||
+ | scp humankind59.site.crt root@193.48.57.163:/etc/apache2/certificates | ||
+ | Maintenant que j'ai les certificats sur ma VM, je renseigne leur lien dans le fichier de configuration apache /etc/apache2/config : | ||
+ | |||
+ | == Tests d’intrusion == | ||
+ | |||
+ | == Réalisations == | ||
+ | ;Sécurisation WiFi par WPA2-EAP | ||
+ | *configuration du serveur freeradius | ||
+ | Dans cette partie je vais configurer la borne wifi pour que celle soit sécuriser par WPA2-EAP, l'accès à la borne se fera par l'identification sur un serveur FReeradius qui sera sur ma MV | ||
+ | Je commence par installer freeradius sur ma MV | ||
+ | apt install freeradius | ||
+ | Ensuite je rajoute un utilisateur dans le fichier de configuration /etc/freeradius/3.0/users | ||
+ | |||
+ | pifou Cleartext-Password := "glopglop" | ||
+ | je configure le serveur freeradius PEAP-MSCHAPv2 dans le fichier /etc/freeradius/3.0/mods-enabled/eap | ||
+ | |||
+ | use_mppe = yes | ||
+ | require_encryption = yes | ||
+ | require_strong = yes | ||
+ | with_ntdomain_hack = yes | ||
+ | Je rajoute dans la config client que c'est al borne wifi qui va etre client /etc/freeradius/3.0/clients.conf | ||
+ | |||
+ | client access-point { | ||
+ | ipaddr = 10.60.101.1 | ||
+ | secret = glopglop | ||
+ | } | ||
+ | Ensuite j'arrête le serveur freeradiu et je le redemarre | ||
+ | service freeradius stop | ||
+ | freeradius -X | ||
+ | *configuration de la borne wifi | ||
+ | |||
+ | Il faut que du coté de la borne wifi ,je configure le fait que pour tout connection ca passe par le serveur freeradius configurer precedement | ||
+ | pour cela il faut rajouter un ssid à la configuration du point d’accès WiFi protégé par la méthode WPA2-EAP. | ||
+ | Cela implique d’utiliser un nouveau VLAN donc un nouveau réseau IP à router. | ||
+ | |||
+ | pour se connecter en SSH à la borne wifi | ||
+ | ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 -c aes128-cbc admin@10.60.101.1 | ||
+ | les commandes suivantes permettent de creer la config d'un ssid sur le point d'accès wifi et la protection par la méthode WPA2-EAP, pour cela j'ai crée un Vlan | ||
+ | enable | ||
+ | configure terminal | ||
+ | aaa authentication login EAP_HUMANKIND group RADIUS_HUMANKIND | ||
+ | radius-server host 193.48.57.163 auth-port 1812 acct-port 1813 key glopglop | ||
+ | aaa group server radius RADIUS_HUMANKIND | ||
+ | server 10.60.100.163 auth-port 1812 acct-port 1813 | ||
+ | exit | ||
+ | dot11 ssid HUMANKIND1 | ||
+ | mbssid guest-mode | ||
+ | vlan 163 | ||
+ | authentication open eap EAP_HUMANKIND | ||
+ | authentication network-eap EAP_HUMANKIND | ||
+ | authentication key-management wpa | ||
+ | exit | ||
+ | interface dot11radio0.163 | ||
+ | encapsulation dot1q 163 | ||
+ | bridge-group 63 | ||
+ | exit | ||
+ | interface g0.163 | ||
+ | encapsulation dot1q 163 | ||
+ | bridge-group 63 | ||
+ | exit | ||
+ | interface dot11radio 0 | ||
+ | no shutdown | ||
+ | encryption vlan 163 mode ciphers aes-ccm tkip | ||
+ | mbssid | ||
+ | ssid HUMANKIND1 | ||
+ | exit | ||
+ | exit | ||
+ | write | ||
+ | |||
+ | == Ferme de serveurs Web == |
Version actuelle datée du 29 novembre 2021 à 12:52
Sommaire
Introduction
Ce projet consiste à mettre en place une architecture réseau qui me permettra de manipuler les protocoles de redondance réseau ainsi que le protocole réseau IPv6. Il faudra installer une machine virtuelle et y configurer des services. Je mettrai en place un réseau WIFI sécurisé et un serveur DNS que je configurerais comme serveur principal pour accéder à un nom de domaine que j'aurais réservé auparavant.
Architecture réseau
Installation dans la machine virtuelle Xen
L'idée est de se connecter sur la machine capbreton et d'y créer une machine virtuelle sur laquelle, je ferais toutes les manipulations.
- Connexion sur capbreton en ssh depuis un zabeth :
ssh capbreton.plil.info
- Création d'une image xen:
xen-create-image --hostname=HumanKind --ip=193.48.57.163 --gateway=193.48.57.174 --netmask=255.255.255.0 --dir=/usr/local/xen --password=glopglopglop --dist=buster
- On peut vérifier l'avancement de l'installation avec cette commande :
tail -f /var/log/xen-tools/HumanKind.cfg
- Création de la partition pour la machine:
lvcreate -L1G -n HumanKind virtual
- Création des répertoires var et home:
lvcreate -L10G -n Humankind-home virtual lvcreate -L10G -n Humankind-var virtual
- Modification du fichier de configuration de la machine virtuelle /etc/xen/Humankind.cfg :
disk= ['file:/usr/local/xen/domains/Humankind/disk.img,xvda2,w', 'file:/usr/local/xen/domains/Humankind/swap.img,xvda1,w', 'phy:/dev/virtual/Humankind-home, xvdb1,w', 'phy:/dev/virtual/Humankind-var,xvdb2,w',]
S'assurer que dans networking, il y a bridge=IMA2A5
- Démarrage de la machine virtuelle:
xen create /etc/xen/Humankind.cfg xen console HumanKind
Services Internet
- Configuration du réseau
- Configuration de l'interface réseau pour avoir accès au réseau. Dans /etc/network/interfaces :
auto lo iface lo inet loopback auto eth0 iface eth0 inet6 auto iface eth0 inet static address 10.60.100.163/24 up ip address add dev eth0 193.48.57.163/32 ; ip route add default via 10.60.100.254 src 193.48.57.163 down ip address del dev eth0 193.48.57.163/32 ; ip route del default via 10.60.100.254 src 193.48.57.163
Configuration des interfaces réseau grâce aux définitions du fichier au dessus
ifdown eth0 ifup eth0
- Serveur SSH
- Installer le paquet
apt-get install openssh-server
Ne pas oublier d'autoriser ssh dans le fichier /etc/ssh/ssh_config avec PermitRootLogin yes et de redémarrer le service :
service ssh restart
Pour avoir accès depuis une autre machine
ssh root@193.48.57.163
- Serveur DNS
Le serveur DNS est un service dont la principale fonction est de traduire un nom de domaine en adresse IP.
J'ai donc commencé par acheter un nom de domaine sur gandi.net
J'ai acheté le nom humankind59.site
Ensuite je l'ai associé à mon adresse IP dans la rubrique Glue records
J'ai aussi configuré sur gandi.net dans la rubrique NameSevers,ma machine virtuelle comme serveur DNS principale et gandi.net comme serveur secondaire
- Configuration du serveur DNS
Comme je viens de renseigner ma machine virtuelle comme serveur DNS, il faut donc configurer un service DNS sur ma MV avec Bind9
Installation du package bind9
apt-get install bind9
Pour inscrire l'IP autorisé à communiquer avec ma machine j'ai changé dans le fichier /etc/bind/named.conf.options :
options { directory "/var/cache/bind"; forwarders { 0.0.0.0; }; dnssec-enable yes; dnssec-validation auto; listen-on-v6 { any; }; allow-transfer{ "allowed_to_transfer"; }; }; acl "allowed_to_transfer"{ 217.70.177.40/32; };
Ensuite j'ai défini la zone correspondante à mon domaine dans le fichier /etc/bind/named.conf.local :
zone "humankind59.site" { type master; file "/etc/bind/db.humankind.site"; };
Après , j'ai écrit le fichier de configuration du domaine dans /etc/bind/db.humankind.site:
$TTL 3600 @ IN SOA ns.humankind59.site. postmaster.humankind59.site. ( 1 ; Version 1800 ; Refresh (30m) 600 ; Retry (10m) 3600 ; Expire (1h) 3600 ) ; Minimum TTL (1h) IN NS ns.humankind59.site. IN NS ns6.gandi.net. IN MX 100 ns ns IN A 193.48.57.163 www IN CNAME ns
Pour vérifier les erreurs de syntaxe dans le fichier de configuration, j'utilise la commande suivante , elle doit me retourner OK:
named-checkzone humankind59.site /etc/bind/db.humankind.site
La configuration étant terminé , je relance le service bind avec :
service bind9 restart
Pour tester si le DNS marche, j'essaie de ping avec :
ping -4 google.fr // pou IPV4
Normalement, si tout s'est bien passé mon site est disponible en tapant www.humankind59.site
- Sécurisation de site web par certificat
Maintenant que mon site est opérationnel, je vais le sécuriser en configurant Apache HTTP avec le certificat SSL, ce dernier doit être signé par une autorité de certification , ici Gandi
D'abord j'installe le package apache
apt-get install apache2
Pour la géneration des clefs ,j'utilise openSSL :
openssl req -nodes -newkey rsa:2048 -sha256 -keyout myserver.key -out server.csr
Je copie-colle le contenu de server.csr , c'est la clef que je dois transmettre à Gandi pour qu'il la valide. Pour la validation Gandi a besoin d'un compte mail pour la validation du compte avant de mettre à disposition les certificats, j'ai utilisé le service mail gratuit de gandi, !!! attention bien le créer avant de valider les clefs à fin de recevoir le mail de vérification.
Une fois validé, on retrouver les certificats sur le site de Gandi, il faut les récupérer et les renseigner sur mon serveur.
mkdir /etc/apache2/certificates
Ensuite depuis la machine sur laquelle j'ai téléchargé les certificats, j'envoie les certificats via ssh dans ce dossier
scp GandiStandardSSLCA2.pem root@193.48.57.163:/etc/apache2/certificates scp humankind59.site.crt root@193.48.57.163:/etc/apache2/certificates
Maintenant que j'ai les certificats sur ma VM, je renseigne leur lien dans le fichier de configuration apache /etc/apache2/config :
Tests d’intrusion
Réalisations
- Sécurisation WiFi par WPA2-EAP
- configuration du serveur freeradius
Dans cette partie je vais configurer la borne wifi pour que celle soit sécuriser par WPA2-EAP, l'accès à la borne se fera par l'identification sur un serveur FReeradius qui sera sur ma MV Je commence par installer freeradius sur ma MV
apt install freeradius
Ensuite je rajoute un utilisateur dans le fichier de configuration /etc/freeradius/3.0/users
pifou Cleartext-Password := "glopglop"
je configure le serveur freeradius PEAP-MSCHAPv2 dans le fichier /etc/freeradius/3.0/mods-enabled/eap
use_mppe = yes require_encryption = yes require_strong = yes with_ntdomain_hack = yes
Je rajoute dans la config client que c'est al borne wifi qui va etre client /etc/freeradius/3.0/clients.conf
client access-point { ipaddr = 10.60.101.1 secret = glopglop }
Ensuite j'arrête le serveur freeradiu et je le redemarre
service freeradius stop freeradius -X
- configuration de la borne wifi
Il faut que du coté de la borne wifi ,je configure le fait que pour tout connection ca passe par le serveur freeradius configurer precedement pour cela il faut rajouter un ssid à la configuration du point d’accès WiFi protégé par la méthode WPA2-EAP. Cela implique d’utiliser un nouveau VLAN donc un nouveau réseau IP à router.
pour se connecter en SSH à la borne wifi
ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 -c aes128-cbc admin@10.60.101.1
les commandes suivantes permettent de creer la config d'un ssid sur le point d'accès wifi et la protection par la méthode WPA2-EAP, pour cela j'ai crée un Vlan
enable configure terminal aaa authentication login EAP_HUMANKIND group RADIUS_HUMANKIND radius-server host 193.48.57.163 auth-port 1812 acct-port 1813 key glopglop aaa group server radius RADIUS_HUMANKIND server 10.60.100.163 auth-port 1812 acct-port 1813 exit dot11 ssid HUMANKIND1 mbssid guest-mode vlan 163 authentication open eap EAP_HUMANKIND authentication network-eap EAP_HUMANKIND authentication key-management wpa exit interface dot11radio0.163 encapsulation dot1q 163 bridge-group 63 exit interface g0.163 encapsulation dot1q 163 bridge-group 63 exit interface dot11radio 0 no shutdown encryption vlan 163 mode ciphers aes-ccm tkip mbssid ssid HUMANKIND1 exit exit write