Atelier SysRes SE4 2024/2025 E2
CART Benjamin
Mise en place du bridge
Pour que nos futures machines virtuelles puissent communiquer entre elles, nous devons créer un bridge sur Capbreton.
Création des VM
Nous devons maintenant créer les Machines Virtuelles, pour cela nous avons utilisés xen pour la mandataires et les machines de services.
xen-create-image --hostname=SE4.Poseidon --dhcp --dir=/usr/local/xen --size=10G --dist=daedalus --memory=2G --bridge=Styx
xen-create-image --hostname=SE4.Zeus --dhcp --dir=/usr/local/xen --size=10G --dist=daedalus --memory=2G --bridge=Styx
Pour la suite du projet, notre machine mandataire est Zeus et les deux machines de services sont Poséidon et Orion. Pour se connecter aux Machines Virtuelles, nous utiliserons la commande
xen console SE4.Poseidon
Configuration de la machine de service
Montage dans /var et /home
Il faut maintenant monter les systèmes de fichiers /home et /var sur nos machines
Assignation des partitions
Montage permanent dans /etc/fstab
assignation des partitions dans le /etc/xen/SE4.Poseidon.cfg en créant les fichiers SE4.Poseidon.home et SE4.Poseidon.var
'phy:/dev/virtual/SE4.Poseidon.home,xvda3,w', 'phy:/dev/virtual/SE4.Poseidon.var,xvda4,w',
Création des partitions LVM et montage
Montage de home
root@Poseidon: mkfs -t ext4 /dev/xvda3
root@Poseidon: mount -a
Montage pour var
root@Poseidon: mkfs -t ext4 /dev/xvda4
root@Poseidon: mount /dev/xvda4 /mnt
root@Poseidon: mv /var/* /mnt
root@Poseidon: umount /mnt
root@Poseidon: mount -a
Configuration IPV4 et IPV6
On configure le fichier /etc/network/interfaces en mettant une adresse ipv4 locale manuelle et une ipv6 en automatique.
Dans l'état actuel des choses, les machines Poséidon et Orion sont capables de se ping entre elles en passant par le mandataire qui agit comme une gateway. Malgré l'isolation des VM, notre bridge Styx permet de lier ces machines.
L'objectif maintenant est de lier la machine mandataire Zeus à internet.
Configuration de l'interface de Poseidon
Configuration de l'interface de Zeus
Configuration de la mandataire
Interface virtuelle
Nous avons ajouté une adresse publique à notre machine mandataire. Pour cela, nous avons ajouté une interface eth1 et en parallèle, sur le fichier de configuration de la VM, nous avons ajouté une interface avec une adresse mac +1 et mis sur le bridge SE4.
Nous avons du faire un halt de la VM pour que les fichiers de configuration soient chargés ( ce qu'un reboot ne fait pas).
auto eth1
iface eth1 inet static
address 192.48.57.171/28
Après la configuration et le branchement du routeur. Notre machine mandataire peut ping ce router et aussi les autres machines mandataires du réseau.
Autorisation de ssh:
Il y a aussi une possibilité de se connecter par ssh à une autre machine du réseau. Pour cela il faut autoriser le ssh sur la machine cible dans le fichier /etc/ssh/sshd_config.
PermitRootLogin yes
Redémarrage du serveur ssh :
root@Zeus:/etc/ssh# /etc/init.d/ssh restart
Redirection
Redirection du port 2202 de la mandataire vers Poseidon avec nftables:
nft add table ip NAT
nft add chain NAT PREROUTING { type nat hook prerouting priority 0\; }
nft add rule NAT PREROUTING tcp dport 2202 dnat to 192.168.2.3:22
Grâce à la configuration du router et des vlan il est maintenant possible de sortir sur internet et de ping google par exemple.
Il a fallu ajouter à Zeus le routeur en gateway. (193.48.57.161)
Serveur DNS
Pour la configuration de notre serveur DNS, nous allons utiliser bind9
Ajout du DNS
Pour ajouter l'adresse de notre DNS, il faut modifier le fichier /etc/resolv.conf
search plil.info
nameserver 172.26.188.12
nameserver 193.48.57.48
search poissonidon.online
nameserver 192.168.2.2
nameserver 192.168.2.3
Fichier de configuration
Il s'agit du fichier named.conf.local
zone "poissonidon.online" {
type master;
file "/etc/bind/db.poissonidon.online.zone";
allow-transfer{secondaries;}; // filtrage des secondaires
also-notify{hiddensecondaries;}; // pour les secondaires vicieux
notify yes;
};
acl "secondaries" {
2001:660:4401:60a0:216:3eff:fe7c:cea; // Serveur secondaire en IPv6
2001:660:4401:60a0:216:3eff:fe85:c2fe;
};
masters "hiddensecondaries"{
2001:660:4401:60a0:216:3eff:fe85:c2fe;
};
zone "basrion.online" {
type slave;
file "/etc/bind/backup/db.basrion.online";
masters{2001:660:4401:60a0:216:3eff:fe7c:cea;};
};
Fichier de zone
root@Poseidon:/etc/bind# cat db.poissonidon.online.zone
$TTL 200
@ IN SOA ns1.poissonidon.online. admin.poissonidon.online. (
2025020504 ; Serial Number
86400 ; Refresh (1 jour)
7200 ; Retry (2 heures)
1209600 ; Expire (14 jours)
3600 ) ; Minimum TTL (1 heure)
@ IN NS ns1.poissonidon.online.
ns1 IN A 193.48.57.171
IN AAAA 2001:660:4401:60a0:216:3eff:fe28:c918
@ IN A 193.48.57.171
@ IN AAAA 2001:660:4401:60a0:216:3eff:fe28:c918
Test du serveur DNS
Afin d'appliquer les changement du serveur DNS, nous devons redémarrer le service :
root@Poseidon:/etc/bind# systemctl restart bind9
root@Poseidon:/etc/bind# systemctl status bind9
bind9.service - BIND Domain Name Server
Loaded: loaded (/etc/systemd/system/bind9.service, disabled)
Active: active (running)
DNS et Gandi
Afin de rendre notre DNS accessible au monde entier, nous remplissons les informations nécessaires sur le registrar (Gandi).
Nous y entrons les adresses ipv4 (de la mandataire) et ipv6 (de la service) routée.
Pour vérifier que la propagation s'effectue, nous pouvons consulter le site DNS Checker en recherchant "poissonidon.online"
DNSSEC
Le protocole DNSSEC permet de palier à certains risques de sécurité du DNS. Pour cela, il faut que les secondaires soient configurées dans le fichier named.conf.local. Pour faire cela, le répertoire backup a été créé avec les droits donnés à bind.
Pour ajouter les fichiers de backup ( dans ce cas, Poseidon se met en backup de Orion).
rndc refresh basrion.online
Il faut ensuite ajouter à named.conf.local :
dnssec-policy "dnspol" {
keys {
ksk key-directory lifetime unlimited algorithm 13;
zsk key-directory lifetime unlimited algorithm 13;
};
nsec3param;
};
Ainsi que de changer notre zone principale
zone "poissonidon.online" {
type master;
file "/etc/bind/db.poissonidon.online.zone";
allow-transfer{secondaries;}; // filtrage des secondaires
also-notify{hiddensecondaries;}; // pour les secondaires vicieux
notify yes;
key-directory "/etc/bind/keys";
dnssec-policy "dnspol";
inline-signing yes;
};
les deux zones ont aussi été ajoutés à la mandataire Zeus :
zone "basrion.online" {
type slave;
file "/etc/bind/backup/db.basrion.online";
masters{2001:660:4401:60a0:216:3eff:fe7c:cea;};
};
zone "poissonidon.online" {
type slave;
file "/etc/bind/backup/db.poissonidon.online";
masters{2001:660:4401:60a0:216:3eff:fe28:c918;};
};
Afin de vérifier le tout, nous nous rendons sur le site dnsviz
Fail2ban
Afin d'ajouter encore plus de sécurité, nous ajoutons le service Fail2ban qui permet de bannir une ip lorsque trop de tentative de connexion ont échouées. Cela évite le brute force.
- ajout du service avec apt install fail2ban
- ajout d'un fichier jail.local dans /etc/fail2ban
[sshd]
enable = true
port = ssh
filter = sshd
maxretry = 3
findtime = 300
bantime = 600
Serveur Apache2
Tout d'abord, nous nous rendons sur le site de Gandi afin de récupérer les certificats de notre site. (.crt .key et .pem)
Ensuite il faut activer les modules ssl, proxy et proxy_http avec a2enmod.
Bien évidemment, il faut créer un fichier html qui est situé dans /var/www/poissonidon.online/
Configuration d'Apache2
sites-available/000-poissonidon.online-ssl.conf
<VirtualHost *:80>
ServerName poissonidon.online
Redirect permanent / https://poissonidon.online/
</VirtualHost>
<VirtualHost *:443>
ServerName poissonidon.online
ServerAlias poissonidon.online
DocumentRoot /var/www/poissonidon.online
CustomLog /var/log/apache2/secure_access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/poissonidon.online.crt
SSLCertificateKeyFile /etc/ssl/private/poissonidon.online.key
SSLCertificateChainFile /etc/ssl/certs/GandiCert.pem
SSLVerifyClient None
</VirtualHost>
ports.conf
Listen 80
#<IfModule mod_ssl.c>
<IfModule ssl_module>
#Listen 80
Listen 443
# NameVirtualHost 2001:660:4401:60a0:216:3eff:fe28:c918:443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
Etat du projet
Pour le moment, Les VM sont accessibles par ssh, les sites ont un serveur DNSSEC et La redirection http vers https est fonctionnelle .
Nous avons commencé à faire l'installation d'une architecture réseau complète afin que notre site puisse rester actif même si la connexion principale ne fonctionne plus.
Pour cela nous avons commencé à câbler en SR52 et SR31 ainsi que de créer nos vlans.