TP sysres IMA5sc 2018/2019 G1 : Différence entre versions
(→Séance 3) |
(→Sécurisation de notre serveur web par certificat SSL) |
||
Ligne 328 : | Ligne 328 : | ||
Nous avons ensuite acheté sur gandi.net un certificat SSL en indiquant le code généré et placé le fichier obtenu dans le répertoire suivant: <code>/var/www/html/.well-known/pki-validation</code>. | Nous avons ensuite acheté sur gandi.net un certificat SSL en indiquant le code généré et placé le fichier obtenu dans le répertoire suivant: <code>/var/www/html/.well-known/pki-validation</code>. | ||
+ | Le certificat ainsi que le fichier .pem sont ensuite téléchargé et placé dans le répertoire suivant: <code>/etc/ssl/certs</code>. | ||
+ | Le fichier .key précédemment généré se place quant à lui dans le répertoire <code>/etc/ssl/private</code> | ||
====Mise en place du DNSSEC==== | ====Mise en place du DNSSEC==== |
Version du 11 décembre 2018 à 15:58
Sommaire
Séance 1
export proxy ... dd if=/dev/zero of= bs=1024k count=10240 mkfs Partition umount Partition mount Partition /tmp/pointd'acancrage debootstrap stable --include=vim,apache2
unshare -p -f -m -u -n chroot /tmp/fs[1-3] /bin/sh -c "mount /proc ; /bin/bash" ;
Configuration switch virtuelle
Création de deux interfaces liées :
ip link add vif1 type veth peer name eth0@vif1 ip link add vif2 type veth peer name eth0@vif2 ip link add vif3 type veth peer name eth0@vif3 ip link add vif4 type veth peer name eth1@vif4
Déplacement du pair dans un espace réseau différent :
ip link set eth0@vif1 netns /proc/14601/ns/net name eth0 ip link set eth0@vif2 netns /proc/14612/ns/net name eth0 ip link set eth0@vif3 netns /proc/14620/ns/net name eth0 ip link set eth1@vif4 netns /proc/14620/ns/net name eth1
Configuration réseau dans l’espace alternatif :
nsenter -t 14601 -n ip address add dev eth0 192.168.0.101/24 nsenter -t 14620 -n ip address add dev eth1 172.26.145.243/24 nsenter -t 14612 -n ip address add dev eth0 192.168.0.102/24 nsenter -t 14620 -n ip address add dev eth0 192.168.0.103/24
Routage sur routeur depuis Proxy Inverse:
ip route add default via 172.26.145.254 dev eth1
brctl show:
bridge name bridge id STP enabled interfaces br-50de43cf6b72 8000.024270463a85 no br-9964383bb7d2 8000.0242c526b998 no bridge 8000.00224d7af070 no eth0 eth1 vif4 docker0 8000.0242e82e829c no veth5fcd2d1 vSwitchBanane 8000.3299e99137df no vif1 vif2 vif3
Activation:
ip link set vif1,2,3,4 up ip link set vSwtichBanane up ip link set vif4 master bridge
Flush docker:
iptables -F iptables -F -t nat iptables -P FORWARD ACCEPT
Ping reverse proxy vers conteneur2:
root@zabeth08:/# ping 192.168.0.102 PING 192.168.0.102 (192.168.0.102) 56(84) bytes of data. 64 bytes from 192.168.0.102: icmp_seq=19 ttl=64 time=1024 ms 64 bytes from 192.168.0.102: icmp_seq=20 ttl=64 time=0.110 ms 64 bytes from 192.168.0.102: icmp_seq=21 ttl=64 time=0.056 ms
Config Reverse Proxy
Import proxy & http_proxy libraries:
a2nmod proxy_http proxy
Dans site-available/000-config.conf:
ProxyPass /site1 http://192.168.0.101/ ProxyPassReverse /site1 http://192.168.0.101/ ProxyPass /site2 http://192.168.0.102/ ProxyPassReverse /site2 http://192.168.0.102/ ProxyRequests Off
DNS A Record sur gandi.net:
Domain > DNS Record > Type A - Name DC - TTL 1800 - Adress 172.26.145.243
10H15 => Serveurs Web OK
Installation et configuration Docker
docker create -t -i debian bash docker run -i --network=reseau_docker -t reverse-proxy:version1 docker commit 85b84891f0ac reverse-proxy:version1 docker run -p 80:80 -i --network=reseau_docker -t reverse-proxy:version1 -> reverse proxy
10h20 Serveurs Web (docker) OK
Séance 2
Configuration des bornes Wifi
Tests sur des AP non sécurisés
On commence dans un premier temps par mettre un point d'accès non sécurisé pour tester la mise en place de plusieurs AP simultanément:
Création d'un AP de SSID test1:
Enable Conf t Dot11 ssid test1 Vlan 10 Authentication open Mbssid Guest-mode End
Création d'un AP de SSID test2:
Enable Conf t Dot11 ssid test2 Vlan 20 Authentication open Mbssid Guest-mode End
On relie les SSID à l'interface wifi dot11Radio0:
Enable Conf t int dot11radio0 Mbssid // permet d'avoir plusieur SSID en guest-mode ssid test1 ssid test2
Encapsulation des vlans dans l'interface dot11radio0:
Enable Conf t int dot11radio0.10 encapsulation dot1Q 10
Enable Conf t int dot11radio0.20 encapsulation dot1Q 20
Sécurisation des AP en WPA2-EAP
Nous avons commencé durant cette séance à tester la sécurisation des AP en WPA2-EAP
Enable Conf t dot11 ssid <nom_ssid> authentication network-eap eap_methods authentication key-management wpa
Enable Conf t int dot11radio0 encryption vlan 10 mode ciphers tkip encryption vlan 20 mode ciphers tkip
Création VM
Creation Vm:
xen-create-image --hostname=thot \ --memory=256mb \ --vcpus=1 \ --dir=/usr/local/xen \ --ip=193.48.57.177 \ --netmask=255.255.255.240 \ --dist=stable \ --size=10Gb \ --swap=128mb
ps: 7Jb7J8tqfRrPGe6S2RHJJb4
Séance 3
Mise en place d'un serveur freeradius
Installation:
apt-get install freeradius
Configuration:
Création d'un utilisateur thot:glopglop
# Dans le fichier /etc/freeradius/3.0/users: thot Cleartext-Password := "glopglop"
Configuration de freeradius PEAP-MSCHAPv2:
# fichier /etc/freeradius/mods-enabled/eap.conf: default_eap_type = peap
# fichier /etc/freeradius/mods-enabled/mschap use_mppe = yes require_encryption = yes require_strong = yes with_ntdomain_hack = yes
On recharge les librairies grâce à la commande suivante:
ldconfig
On configure la borne WiFi pour lui donner une adresse IP ainsi qu'une route par défaut:
enable conf t int bvi1 ip address 192.168.0.10 255.255.255.0 end
enable conf t ip default-gateway 192.168.0.254 end
On ajoute le client, c'est à dire le point d'accès, dans le fichier clients de freeradius:
client 192.168.0.10/32 { secret = secretIMA5SC shortname = borneDivinite }
Sécurisation Wifi par WPA2-EAP
On poursuit ensuite la mise en places des AP en configurant reliant la borne pour qu'elle puisse envoyer des requêtes au serveur freeradius de chaque binomes lors d'une authentification:
Les méthodes suivantes sont données à titre d'exemple pour la VM thot et devront être reproduite pour chaque AP:
Activation de la fonction 'aaa' et Création des entitées radius_goup (donnant des infos sur le serveur freeradius) et eap_group (liste contenant les méthodes d'authentification, ici eap) pour chaque binômes:
enable conf t aaa new-model aaa authentication login eap_group11 group radius_group11 aaa group server radius radius_group11 server 193.48.57.177 auth-port 1812 acct-port 1813 radius-server host 193.48.57.177 auth-port 1812 acct-port 1813 key secretIMA5SC end
Mise en place du ssid 'thot' et intégration dans la vlan 11:
enable conf t dot11 ssid Thot vlan 11 authentication open eap eap_group11 authentication network-eap eap_group11 authentication key-management wpa Mbssid Guest-mode end
Liaison interface wifi dot11radio0 avec la vlan et méthode encryption:
Enable Conf t int dot11radio0 Mbssid ssid Thot encryption vlan 11 mode ciphers aes-ccm tkip
Encapsulation:
Enable Conf t int dot11radio0.11 encapsulation dot1Q 11 end
Configuration du serveur DNS sur notre VM
Configuration de Bind9
Nous avons installé les paquets bind9
et apache2
c afin de mettre en place notre serveur DNS et notre serveur web. Nous avons ensuite modifié la page index.html
situé dans le répertoire
/var/www/html/
avec un extrait de la page Wikipedia à propos du dieu Thot.
Nous avons acheté le nom de domaine thotplil.space
sur le site gandi.net
.
Nous avons ensuite configuré bind
en créant le fichier db.thotplil.space
dans le dossier /etc/bind/
@ IN SOA ns.thotplil.space. root.thotplil.space ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; IN NS ns.thotplil.space. IN NS ns6.gandi.net. @ IN A 193.48.57.177 ns IN A 193.48.57.177 www IN A 193.48.57.177
Nous avons spécifié la zone dans le fichier named.conf.local
:
zone "thotplil.space" { type master; file "/etc/bind/db.thotplil.space"; allow-transfer {217.70.177.40;}; notify no; };
Configuration Gandi.net
Nous sommes allez sur gandi.net --> Domains --> Glue Record
pour y ajouter notre espace de nom (namespace) thotplil.space
et notre IP.
Nous avons ajouté sur gandi notre DNS principal et notre DNS secondaire dans gandi.net --> Domains --> Nameservers
avec :
- DNS1 : ns.thotplil.space
- DNS2 : ns6.gandi.net
Sécurisation de notre serveur web par certificat SSL
Nous avons commencé par générer un certificate request grâce à la commande suivante:
openssl req -nodes -newkey rsa:2048 -sha1 -keyout thotplil.space.key -out thotplil.space.csr
Nous avons ensuite acheté sur gandi.net un certificat SSL en indiquant le code généré et placé le fichier obtenu dans le répertoire suivant: /var/www/html/.well-known/pki-validation
.
Le certificat ainsi que le fichier .pem sont ensuite téléchargé et placé dans le répertoire suivant: /etc/ssl/certs
.
Le fichier .key précédemment généré se place quant à lui dans le répertoire /etc/ssl/private
Mise en place du DNSSEC
Modification dans le fichier named.conf.options
:
dnssec-validation auto; dnssec-enable yes;
Tests d’intrusion
Dans cette section nous allons tester différentes méthodes de sécurisations
Cassage de mot de passe WPA-PSK par force brute
Nous avons utilisé les outils du paquetage aircrack-ng pour capturer des paquets d'identifications.
Notre point d'accès est cracotte01.
Il faut tout d'abord mettre la carte réseau wifi de notre machine de travail en mode écoute, cela est fait grâce à la commande :
airmon-ng start wlp2s0
avec wlp2s0 le nom de l'interface réseau wifi de notre machine.
Cela "supprime" notre interface wlp2s0 et en créé une autre nommé wlp2s0mon.
En utilisant la commande
airodump-ng wlp2s0mon
on trouve l'adresse MAC de notre point d'accès cracotte01 :
<importimage>
On capture ensuite les paquets de handshake voulu grâce à la commande
airodump-ng wlp2s0mon --channel 9 --bssid 04:DA:D:9C:50:50 --write capture
Une fois le paquet capturé, on peut attaquer grâce à un simple brute force par dictionnaire.
On suppose que la clé est composé de 8 chiffres, on créé donc un document dico.txt contenant toutes les combinaisons de 8 chiffres possibles.
On lance ensuite la commande
aircrack-ng capture.cap -w dico.txt
Après <insertheure> de brute force, on récupère la clé suivante :