TP sysres IMA5sc 2019/2020 G2 : Différence entre versions

De Wiki d'activités IMA
(Serveur SSH)
(Serveur DNS)
Ligne 79 : Ligne 79 :
 
===Serveur DNS ===
 
===Serveur DNS ===
  
 +
Nous avons utiliser le registrar Gandi (http://www.gandi.net) pour réserver notre nom de domaine, nous avons choisi mycoplasma2.
 +
 +
Dans un premier temps, faire apparaitre dans le fichier /etc/bind/named.conf.options la ligne suivante:
 +
dnssec-validation auto;
 +
 +
====Configuration bind9====
 +
 +
Nous avons déjà installer le package [http://www.example.com/ titre du lien ici].
 +
 +
Ensuite il faut créer un fichier de configuration dans le dossier /etc/bind/ avec les informations de notre site:
 +
 +
$ cat /etc/bind/mycoplasma2.site
 +
 +
;
 +
; BIND data file for local loopback interface
 +
;
 +
$TTL 604800
 +
@ IN SOA ns.chlamydiae.site. root.mycoplasma2.site (
 +
  4 ; Serial
 +
  604800 ; Refresh
 +
86400 ; Retry
 +
2419200 ; Expire
 +
604800 ) ; Negative Cache TTL
 +
;
 +
IN NS ns.mycoplasma2.site.
 +
IN NS ns6.gandi.net.
 +
@      IN      A      193.48.57.178
 +
ns IN A 193.48.57.178
 +
www IN A 193.48.57.178
  
 
===Sécurisation de site web par certificat===
 
===Sécurisation de site web par certificat===

Version du 29 décembre 2019 à 12:47


Présentation générale

Travaux pratiques protocoles avancés. Cet atelier 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.

Le cours se trouve à cette adresse Le sujet du TP se trouve à cette adresse

Réalisation du TP

Installation dans la machine virtuelle Xen

Nous avons acheté notre domaine : mycoplasma.site sur le site gandi. Il faut créer la machine virtuelle Xen Linux sur le dom0 cordouan.insecserv.deule.net

Donc il faut se connecter en shh à Cordouan:

ssh root@cordouan.insecserv.deule.net

Puis créer notre machine virtuelle :

xen-create-image --hostname=mycoplasma --dhcp --dir=/usr/local/xen --dist=buster
xl create mycoplasma.cfg

On a ensuite installer les paquetages nécessaires pour SSH, le serveur Web apache2 et le serveur DNS bind :

sudo apt-get install openssh-server
sudo apt-get install apache2
sudo apt-get install -y bind9

Pour afficher les logs et savoir si l'installation à bien lieu :

  tail -f /var/log/xen-tools/mycoplasma.log

Accès Internet et Permettre SSH

Une fois la VM créée (semaine 1), il faut installer les packages, donc il faut lui donner l'accès à internet. Il faut modifier le fichier suivant etc/network/interfaces. Pour enregistrer les modifications, il faut exécuter les commandes: if down eth0, ifup eth0.

auto eth0
iface eth0 inet static
 address 193.48.57.178
 netmask 255.255.255.240


Pour le moment, pour se connecter à la Machine virtuelle, on utilise la commande suivante:

xl console mycoplasma

SSH

Mais il y a une seconde façon d'accéder à notre VM: c'est en utilisant SHH. Pour le faire il faut remplacer la ligne suivante :

" #PermitRootLogin prohibit-password" 

par

" PermitRootLogin yes" 

de ce fichier etc/ssh/sshd_config.

Architecture réseau

L’architecture générale

Les réseaux virtuels

Routage du site et Interconnexion avec Internet

IPV4

IPV6

Sécurisation du réseau

Services Internet

Serveur SSH

Pour se connecter à la VM une première fois, il faut utiliser la commande :

xl console mycoplasma  --depuis cordouan.

Pour sécuriser les services réseaux il faut être capable de se connecter à la VM en SSH, il faut faire quelques modifications dans le fichier etc/ssh/sshd_config de la VM. Voici la modification :

 #PermitRootLogin prohibit-password

par

 PermitRootLogin yes

Par la suite, il sera possible d'accéder à la VM directement :

ssh root@193.48.57.178

Serveur DNS

Nous avons utiliser le registrar Gandi (http://www.gandi.net) pour réserver notre nom de domaine, nous avons choisi mycoplasma2.

Dans un premier temps, faire apparaitre dans le fichier /etc/bind/named.conf.options la ligne suivante:

dnssec-validation auto;

Configuration bind9

Nous avons déjà installer le package titre du lien ici.

Ensuite il faut créer un fichier de configuration dans le dossier /etc/bind/ avec les informations de notre site:

$ cat /etc/bind/mycoplasma2.site
;
; BIND data file for local loopback interface
;
$TTL	604800 
@	IN	SOA	ns.chlamydiae.site. root.mycoplasma2.site (
 			4	; Serial
 			604800	; Refresh
			86400	; Retry
			2419200	; Expire
			604800 )	; Negative Cache TTL
;
	IN	NS	ns.mycoplasma2.site.
	IN	NS	ns6.gandi.net.
@       IN      A       193.48.57.178
ns	IN	A	193.48.57.178
www	IN	A	193.48.57.178

Sécurisation de site web par certificat

Sécurisation de serveur DNS par DNSSEC

Ferme de serveurs Web

Création du conteneur

Configuration des serveurs internes

Equilibreur de charge

Tests d’intrusion

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

Pour scanner l'environnement Wi-Fi, on utilise l'outil airodump-ng. On remarque qu'il y a deux types de wifi, les cracottes avec un c et les kracottes avec un k. On lance l'interface en mode moniteur :

airmon-ng start  wlan0mon
airodump-ng --encrypt wep wlan0mon

On a choisi de casser la clé WEP de la cracotte5 sur le channel 2, on enregistre les paquets dans webPack.

airodump-ng -c 2 –-bssid 04:DA:D2:9C:5O:5A -w wepPack wlan0mon

La commande suivante permet de se faire passer pour un client afin de générer de l'activité sur le réseau.

aireplay-ng --fakeauth 30 -a 04:DA:D2:9C:5O:5A wlan0mon

On utilise les paquets enregistrés pour réaliser le cassage:

aircrack-ng wepDico*.cap
G2 wep.png

Cassage de mot de passe WPA-PSK par force brute

Il faut lancer la commande ip a : récupérer le nom de l'interface wifi : ""wlx40a5ef0f6518"". Il faut le lancer avec la commande :

airmon-ng start wlx40a5ef0f6518

Il faut ensuite écouter le réseau, on récupère alors le channel(2), le nom du wifi, le BSSID (04:DA:D2:9C:5O:5A) avec la commande suivante:

airodump-ng --encrypt wpa wlan0mon

Nous avons choisi de cracker "kracote03"

airodump-ng wlan0mon --bssid 04:DA:D2:9C:5O:5A --ch 2 -w capture

Il faut l'arreter une fois qu'on obtient un handshake

G2 WPA.png

Pour générer un dictionnaire, on a besoin de la commande suivante :

sudo apt-get update
sudo apt-get install crunch
crunch 8 8 -o dico.txt 0123456789
  • 8 8 : donne des codes de 8 caractères au minimum et au maximum

On lance cette commande :

airodump-ng -c 2 --bssid 04:DA:D2:9C:5O:5A -w ./home/pifou/crack wlx40a5ef0f6518

Voici une capture de la commande :

aircrack crack/capture.cap -w dico.txt 
G2 catch.png

On remarque ce la photo ci dessus que la commande a pris 21 min et 42 sec.

Partie ASR

Nouvelle VM

L'objectif de ces 12 heures est de créer une nouvelle Machine virtuelle qui serait cette fois-ci privée, elle va permettre d'héberger un serveur Web.

Pour la créer :

xen-create-image --hostname=private-mycoplasma --ip=ip 192.168.0.2 --dir=/usr/local/xen
xl create private-mlycoplasma.cfg

Généralement lorsque les export ne sont pas configurés, la création reste bloquée. Il faut exécuter les commande suivante:

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

et suivre la suite de la création avec le fichier de log:

tail -f /var/log/xen-tools/private-mycoplasma.log


Voici notre nouvelle structure :

G2 Structure.png

Pour y arriver, il faut modifier les fichiers /etc/network/interfaces des deux machines virtuelles avec les adresses, Gateway, et netmask marque sur la photo ci-dessus. Et valider les modifications avec les commandes habituelles : ifdown ethi et ifup ethi

Mascarade

iptables -P FORWARD DROP
iptables -A FORWARD -j ACCEPT -s 192.168.0.0/24
iptables -A FORWARD -j ACCEPT -d 192.168.0.0/24
iptables -t nat -A POSTROUTING -j MASQUERADE -s 192.168.0.0/24
echo 1 > /proc/sys/net/ipv4/ip_forward
apt install iptables-persistent

Il faut ensuite décommenter

net.ipv4.ipforward=1

Ansible

Ansible permet l'automatisation par connexion sans mot de passe. Il faut d'abord générer une clef asymétrique :

ssh-keygen -t rsa

Installation de la clef publique sur les machines virtuelles 192.168.0.1 à 192.168.0.6  :

cat .ssh/id_rsa.pub | ssh 192.168.0.1 "cat >> /root/.ssh/authorized_keys2"

Il faut installer Ansible :

apt install ansible

Hosts

Ensuite il faut rédiger l'inventaire ( /etc/ansible/hosts ) c'est un fichier yaml, il faut très attention à la syntaxe. Ce fichier regroupe le parc informatique :

all:
hosts:
 interne:
   ansible_host: 192.168.0.2
children:
 serveur-web:
  hosts:
   192.168.0.[1:6]

Playbooks

Maintenant qu'on a défini toutes les machines dans notre parc et qu'on peut se connecter automatique, on peut exécuter une commande à distance sur tout le parc à l'aide d'Ansible. Un "playbook" c'est une liste des tâches à effectuer sur ces machines.