TP sysres IMA5sc 2019/2020 G6 : Différence entre versions
(→Montage des répertoires /var et /home de la VM) |
(→4 ème séance) |
||
(56 révisions intermédiaires par le même utilisateur non affichées) | |||
Ligne 23 : | Ligne 23 : | ||
consiste à craquer le mot de passe WPA-PSK par force brute. | consiste à craquer le mot de passe WPA-PSK par force brute. | ||
− | === | + | ===Cassage de la clef WEP d'un point d'accès Wifi=== |
Cette partie a été réalisé sur une machine sur laquelle on a branché une clé WIFI. J'ai commencé par installé aircrack-ng, l'outil qui me servira à cracker les différentes clefs. | Cette partie a été réalisé sur une machine sur laquelle on a branché une clé WIFI. J'ai commencé par installé aircrack-ng, l'outil qui me servira à cracker les différentes clefs. | ||
Ligne 48 : | Ligne 48 : | ||
Decrypted correctly:100% | Decrypted correctly:100% | ||
− | === | + | ===Cassage de la clef WAP === |
On suppose préalablement que le mot de passe de la clef WAP est un nombre à 8 chiffres. | On suppose préalablement que le mot de passe de la clef WAP est un nombre à 8 chiffres. | ||
On répertorie les trames WIFI qui circulent sur le réseau: | On répertorie les trames WIFI qui circulent sur le réseau: | ||
Ligne 64 : | Ligne 64 : | ||
aircrack-ng psk.cap -w dico.txt | aircrack-ng psk.cap -w dico.txt | ||
+ | [[Fichier:Decriptageb.jpg|400px|center]] | ||
Comme vous pouvez le constater, le décryptage du mot de passe de la clef WAP a pris 51 minutes au cours desquels 20111108 clefs ont été testé sur les 102795810 présents dans le dictionnaire. | Comme vous pouvez le constater, le décryptage du mot de passe de la clef WAP a pris 51 minutes au cours desquels 20111108 clefs ont été testé sur les 102795810 présents dans le dictionnaire. | ||
Ligne 76 : | Ligne 77 : | ||
mkfs -t ext4 /dev/virtual/blennoragie-var | mkfs -t ext4 /dev/virtual/blennoragie-var | ||
On modifie le fichier de configuration de la VM /etc/xen/blennoragie.cfg dans la section disk pour raccorder les partitions à la machine xen: | On modifie le fichier de configuration de la VM /etc/xen/blennoragie.cfg dans la section disk pour raccorder les partitions à la machine xen: | ||
− | + | disk = [ | |
− | + | 'phy:/dev/virtual/ima5_blennoragie_home,xvdb1,w', | |
− | + | . 'phy:/dev/virtual/ima5_blennoragie_var,xvdb2,w' , | |
− | |||
− | |||
− | |||
] | ] | ||
On redémarre la VM : | On redémarre la VM : | ||
Ligne 119 : | Ligne 117 : | ||
==4 ème séance== | ==4 ème séance== | ||
− | === | + | ===Sécurisation de site web par certificat=== |
On commence par saisir la commande suivante dans la machine virtuelle xen : | On commence par saisir la commande suivante dans la machine virtuelle xen : | ||
openssl req -nodes -newkey rsa:2048 -sha256 -keyout myserver.key -out myserver.csr | openssl req -nodes -newkey rsa:2048 -sha256 -keyout myserver.key -out myserver.csr | ||
Ligne 154 : | Ligne 152 : | ||
On installe iptables-persistent et ensuite on se rend dans le fichier /etc/sysctl.conf pour décommenter la ligne: net ipv4:ip-forward=1 | On installe iptables-persistent et ensuite on se rend dans le fichier /etc/sysctl.conf pour décommenter la ligne: net ipv4:ip-forward=1 | ||
− | === | + | ===Propagation de la clef public=== |
On commence par générer une clef asymétrique | On commence par générer une clef asymétrique | ||
ssh-keygen -t rsa | ssh-keygen -t rsa | ||
Ligne 164 : | Ligne 162 : | ||
cat .ssh/id_rsa.pub | ssh 192.168.0.4 "cat >> /root/.ssh/authorized_keys2" | cat .ssh/id_rsa.pub | ssh 192.168.0.4 "cat >> /root/.ssh/authorized_keys2" | ||
cat .ssh/id_rsa.pub | ssh 192.168.0.5 "cat >> /root/.ssh/authorized_keys2" | cat .ssh/id_rsa.pub | ssh 192.168.0.5 "cat >> /root/.ssh/authorized_keys2" | ||
− | cat .ssh/id_rsa.pub | ssh 192.168.0.6 "cat >> /root/.ssh/authorized_keys2" | + | cat .ssh/id_rsa.pub | ssh 192.168.0.6 "cat >> /root/.ssh/authorized_keys2" |
+ | |||
===Ansible=== | ===Ansible=== | ||
− | + | Ansible est un outil d'automatisation. Il permet de configurer des systèmes, de déployer des logiciel et d'organiser plusieurs tâches en vue d'être déployer. | |
− | + | Pour cela je commence par installer Ansible avec apt-get install ansible dans la machine principale. Ensuite, j'édite le fichier /etc/ansible/hosts avec les paramètres suivant: | |
all: | all: | ||
hosts: | hosts: | ||
Ligne 187 : | Ligne 186 : | ||
===Ansible playbook=== | ===Ansible playbook=== | ||
− | Une fois l'inventaire du parc informatique correctement installé, je teste l'execution d'une simple tâche par ansible. | + | Les playbooks sont le langage de configuration d'Ansible. Ils décrivent un ensemble de tâches à appliquer sur les machines distantes , ou un ensemble d'étapes dans un processus. |
+ | Une fois l'inventaire du parc informatique correctement installé, je teste l'execution d'une simple tâche par ansible.Le fichier se trouve dans le répertoire /etc/ansible/jeu.yml | ||
--- | --- | ||
- hosts: interne | - hosts: interne | ||
Ligne 198 : | Ligne 198 : | ||
group: root | group: root | ||
mode: '0644' | mode: '0644' | ||
− | |||
− | ==== | + | ==5ème séance== |
− | Je commence par | + | |
+ | ====Création d'un conteneur==== | ||
+ | Je commence par créer le fichier /test/index.html et le Dockerfile se trouvant dans le répertoire test/docker: | ||
FROM httpd | FROM httpd | ||
Ligne 207 : | Ligne 208 : | ||
COPY blennoragie/index.html /usr/local/apache2/htdocs/ | COPY blennoragie/index.html /usr/local/apache2/htdocs/ | ||
EXPOSE 80 | EXPOSE 80 | ||
− | + | ====Configuration des serveurs internes==== | |
− | le | + | le playbook pour balancer le docker se trouve dans test/deploy-site.yaml |
hosts: serveur-web | hosts: serveur-web | ||
tasks: | tasks: | ||
- name: Creating destination folder | - name: Creating destination folder | ||
shell: mkdir -p /tmp/docker/blennoragie | shell: mkdir -p /tmp/docker/blennoragie | ||
− | |||
- name: Copying Website files | - name: Copying Website files | ||
copy: | copy: | ||
Ligne 221 : | Ligne 221 : | ||
group: root | group: root | ||
mode: '0777' | mode: '0777' | ||
− | |||
- name: Copying Dockerfile | - name: Copying Dockerfile | ||
copy: | copy: | ||
Ligne 229 : | Ligne 228 : | ||
group: root | group: root | ||
mode: '0644' | mode: '0644' | ||
− | |||
- name: Install pip | - name: Install pip | ||
apt: name=python-pip state=present | apt: name=python-pip state=present | ||
− | |||
- name: install docker package | - name: install docker package | ||
pip: name=docker | pip: name=docker | ||
− | |||
- name: Build Docker image from Dockerfile | - name: Build Docker image from Dockerfile | ||
docker_image: | docker_image: | ||
Ligne 241 : | Ligne 237 : | ||
path: /tmp/docker/ | path: /tmp/docker/ | ||
state: build | state: build | ||
− | |||
- name: Running the container | - name: Running the container | ||
docker_container: | docker_container: | ||
Ligne 249 : | Ligne 244 : | ||
name: blennoragiecontainer | name: blennoragiecontainer | ||
ports: "8006:80" | ports: "8006:80" | ||
− | |||
- name: Check if container is running | - name: Check if container is running | ||
shell: docker ps | shell: docker ps | ||
− | ==== | + | ====Équilibreur de charge==== |
− | <VirtualHost | + | On va créer un second serveur web sur la machine principale qui va se comporter à la fois comme équilibreur de charge(load balancer) et mandataire inverse.Un serveur web équilibreur de charge c'est un site dont la charge est réparti sur plusieurs machines.L'intêret de cela est l'augmentation de la qualité des services, amélioration des temps de réponse des services. |
+ | Pour réaliser tout cela on commence par activer les modules Apache proxy et proxy_http,proxy_balancer et lbmethod_byrequests. | ||
+ | a2enmod proxy | ||
+ | a2enmod proxy_http | ||
+ | a2enmod proxy_balancer | ||
+ | a2enmod lbmethod_byrequests | ||
+ | On modifie le fichier de configuration du site se trouvant dans /etc/apache2/sites-enabled/lb.conf | ||
+ | <virtualHost 193.48.57.182:443> | ||
+ | ServerName www.blennoragie.site | ||
+ | DocumentRoot var/www/html/ | ||
+ | SSLEngine on | ||
+ | SSLCertificateFile /etc/ssl/certs/blennoragie.site.crt | ||
+ | SSLCertificateKeyFile /etc/ssl/private/myserver.key | ||
+ | SSLCertificateChainfILE /etc/ssl/certs/GandiStandardSSLCA2.pem | ||
+ | SSLVerifyclient NONE | ||
+ | <Location /balancer-manager> | ||
+ | SetHandler balancer-manager | ||
+ | </Location> | ||
+ | </VirtualHost> | ||
+ | <VirtualHost 193.48.57.182:80> | ||
ServerName www.blennoragie.site | ServerName www.blennoragie.site | ||
− | + | Redirect / https://www.blennoragie.site | |
+ | <Proxy balancer://blenno> | ||
BalancerMember http://192.168.0.1:8006/ | BalancerMember http://192.168.0.1:8006/ | ||
BalancerMember http://192.168.0.2:8006/ | BalancerMember http://192.168.0.2:8006/ | ||
+ | BalancerMember http://192.168.0.3:8006/ | ||
+ | BalancerMember http://192.168.0.4:8006/ | ||
+ | BalancerMember http://192.168.0.5:8006/ | ||
+ | BalancerMember http://192.168.0.6:8006/ | ||
+ | ProxySet lbmethod=byrequests | ||
</Proxy> | </Proxy> | ||
ProxyPass / balancer://blenno | ProxyPass / balancer://blenno | ||
ProxyPassReverse / balancer://blenno | ProxyPassReverse / balancer://blenno | ||
− | </VirtualHost> | + | </VirtualHost> |
+ | On met à jour apache2 pour qu'il tienne en compte les nouveaux paramètres: | ||
+ | service apache2 reload | ||
− | ==6ème | + | ==6ème séance== |
− | === | + | ===Configuration du serveur dns=== |
Ayant déjà acheté mon nom de domaine blennoragie.site sur le site gandi.net,je vais maintenant associer mon domaine à l'adresse IP de ma VM. | Ayant déjà acheté mon nom de domaine blennoragie.site sur le site gandi.net,je vais maintenant associer mon domaine à l'adresse IP de ma VM. | ||
Pour cela je commence d'abord par installer bind9 et à le configurer. | Pour cela je commence d'abord par installer bind9 et à le configurer. | ||
Ligne 299 : | Ligne 320 : | ||
IP address : 193.48.57.182 | IP address : 193.48.57.182 | ||
− | === | + | ===Sécurisation du serveur DNS par DNSSEC=== |
− | On va sécuriser le serveur DNS en signant la zone correspondant à mon domaine.Ainsi nous pourrons garantir à l'utilisateur que l'IP qu'il reçoit dans la réponse DNS est bien celle du domaine souhaitée. | + | On va sécuriser le serveur DNS en signant la zone correspondant à mon domaine. Ainsi nous pourrons garantir à l'utilisateur que l'IP qu'il reçoit dans la réponse DNS est bien celle du domaine souhaitée. |
− | Pour | + | Pour cela nous commençons par ajoutez l’option dnssec-enable yes dans le fichier /etc/bind/named.conf.options. Cet options autorise le protocole DNSSEC par notre serveur DNS. |
Je crée un répertoire blennoragie.site.dnssec pour y générer les clefs | Je crée un répertoire blennoragie.site.dnssec pour y générer les clefs | ||
Ensuite, je génère la clef asymétrique de signature de clefs de zone: | Ensuite, je génère la clef asymétrique de signature de clefs de zone: | ||
Ligne 328 : | Ligne 349 : | ||
}; | }; | ||
− | Sur le site Gandi.net dans l'onglet DNSSEC de mon domaine,il faut fournir la clef publique ksk | + | Sur le site Gandi.net dans l'onglet DNSSEC de mon domaine,il faut fournir la clef publique ksk générée en sélectionnant le bon algorithme de chiffrement qui est RSA/SHA1 dans notre cas. |
Pour terminer on redémarre le bind9 | Pour terminer on redémarre le bind9 | ||
service bind9 restart | service bind9 restart | ||
+ | |||
+ | [[Fichier:Sitedns2.png|400px|center]] | ||
== 7ème séance== | == 7ème séance== | ||
− | === | + | === Cryptage des données=== |
− | On commence par | + | On commence par installer les paquetages lvm2 et cryptsetup.Le paquet LVM2 gère des partitions logiques. Il permet l'extension de systèmes de fichiers sur plusieurs disques physiques et plusieurs partitions de disque. Cryptsetup sert à crypter les partitions. |
+ | apt-get install lvm2 cryptsetup | ||
+ | On liste ensuite les périphériques disponibles sur notre machine afin d'identifier le nom de la clef USB : | ||
lsblk | lsblk | ||
Une fois la clef identifiée on accède aux partitions par la commande : | Une fois la clef identifiée on accède aux partitions par la commande : | ||
fdisk /dev/sdb1 | fdisk /dev/sdb1 | ||
− | On chiffre | + | On chiffre la partition du périphérique /dev/sdb1 au format LUKS. Le chiffrement est de type AES avec un algorithme de hachage SHA256 : |
cryptsetup luksFormat -c aes -h sha256 /dev/sdb1 | cryptsetup luksFormat -c aes -h sha256 /dev/sdb1 | ||
− | + | A la suite de cette commande, un mot de passe pour sécuriser la clef est demandé | |
+ | On ouvre le périphérique et on formate en ext4 la partition chiffrée: | ||
cryptsetup luksOpen /dev/sdb1 usb_crypte | cryptsetup luksOpen /dev/sdb1 usb_crypte | ||
mkfs.ext4 /dev/mapper/usb_crypte | mkfs.ext4 /dev/mapper/usb_crypte |
Version actuelle datée du 29 janvier 2020 à 22:43
Sommaire
1ère séance
Choix du nom de domaine
Sur le site gandi.net, j'ai acheté le nom de mon domaine qui est: blennoragie.site.
Installation de la machine virtuelle Xen
Via une connection en SSH à cordouan.insecserv.deule.net,on commence par paramétrer le proxy:
export http_proxy=http://proxy.plil.fr:3128 export https_proxy=http://proxy.plil.fr:3128
On installe l'image de la machine virtuelle Xen par la commande suivante:
xen-create-image --hostname=blennoragie --dhcp -- dir=/usr/local/xen
le paramètre hostname spécifie le nom de ma machine(blennorragie) et les disques virtuels sont stockés dans le répertoire(/usr/local/xen). L'adresse IP et le masque de sous réseau de la machine ont été générés automatiquement dans un premier temps mais seront modifiés par la suite.
L'adresse MAC obtenue est : 00:16:3E:D6:E1:DF
2ème séance
Ce TP a pour but de tester les différentes méthodes de sécurisation du réseau WIFI.
Dans un premier temps je vais tenter d'infiltrer le réseau en décryptant le mot de passe de la clef WEP. Ensuite, je vais tester une autre méthode, qui
consiste à craquer le mot de passe WPA-PSK par force brute.
Cassage de la clef WEP d'un point d'accès Wifi
Cette partie a été réalisé sur une machine sur laquelle on a branché une clé WIFI. J'ai commencé par installé aircrack-ng, l'outil qui me servira à cracker les différentes clefs.
On commence tout d'abord par repérer le nom de l'interface du réseau sans fil
airmon-ng
On place cet interface en mode monitor. Dans mon cas le nom de l' interface est wlan0.
airmon-ng start wlan0mon
Une fois, l'interface wifi passée en mode monitor, on écoute les trames WIFI qui circulent sur le réseau :
airodump-ng --encrypt wep wlan0mon
On capture les paquets émis par le point d'accès WIFI cracotte06. Pour cela il faut renseigner l'adresse Mac BSSID du client connecté sur cracotte06 (04:DA:D2:9C:50:55) et le numéro du canal qui est 2 dans notre cas. On sauvegarde les paquets capturés dans le fichier craquage.txt
airodump-ng craquag.txt -c 2 --bssid 04:DA:D2:9C:50:55 wlan0mon
Enfin je réalise le cassage de la clef WEP:
aircrack-ng craquage.txt.cap
Pour décrypter la clef il a fallu capturer 30 000 paquets et testé 673 clefs ce qui aura pris 5 minutes.
KEY FOUND! [F1:CA:C4:00:00:00:00:00:00:00:99:99:99] Decrypted correctly:100%
Cassage de la clef WAP
On suppose préalablement que le mot de passe de la clef WAP est un nombre à 8 chiffres. On répertorie les trames WIFI qui circulent sur le réseau:
airmon-ng
Je choisi de cibler le réseau kracotte02 dont le BSSID est 04:DA:D2:9C:50:59 et le canal 2. Je le surveille et j'enregistre les paquets qu'il émet dans le fichier psk.
airodump-ng -c 2 --bssid 04:DA:D2:9C:50:59 wlp3s0mon -w psk wlan0mon
. Pour réussir à déchiffrer le mot de passe du réseau, on doit attendre de capturer un Handshake. Ce dernier se produit chaque fois qu'un périphérique se connecte sur le réseau.
Avant de craquer le mot de passe de la clef WPA, on crée d'abord un dictionnaire que je nomme dico.txt contenant tous les mots de passe à 8 chiffres.
crunch 8 8 0123456789 -o dico.txt
Une fois le dictionnaire créer, on peut craquer le mot de passe de la clef WAP:
aircrack-ng psk.cap -w dico.txt
Comme vous pouvez le constater, le décryptage du mot de passe de la clef WAP a pris 51 minutes au cours desquels 20111108 clefs ont été testé sur les 102795810 présents dans le dictionnaire.
3ème séance
Montage des répertoires /var et /home de la VM
On crée les partitions logiques suivantes:
lvcreate -L10G -n blennoragie-home virtual lvcreate -L10G -n blennoragie-var virtual
On fait pointer le système de fichier sur les 2 répertoires précédemment crées:
mkfs -t ext4 /dev/virual/blennoragie-home mkfs -t ext4 /dev/virtual/blennoragie-var
On modifie le fichier de configuration de la VM /etc/xen/blennoragie.cfg dans la section disk pour raccorder les partitions à la machine xen:
disk = [ 'phy:/dev/virtual/ima5_blennoragie_home,xvdb1,w', . 'phy:/dev/virtual/ima5_blennoragie_var,xvdb2,w' , ]
On redémarre la VM :
xl shutdown blennoragie xl create /etc/xen/blennoragie.cfg
Configuration d'accès à internet
On modifie le fichier /etc/network/interfaces pour permettre l'accès à internet de la VM
The primary network interface auto eth0 iface eth0 inet static address 193.48.57.182 netmask 255.255.255.240
Serveur SSH
Pour rendre accessible notre VM par SSH on commence par vérifier si le paquetage openssh est installé via la commande:
ssh -V
La commande m'indique qu'il est déjà installé alors je modifie le fichier de config /etc/ssh/sshd_config ,en editant la commande PermitRootLogin qui permet l'accès direct en root :
PermitRootLogin yes
Il faut redémarrer le service pour qu'il mette à jours les paramètres et ensuite on teste l’état du service :
service ssh restart service ssh status
La configuration s'est bien passé et je peux à présent me connecter en SSH sur ma machine.
Ajout du bridge
On commence par vérifier la configuration du bridge via la commande:
brctl show
On ajoute le bridge au fichier de configuration de la VM blennoragie.cfg. Je remplace le vif existant par le vif suivant:
vif=['mac=00:16:3E:D6:E1:DF, bridge=IMA5sc']
On redémarre la VM et on lance les 2 commandes suivante qui respectivement recharge le fichier de configuration de la VM et démarre la VM:
xl create /etc/xen/blennoragie.cfg xl console blennoragie
4 ème séance
Sécurisation de site web par certificat
On commence par saisir la commande suivante dans la machine virtuelle xen :
openssl req -nodes -newkey rsa:2048 -sha256 -keyout myserver.key -out myserver.csr
2 fichiers sont générés à la suite de cette commande:
- myserver.key: c'est la clef privée
- myserver.csr: Le fichier qui me servira pour faire ma demande de certificat
Je me rend ensuite sur le site Gandi pour acheter mon certificat et en partageant les informations se trouvant dans le fichier myserver.csr.
Installation d'une machine virtuelle secondaire
Dans cordouan on commence par paramétrer le proxy et ensuite créer une 2ème machine virtuelle Xen privée(private-blennoragie) avec l'adresse ip 192.168.0.6:
export http_proxy=http://proxy.plil.fr:3128 export https_proxy=http://proxy.plil.fr:3128 xen-create-image --hostname=private-blennoragie --dhcp -- dir=/usr/local/xen
On ajoute une 2ème interface eth1 sur la machine virtuelle principale(blennoragie):
The second network interface auto eth1 iface eth1 inet static address 192.168.0.16 netmask 255.255.255.0
Mise en place de la mascarade
On met en place une mascarade sur la machine principale pour permettre à la machine secondaire d'avoir accès à internet.
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/conf/all/forwarding
Sur la machine secondaire je fait un ping google.fr pour vérifier si elle est bien connecté et le test est validé.
On installe iptables-persistent et ensuite on se rend dans le fichier /etc/sysctl.conf pour décommenter la ligne: net ipv4:ip-forward=1
Propagation de la clef public
On commence par générer une clef asymétrique
ssh-keygen -t rsa
J'installe ma clef public sur ma cible qui prendra comme valeur l'adresse ip e toutes les machines secondaires.
cat .ssh/id_rsa.pub | ssh 192.168.0.1 "cat >> /root/.ssh/authorized_keys2" cat .ssh/id_rsa.pub | ssh 192.168.0.2 "cat >> /root/.ssh/authorized_keys2" cat .ssh/id_rsa.pub | ssh 192.168.0.3 "cat >> /root/.ssh/authorized_keys2" cat .ssh/id_rsa.pub | ssh 192.168.0.4 "cat >> /root/.ssh/authorized_keys2" cat .ssh/id_rsa.pub | ssh 192.168.0.5 "cat >> /root/.ssh/authorized_keys2" cat .ssh/id_rsa.pub | ssh 192.168.0.6 "cat >> /root/.ssh/authorized_keys2"
Ansible
Ansible est un outil d'automatisation. Il permet de configurer des systèmes, de déployer des logiciel et d'organiser plusieurs tâches en vue d'être déployer. Pour cela je commence par installer Ansible avec apt-get install ansible dans la machine principale. Ensuite, j'édite le fichier /etc/ansible/hosts avec les paramètres suivant:
all: hosts: interne: ansible_host: 192.168.0.6 children: serveur-web: hosts: 192.168.0.1: 192.168.0.2: 192.168.0.3: 192.168.0.4: 192.168.0.5: 192.168.0.6:
pour vérifier la communication avec tout le parc informatique:
ansible all -a "uname -a"
Ansible playbook
Les playbooks sont le langage de configuration d'Ansible. Ils décrivent un ensemble de tâches à appliquer sur les machines distantes , ou un ensemble d'étapes dans un processus. Une fois l'inventaire du parc informatique correctement installé, je teste l'execution d'une simple tâche par ansible.Le fichier se trouve dans le répertoire /etc/ansible/jeu.yml
--- - hosts: interne tasks: - name: configuration file copy: src: "motd" dest: "/etc/motd" owner: root group: root mode: '0644'
5ème séance
Création d'un conteneur
Je commence par créer le fichier /test/index.html et le Dockerfile se trouvant dans le répertoire test/docker:
FROM httpd MAINTAINER ReX COPY blennoragie/index.html /usr/local/apache2/htdocs/ EXPOSE 80
Configuration des serveurs internes
le playbook pour balancer le docker se trouve dans test/deploy-site.yaml
hosts: serveur-web tasks: - name: Creating destination folder shell: mkdir -p /tmp/docker/blennoragie - name: Copying Website files copy: src: "index.html" dest: "/tmp/docker/blennoragie/index.html" owner: root group: root mode: '0777' - name: Copying Dockerfile copy: src: "docker/Dockerfile" dest: "/tmp/docker/Dockerfile" owner: root group: root mode: '0644' - name: Install pip apt: name=python-pip state=present - name: install docker package pip: name=docker - name: Build Docker image from Dockerfile docker_image: name: blennoragie path: /tmp/docker/ state: build - name: Running the container docker_container: image: blennoragie:latest state: started recreate: yes name: blennoragiecontainer ports: "8006:80" - name: Check if container is running shell: docker ps
Équilibreur de charge
On va créer un second serveur web sur la machine principale qui va se comporter à la fois comme équilibreur de charge(load balancer) et mandataire inverse.Un serveur web équilibreur de charge c'est un site dont la charge est réparti sur plusieurs machines.L'intêret de cela est l'augmentation de la qualité des services, amélioration des temps de réponse des services. Pour réaliser tout cela on commence par activer les modules Apache proxy et proxy_http,proxy_balancer et lbmethod_byrequests.
a2enmod proxy a2enmod proxy_http a2enmod proxy_balancer a2enmod lbmethod_byrequests
On modifie le fichier de configuration du site se trouvant dans /etc/apache2/sites-enabled/lb.conf
<virtualHost 193.48.57.182:443> ServerName www.blennoragie.site DocumentRoot var/www/html/ SSLEngine on SSLCertificateFile /etc/ssl/certs/blennoragie.site.crt SSLCertificateKeyFile /etc/ssl/private/myserver.key SSLCertificateChainfILE /etc/ssl/certs/GandiStandardSSLCA2.pem SSLVerifyclient NONE <Location /balancer-manager> SetHandler balancer-manager </Location> </VirtualHost> <VirtualHost 193.48.57.182:80> ServerName www.blennoragie.site Redirect / https://www.blennoragie.site <Proxy balancer://blenno> BalancerMember http://192.168.0.1:8006/ BalancerMember http://192.168.0.2:8006/ BalancerMember http://192.168.0.3:8006/ BalancerMember http://192.168.0.4:8006/ BalancerMember http://192.168.0.5:8006/ BalancerMember http://192.168.0.6:8006/ ProxySet lbmethod=byrequests </Proxy> ProxyPass / balancer://blenno ProxyPassReverse / balancer://blenno </VirtualHost>
On met à jour apache2 pour qu'il tienne en compte les nouveaux paramètres:
service apache2 reload
6ème séance
Configuration du serveur dns
Ayant déjà acheté mon nom de domaine blennoragie.site sur le site gandi.net,je vais maintenant associer mon domaine à l'adresse IP de ma VM. Pour cela je commence d'abord par installer bind9 et à le configurer.
Installation de bind9
apt-get install bind9 bind9-host dnsutils
Dans /etc/bind/ je crée un fichier db.blennoragie.site où j'ajoute la configuration suivante:
@ IN SOA ns.blennoragie.site. root.blennoragie.site ( 5 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ); Negative Cache TTL IN NS ns.blennoragie.site IN NS ns6.gandi.net. ns IN A 193.48.57.182 www IN A 193.48.57.182 @ IN A 193.48.57.182
J'ajoute ensuite ma zone de DNS dans le fichier etc/bind/named.conf.local:
zone "blennoragie.site" { type master; file "/etc/bind/db.blennoragie.site.signed"; allow-transfer {217.70.177.40;}; };
Je redémarre le bind:
service bind9 restart
Sur le site gandi.net, je me dirige sur mon nom de domaine dans l'onglet glue records et j'ajoute les lignes suivantes:
name : ns.blennoragie.site IP address : 193.48.57.182
Sécurisation du serveur DNS par DNSSEC
On va sécuriser le serveur DNS en signant la zone correspondant à mon domaine. Ainsi nous pourrons garantir à l'utilisateur que l'IP qu'il reçoit dans la réponse DNS est bien celle du domaine souhaitée. Pour cela nous commençons par ajoutez l’option dnssec-enable yes dans le fichier /etc/bind/named.conf.options. Cet options autorise le protocole DNSSEC par notre serveur DNS. Je crée un répertoire blennoragie.site.dnssec pour y générer les clefs Ensuite, je génère la clef asymétrique de signature de clefs de zone:
dnssec-keygen -a RSASHA1 -b 2048 -f KSK -n ZONE blennoragie.site
A la suite de cette commande 2 clef KSK, une clef public et une une clef privée. Je génère la clef asymétrique de la zone pour signer les enregistrements
dnssec-keygen -a RSASHA1 -b 1024 -n ZONE blennoragie.site
De même que précedemment une clef private et public zsk sont générées. Je les renomme correctemment mes clefs afin de pouvoir les identifier facilement. Au total j'ai 4 clef
blennoragie.site-ksk.key blennoragie.site-ksk.private blennoragie.site-zsk.key blennoragie.site-zsk.private
J'inclue mes clefs publics dans le fichier zone /etc/bind/db.blennoragie.site
$include /etc/bind/blennoragie.site.dnssec/blennoragie.site-ksk.key $include /etc/bind/blennoragie.site.dnssec/blennoragie.site-zsk.key
Enfin je signe les enregistrements de la zone: dnssec-signzone -o blennoragie.site -k blennoragie.site-ksk ../db.blennoragie.site blennoragie.site-zsk Un fichier nommée db.blennoragie.site.signed est généré Je modifie le fichier named.conf.local pour utiliser la zone signée
zone "blennoragie.site" { type master; file "/etc/bind/db.blennoragie.site.signed"; allow-transfer {217.70.177.40;}; };
Sur le site Gandi.net dans l'onglet DNSSEC de mon domaine,il faut fournir la clef publique ksk générée en sélectionnant le bon algorithme de chiffrement qui est RSA/SHA1 dans notre cas.
Pour terminer on redémarre le bind9
service bind9 restart
7ème séance
Cryptage des données
On commence par installer les paquetages lvm2 et cryptsetup.Le paquet LVM2 gère des partitions logiques. Il permet l'extension de systèmes de fichiers sur plusieurs disques physiques et plusieurs partitions de disque. Cryptsetup sert à crypter les partitions.
apt-get install lvm2 cryptsetup
On liste ensuite les périphériques disponibles sur notre machine afin d'identifier le nom de la clef USB :
lsblk
Une fois la clef identifiée on accède aux partitions par la commande :
fdisk /dev/sdb1
On chiffre la partition du périphérique /dev/sdb1 au format LUKS. Le chiffrement est de type AES avec un algorithme de hachage SHA256 :
cryptsetup luksFormat -c aes -h sha256 /dev/sdb1
A la suite de cette commande, un mot de passe pour sécuriser la clef est demandé On ouvre le périphérique et on formate en ext4 la partition chiffrée:
cryptsetup luksOpen /dev/sdb1 usb_crypte mkfs.ext4 /dev/mapper/usb_crypte
On monte la partition chiffré sur le point de montage mnt et ensuite on la démonte:
mount -t ext4 /dev/mapper/usb_crypte /mnt/ umount /mnt/
On ferme de manière sécurisée le périphérique
cryptsetup luksClose usb_crypte