TP sysres IMA5sc 2018/2019 G1 : Différence entre versions

De Wiki d'activités IMA
(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

Séance 1

Creation conteneur Unshare

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 apache2c 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 :