Atelier SysRes SE4 2024/2025 E2

De wiki-se.plil.fr
Révision datée du 4 mars 2025 à 23:55 par Bcart (discussion | contributions) (→‎Creation des VM)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

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. Styx interfaces.png

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',

Fstab poseidon.png

Création des partitions LVM et montage

Création de xvda3 et xvda4

Montage de home

Var1 orion.png
root@Poseidon: mkfs -t ext4 /dev/xvda3
root@Poseidon: mount -a



Montage pour var

Var2 orion.png
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.

Interfaces poseidon.png

Configuration de l'interface de Poseidon

Interfaces ZEUS.png

Configuration de l'interface de Zeus


Configuration de la mandataire

Interface virtuelle

Config zeus.png

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
Ipa zeus.png

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)
Map DNS.png

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;};
};
Dnsviz.png

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.