Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
tech:hypervisor-01 [19/02/2021 12:24] – [Stockage ZFS] LibertAdmintech:hypervisor-01 [06/11/2023 15:04] (Version actuelle) – [Routage et filtrage avec iptables] LibertAdmin
Ligne 21: Ligne 21:
      * [[tech:audio-01|audio-01]] : Debian stable, Nginx, application Funkwhale, ffmpeg      * [[tech:audio-01|audio-01]] : Debian stable, Nginx, application Funkwhale, ffmpeg
      * [[tech:mail-01|mail-01]] : Debian stable, services mail Postfix, Dovecot, Amavis, Spamassassin, ClamAV, Sieve (déploiement à venir)      * [[tech:mail-01|mail-01]] : Debian stable, services mail Postfix, Dovecot, Amavis, Spamassassin, ClamAV, Sieve (déploiement à venir)
-     * [[tech:proxy-01|proxy-01]] : Debian stable, proxy frontal Nginx et pare-feu iptables, bannissement par Fail2Ban +     <del>[[tech:proxy-01|proxy-01]] : Debian stable, proxy frontal Nginx et pare-feu iptables, bannissement par Fail2Ban</del> Serveur supprimé le 30 janvier 2022. 
-     * [[tech:sql-01|sql-01]] : Debian stable, services MySQL et PostgreSQL +     * [[tech:sql-01|sql-01]] : Debian stable, services MySQLPostgreSQL et Redis 
-     * [[tech:video-01|video-01]] : Debian stable, Nginx, application Peertube, ffmpeg +     <del>[[tech:video-01|video-01]] : Debian stable, Nginx, application Peertube, ffmpeg</del> Serveur supprimé en 2023. 
-     * [[tech:visio-01|visio-01]] : Debian stable, Nginx, application Jitsi Meet +     <del>[[tech:visio-01|visio-01]] : Debian stable, Nginx, application Jitsi Meet</del> Serveur supprimé en 2022. 
-     * [[tech:web-01|web-01]] : Debian stable, Nginx, services web, sites, blogs, sites internes, service Redis+     * [[tech:web-01|web-01]] : Debian stable, Nginx, ffmpeg, services web, sites, blogs, sites internes
  
-Toutes les requêtes venant d'internet sont pré-routées et redirigées via iptables vers une machine virtuelle, [[tech:proxy-01|proxy-01]], protégée par un pare-feu et un système de bannissement. Elle a pour rôle de transférer les requêtes aux machines virtuelles ad-hoc et de protéger l'infrastructure.+Toutes les requêtes venant d'internet sont pré-routées et redirigées via iptables vers la ou les machines virtuelles concernées. L'infrastructure interne est protégée par un pare-feu et un système de bannissement. 
  
 ===== Configuration ===== ===== Configuration =====
-==== Système d'exploitation==== +==== Système d'exploitation ==== 
-Debian stable (Debian 10 « Buster » au moment de la rédaction de cette page)+  Debian stable (Debian 12 « Bookworm »
 +  * Debian oldstable pour le serveur web-01 (Debian 11 « Bullseye ») 
 + 
 +==== Adressage IP ==== 
 +Hetzner offre une IP publique. Nous avons modifié l'adressage pour créer 2 réseaux internes : un pour les machines virtuelles et un pour notre administration, puis on bridgé le réseau des VM sur le réseau adressé avec l'IP publique. L'interface enp0trucmachin est devenue br0. La ligne « pre-up » corrige notamment un problème connu d'instabilité de connexion sur la carte réseau de ce serveur. 
 + 
 +L'adressage du réseau d'administration sur l'interface ''br1'' a été masqué pour des raisons de sécurité. 
 + 
 +L'adressage en IPv6 utilise le réseau /64 qu'Hetzner nous offre, ça fait quand même 2^64 adresses IP disponibles, à savoir 18 446 744 073 709 551 616 adresses ! 
 + 
 +<code> 
 +root@hypervisor-01 ~ # cat /etc/network/interfaces 
 +### Hetzner Online GmbH installimage 
 + 
 +source /etc/network/interfaces.d/
 + 
 +auto lo 
 +iface lo inet loopback 
 +iface lo inet6 loopback 
 + 
 +auto br0 
 +iface br0 inet static 
 + bridge_ports enp0s31f6 
 + bridge_hw enp0s31f6 
 + bridge_fd 0 
 + bridge_stp off 
 + bridge_maxwait 0 
 + address  159.69.59.13 
 + netmask  255.255.255.192 
 + gateway  159.69.59.1 
 + pre-up /usr/sbin/ethtool -K enp0s31f6 tso off gso off 
 + 
 +iface br0 inet6 static 
 + bridge_ports enp0s31f6 
 + bridge_hw enp0s31f6 
 + bridge_fd 0 
 + bridge_stp off 
 + bridge_maxwait 0 
 + address 2a01:4f8:231:aa6::13 
 + netmask 64 
 + gateway fe80::1 
 + 
 +# Management  
 +auto br1 
 +iface br1 inet static 
 + bridge_ports none 
 + bridge_fd 0 
 + bridge_stp off 
 + address XXX 
 + netmask 255.255.255.0 
 + 
 +iface br1 inet6 static 
 + bridge_ports none 
 + bridge_fd 0 
 + bridge_stp off 
 + address XXX 
 + netmask 120 
 + 
 +# VM-LAN 
 +auto br2 
 +iface br2 inet static 
 + bridge_ports none 
 + bridge_fd 0 
 + bridge_stp off 
 + address 192.168.10.1 
 + netmask 255.255.255.0 
 + 
 +iface br2 inet6 static 
 + bridge_ports none 
 + bridge_fd 0 
 + bridge_stp off 
 + address 2a01:4f8:231:aa6::
 + netmask 120 
 + 
 +</code> 
 + 
 + 
 +==== Routage et filtrage avec iptables ==== 
 + 
 +Nous avons dû ensuite router et rediriger tout ça avec iptables afin de communiquer depuis l'extérieur avec le réseau des VM et filtrer les connexions entrantes, c'est le point le plus important. 
 + 
 +Le paquet ''iptables-persistent'' doit avoir été installé pour conserver les modifications du pare-feu entre chaque redémarrage. 
 +Le port SSH a été masqué. 
 + 
 +Il est bien sûr extrêmement important de sécuriser SSH : interdire le login root avec mot de passe, utiliser de bons algorithmes de chiffrement, changer le port, n'autoriser qu'une IP distante (ou mieux, ne rien autoriser depuis internet et utiliser un VPNet mettre en place un faux serveur SSH pour que les attaquants perdent leur temps à essayer de se connecter, sans vous faire perdre le vôtre (et ajouter un Fail2Ban évidemment). La recette reste secrète, désolé ! ;-) 
 + 
 +Les règles concernant le réseau d'administration n'apparaissent pas non plus ici. 
 + 
 +Pour IPv4, dans ''/etc/iptables-persistent/rules.v4''
 + 
 +<code bash> 
 +*nat 
 +# Router le trafic Web vers le serveur web : 
 +-A PREROUTING -d 159.69.59.13/32 -p tcp -m tcp --syn -m multiport --dports 80,443 -j DNAT --to-destination 192.168.10.5 
 +# Router le mail envoi/réception vers le serveur mail : 
 +-A PREROUTING -d 159.69.59.13/32 -p tcp -m tcp --syn -m multiport --dports 587,993,25 -j DNAT --to-destination 192.168.10.7 
 +# Router le 8484 pour Zabbix vers le serveur monitoring : 
 +-A PREROUTING -d 159.69.59.13/32 -p tcp -m tcp --syn -m multiport --dports 8484 -j DNAT --to-destination 192.168.10.250 
 +# Ne pas appliquer le masquerading sur le broadcast/multicast : 
 +-A POSTROUTING -s 192.168.10.0/24 -d 224.0.0.0/24 -j RETURN 
 +-A POSTROUTING -s 192.168.10.0/24 -d 255.255.255.255/32 -j RETURN 
 +# Masquerading sur tous les ports dans le sens sortant (VM -> Internet) 
 +-A POSTROUTING -s 192.168.10.0/24 ! -d 192.168.10.0/24 -p tcp -j MASQUERADE --to-ports 1024-65535 
 +-A POSTROUTING -s 192.168.10.0/24 ! -d 192.168.10.0/24 -p udp -j MASQUERADE --to-ports 1024-65535 
 +-A POSTROUTING -s 192.168.10.0/24 ! -d 192.168.10.0/24 -j MASQUERADE 
 +COMMIT 
 +*filter 
 +# Accepter le trafic basique : ICMP, boucle locale et connexions établies, en entrée : 
 +-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT 
 +-A INPUT -i lo -j ACCEPT 
 +-A INPUT -p icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT 
 +# Accepter le SSH : 
 +-A INPUT -p tcp -m tcp --syn -m conntrack --ctstate NEW --dport 22 -j ACCEPT 
 +-A INPUT -p tcp -m tcp --syn -m conntrack --ctstate NEW --dport 1984 -j ACCEPT 
 +# Accepter les connexions pour le mail : 
 +-A INPUT -p tcp -m tcp --syn -m conntrack --ctstate NEW -m multiport --dports 587,993,25 -j ACCEPT 
 +# Accepter le tunnel SSH vers le serveur web-01 sur le port 52365 : 
 +-A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --dport 52365 -j ACCEPT 
 +# Accepter les requêtes DNS (port 53) depuis les VM : 
 +-A INPUT -i br2 -p udp -m udp -m multiport --dports 53 -j ACCEPT 
 +-A INPUT -i br2 -p tcp -m tcp -m multiport --dports 53 -j ACCEPT 
 +# Bloquer les requêtes rpcbind/portmap en entrée ***depuis l'extérieur*** : 
 +-A INPUT -i br2 -p tcp -m multiport --dport 2049 -j ACCEPT 
 +-A INPUT -i br2 -p tcp -m multiport --dport 111 -j ACCEPT 
 +-A INPUT -p tcp -s 127.0.0.1 --dport 111 -j ACCEPT 
 +-A INPUT -p udp --dport 111 -j DROP 
 +-A INPUT -p tcp --dport 111 -j DROP 
 +# Accepter les requêtes Zabbix passives (port 10050) depuis les VM : 
 +-A INPUT -i br2 -p tcp -m tcp -m multiport --dports 10050 -j ACCEPT 
 +# On refuse les trop nombreux ping : 
 +-A INPUT -p icmp  --icmp-type 8 -m conntrack --ctstate NEW -m limit --limit 1/s --limit-burst 1 -j ACCEPT 
 +-A INPUT -p icmp -j DROP 
 +# On refuse tout le reste : 
 +-A INPUT -m conntrack --ctstate INVALID -j DROP 
 +-A INPUT -p tcp -m tcp -j REJECT --reject-with tcp-reset 
 +-A INPUT -j REJECT --reject-with icmp-port-unreachable 
 +# Accepter les connexions établies sur le LAN : 
 +-A FORWARD -d 192.168.10.0/24 -o br2 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT 
 +# Accepter le trafic sortant depuis le LAN : 
 +-A FORWARD -s 192.168.10.0/24 -i br2 -j ACCEPT 
 +# Accepter le trafic interne entre les VM : 
 +-A FORWARD -i br2 -o br2 -j ACCEPT 
 +# Accepter les paquets redirigés vers des ports particuliers pour le Web vers le serveur web : 
 +-A FORWARD -d 192.168.10.5/32 -o br2 -p tcp -m tcp --syn -m conntrack --ctstate NEW -m multiport --dports 80,443,8484 -j ACCEPT 
 +# Accepter les paquets redirigés vers des ports particuliers pour le mail vers le serveur mail : 
 +-A FORWARD -d 192.168.10.7/32 -o br2 -p tcp -m tcp --syn -m conntrack --ctstate NEW -m multiport --dports 587,993,25 -j ACCEPT 
 +# Accepter les paquets redirigés vers des ports particuliers pour le monitoring vers le serveur de monitoring : 
 +-A FORWARD -d 192.168.10.250/32 -o br2 -p tcp -m tcp -m conntrack --ctstate NEW -m multiport --dports 8484 -j ACCEPT 
 +# On bloque TOUT le trafic en provenance de Meta/Facebook/Instagram/Threads : 
 +-A INPUT -s 102.132.96.0/20 -j DROP 
 +-A INPUT -s 103.4.96.0/22 -j DROP 
 +-A INPUT -s 129.134.0.0/17 -j DROP 
 +-A INPUT -s 129.134.160.0/24 -j DROP 
 +-A INPUT -s 129.134.25.0/24 -j DROP 
 +-A INPUT -s 129.134.26.0/24 -j DROP 
 +-A INPUT -s 129.134.27.0/24 -j DROP 
 +-A INPUT -s 129.134.28.0/24 -j DROP 
 +-A INPUT -s 129.134.29.0/24 -j DROP 
 +-A INPUT -s 129.134.30.0/24 -j DROP 
 +-A INPUT -s 129.134.31.0/24 -j DROP 
 +-A INPUT -s 139.223.200.130/32 -j DROP 
 +-A INPUT -s 157.240.0.0/17 -j DROP 
 +-A INPUT -s 157.240.192.0/24 -j DROP 
 +-A INPUT -s 157.240.195.0/24 -j DROP 
 +-A INPUT -s 157.240.196.0/24 -j DROP 
 +-A INPUT -s 157.240.197.0/24 -j DROP 
 +-A INPUT -s 157.240.198.0/24 -j DROP 
 +-A INPUT -s 157.240.199.0/24 -j DROP 
 +-A INPUT -s 157.240.200.0/24 -j DROP 
 +-A INPUT -s 157.240.201.0/24 -j DROP 
 +-A INPUT -s 157.240.202.0/24 -j DROP 
 +-A INPUT -s 157.240.203.0/24 -j DROP 
 +-A INPUT -s 157.240.204.0/24 -j DROP 
 +-A INPUT -s 157.240.205.0/24 -j DROP 
 +-A INPUT -s 157.240.207.0/24 -j DROP 
 +-A INPUT -s 157.240.208.0/24 -j DROP 
 +-A INPUT -s 157.240.209.0/24 -j DROP 
 +-A INPUT -s 157.240.210.0/24 -j DROP 
 +-A INPUT -s 157.240.211.0/24 -j DROP 
 +-A INPUT -s 157.240.212.0/24 -j DROP 
 +-A INPUT -s 157.240.214.0/24 -j DROP 
 +-A INPUT -s 157.240.215.0/24 -j DROP 
 +-A INPUT -s 157.240.216.0/24 -j DROP 
 +-A INPUT -s 157.240.217.0/24 -j DROP 
 +-A INPUT -s 157.240.218.0/24 -j DROP 
 +-A INPUT -s 157.240.22.0/24 -j DROP 
 +-A INPUT -s 157.240.221.0/24 -j DROP 
 +-A INPUT -s 157.240.222.0/24 -j DROP 
 +-A INPUT -s 157.240.223.0/24 -j DROP 
 +-A INPUT -s 157.240.224.0/24 -j DROP 
 +-A INPUT -s 157.240.225.0/24 -j DROP 
 +-A INPUT -s 157.240.226.0/24 -j DROP 
 +-A INPUT -s 157.240.227.0/24 -j DROP 
 +-A INPUT -s 157.240.228.0/24 -j DROP 
 +-A INPUT -s 157.240.229.0/24 -j DROP 
 +-A INPUT -s 157.240.23.0/24 -j DROP 
 +-A INPUT -s 157.240.231.0/24 -j DROP 
 +-A INPUT -s 157.240.232.0/24 -j DROP 
 +-A INPUT -s 157.240.233.0/24 -j DROP 
 +-A INPUT -s 157.240.234.0/24 -j DROP 
 +-A INPUT -s 157.240.235.0/24 -j DROP 
 +-A INPUT -s 157.240.236.0/24 -j DROP 
 +-A INPUT -s 157.240.237.0/24 -j DROP 
 +-A INPUT -s 157.240.238.0/24 -j DROP 
 +-A INPUT -s 157.240.239.0/24 -j DROP 
 +-A INPUT -s 157.240.240.0/24 -j DROP 
 +-A INPUT -s 157.240.24.0/24 -j DROP 
 +-A INPUT -s 157.240.241.0/24 -j DROP 
 +-A INPUT -s 157.240.242.0/24 -j DROP 
 +-A INPUT -s 157.240.243.0/24 -j DROP 
 +-A INPUT -s 157.240.244.0/24 -j DROP 
 +-A INPUT -s 157.240.245.0/24 -j DROP 
 +-A INPUT -s 157.240.247.0/24 -j DROP 
 +-A INPUT -s 157.240.249.0/24 -j DROP 
 +-A INPUT -s 157.240.250.0/24 -j DROP 
 +-A INPUT -s 157.240.25.0/24 -j DROP 
 +-A INPUT -s 157.240.251.0/24 -j DROP 
 +-A INPUT -s 157.240.252.0/24 -j DROP 
 +-A INPUT -s 157.240.253.0/24 -j DROP 
 +-A INPUT -s 157.240.254.0/24 -j DROP 
 +-A INPUT -s 157.240.26.0/24 -j DROP 
 +-A INPUT -s 157.240.27.0/24 -j DROP 
 +-A INPUT -s 157.240.28.0/24 -j DROP 
 +-A INPUT -s 157.240.29.0/24 -j DROP 
 +-A INPUT -s 157.240.30.0/24 -j DROP 
 +-A INPUT -s 157.240.3.0/24 -j DROP 
 +-A INPUT -s 157.240.31.0/24 -j DROP 
 +-A INPUT -s 157.240.5.0/24 -j DROP 
 +-A INPUT -s 157.240.6.0/24 -j DROP 
 +-A INPUT -s 157.240.7.0/24 -j DROP 
 +-A INPUT -s 157.240.8.0/24 -j DROP 
 +-A INPUT -s 157.240.9.0/24 -j DROP 
 +-A INPUT -s 162.254.207.51/32 -j DROP 
 +-A INPUT -s 162.255.119.207/32 -j DROP 
 +-A INPUT -s 172.67.135.213/32 -j DROP 
 +-A INPUT -s 173.252.64.0/18 -j DROP 
 +-A INPUT -s 179.60.192.0/22 -j DROP 
 +-A INPUT -s 185.199.108.153/32 -j DROP 
 +-A INPUT -s 185.199.111.153/32 -j DROP 
 +-A INPUT -s 185.60.216.0/22 -j DROP 
 +-A INPUT -s 198.54.117.211/32 -j DROP 
 +-A INPUT -s 204.15.20.0/22 -j DROP 
 +-A INPUT -s 27.124.125.189/32 -j DROP 
 +-A INPUT -s 31.13.24.0/21 -j DROP 
 +-A INPUT -s 31.13.64.0/18 -j DROP 
 +-A INPUT -s 34.117.168.233/32 -j DROP 
 +-A INPUT -s 37.9.175.187/32 -j DROP 
 +-A INPUT -s 45.130.41.7/32 -j DROP 
 +-A INPUT -s 45.64.40.0/22 -j DROP 
 +-A INPUT -s 45.91.92.164/32 -j DROP 
 +-A INPUT -s 54.81.116.232/32 -j DROP 
 +-A INPUT -s 61.9.242.43/32 -j DROP 
 +-A INPUT -s 64.225.91.73/32 -j DROP 
 +-A INPUT -s 66.220.144.0/20 -j DROP 
 +-A INPUT -s 69.171.224.0/19 -j DROP 
 +-A INPUT -s 74.119.76.0/22 -j DROP 
 +-A INPUT -s 89.223.68.248/32 -j DROP 
 +# Rejeter tout le reste : 
 +-A FORWARD -i br2 -j REJECT --reject-with icmp-port-unreachable 
 +-A FORWARD -o br2 -j REJECT --reject-with icmp-port-unreachable 
 +COMMIT 
 +</code> 
 + 
 +Pour IPv6, dans ''/etc/iptables-persistent/rules.v6''
 + 
 +<code bash> 
 +# Accepter le trafic basique : ICMP, boucle locale et connexions établies, en entrée : 
 +-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT 
 +-A INPUT -i lo -j ACCEPT 
 +-A INPUT ! -i lo -d ::1/128 -j REJECT 
 +# Accepter le SSH : 
 +-A INPUT -p tcp -m tcp --syn -m conntrack --ctstate NEW --dport 22 -j ACCEPT 
 +-A INPUT -p tcp -m tcp --syn -m conntrack --ctstate NEW --dport 1984 -j ACCEPT 
 +# Accepter le tunnel SSH vers le serveur web-01 sur le port 52365 : 
 +-A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --dport 52365 -j ACCEPT 
 +# Accepter les requêtes DNS (port 53) depuis les VM : 
 +-A INPUT -i br2 -p udp -m udp -m multiport --dports 53 -j ACCEPT 
 +-A INPUT -i br2 -p tcp -m tcp -m multiport --dports 53 -j ACCEPT 
 +# Bloquer les requêtes rpcbind/portmap en entrée ***depuis l'extérieur*** : 
 +-A INPUT -i br2 -p tcp -m multiport --dport 2049 -j ACCEPT 
 +-A INPUT -i br2 -p tcp -m multiport --dport 111 -j ACCEPT 
 +-A INPUT -p tcp -s ::1/128  --dport 111 -j ACCEPT 
 +-A INPUT -p udp --dport 111 -j DROP 
 +-A INPUT -p tcp --dport 111 -j DROP 
 +# Accepter les requêtes Zabbix passives (port 10050) depuis les VM : 
 +-A INPUT -i br2 -p tcp -m tcp -m multiport --dports 10050 -j ACCEPT 
 +# On accepte l'ICMPv6 indispensable au fonctionnement d'IPv6 : 
 +-A INPUT -p icmpv6 --icmpv6-type parameter-problem -j ACCEPT 
 +-A INPUT -p icmpv6 --icmpv6-type echo-request -j ACCEPT 
 +-A INPUT -p icmpv6 --icmpv6-type echo-reply -j ACCEPT 
 +-A INPUT -p icmpv6 --icmpv6-type router-advertisement -m hl --hl-eq 255 -j ACCEPT 
 +-A INPUT -p icmpv6 --icmpv6-type router-solicitation -m hl --hl-eq 255 -j ACCEPT 
 +-A INPUT -p icmpv6 --icmpv6-type neighbour-advertisement -m hl --hl-eq 255 -j ACCEPT 
 +-A INPUT -p icmpv6 --icmpv6-type neighbour-solicitation -m hl --hl-eq 255 -j ACCEPT 
 +# On refuse les trop nombreux ping : 
 +-A INPUT  -p icmpv6 --icmpv6-type echo-request -m conntrack --ctstate NEW -m limit --limit 1/s --limit-burst 1 -j ACCEPT 
 +-A INPUT  -p icmpv6 --icmpv6-type echo-request -j DROP 
 +# On refuse tout le reste en entrée : 
 +-A INPUT -m conntrack --ctstate INVALID -j DROP 
 +-A INPUT -j REJECT 
 +# Accepter les connexions établies sur le LAN : 
 +-A FORWARD -d 2a01:4f8:231:aa6::/64 -o br2 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT 
 +# Accepter le trafic sortant depuis le LAN : 
 +-A FORWARD -s 2a01:4f8:231:aa6::/64 -i br2 -j ACCEPT 
 +# Accepter le trafic interne entre les VM : 
 +-A FORWARD -i br2 -o br2 -j ACCEPT 
 +# Accepter les paquets redirigés vers des ports particuliers pour le Web vers le serveur web : 
 +-A FORWARD -d 2a01:4f8:231:aa6::5 -o br2 -p tcp -m tcp --syn -m conntrack --ctstate NEW -m multiport --dports 80,443 -j ACCEPT 
 +# Accepter les paquets redirigés vers des ports particuliers pour le mail vers le serveur mail : 
 +-A FORWARD -d 2a01:4f8:231:aa6::7 -o br2 -p tcp -m tcp --syn -m conntrack --ctstate NEW -m multiport --dports 587,993,25 -j ACCEPT 
 +# Accepter les paquets redirigés vers des ports particuliers pour Zabbix tcp 8484 vers le serveur monitoring : 
 +-A FORWARD -d 2a01:4f8:231:aa6::250 -o br2 -p tcp -m tcp --syn -m conntrack --ctstate NEW -m multiport --dports 8484 -j ACCEPT 
 +# On bloque TOUT le trafic en provenance de Meta/Facebook/Instagram/Threads : 
 +-A INPUT -s 2620:0:1c00::/40 -j DROP 
 +-A INPUT -s 2620:10d:c090::/44 -j DROP 
 +-A INPUT -s 2a03:2880::/32 -j DROP 
 +-A INPUT -s 2a03:2887:ff02::/47 -j DROP 
 +-A INPUT -s 2a03:2887:ff19::/48 -j DROP 
 +-A INPUT -s 2a03:2887:ff1b::/48 -j DROP 
 +-A INPUT -s 2a03:2887:ff1c::/46 -j DROP 
 +-A INPUT -s 2a03:2887:ff23::/48 -j DROP 
 +-A INPUT -s 2a03:2887:ff25::/48 -j DROP 
 +-A INPUT -s 2a03:2887:ff27::/48 -j DROP 
 +-A INPUT -s 2a03:2887:ff28::/46 -j DROP 
 +-A INPUT -s 2a03:2887:ff2f::/48 -j DROP 
 +-A INPUT -s 2a03:2887:ff30::/48 -j DROP 
 +-A INPUT -s 2a03:2887:ff35::/48 -j DROP 
 +-A INPUT -s 2a03:2887:ff37::/48 -j DROP 
 +-A INPUT -s 2a03:2887:ff38::/46 -j DROP 
 +-A INPUT -s 2a03:2887:ff3f::/48 -j DROP 
 +-A INPUT -s 2a03:2887:ff40::/48 -j DROP 
 +-A INPUT -s 2a03:2887:ff43::/48 -j DROP 
 +-A INPUT -s 2a03:2887:ff44::/47 -j DROP 
 +-A INPUT -s 2a03:2887:ff48::/46 -j DROP 
 +-A INPUT -s 2a03:2887:ff4d::/48 -j DROP 
 +-A INPUT -s 2a03:2887:ff4e::/47 -j DROP 
 +-A INPUT -s 2a03:2887:ff50::/47 -j DROP 
 +-A INPUT -s 2a03:2887:ff52::/48 -j DROP 
 +-A INPUT -s 2a03:2887:ff58::/47 -j DROP 
 +-A INPUT -s 2c0f:ef78:3::/48 -j DROP 
 +-A INPUT -s 2c0f:ef78:5::/48 -j DROP 
 +-A INPUT -s 2c0f:ef78:6::/48 -j DROP 
 +-A INPUT -s 2c0f:ef78:9::/48 -j DROP 
 +-A INPUT -s 2c0f:ef78:d::/48 -j DROP 
 +-A INPUT -s 2c0f:ef78:e::/47 -j DROP 
 +-A INPUT -s 2c0f:ef78:11::/48 -j DROP 
 +-A INPUT -s 2c0f:ef78:12::/48 -j DROP 
 +# Rejeter tout le reste : 
 +-A FORWARD -i br2 -j REJECT 
 +-A FORWARD -o br2 -j REJECT 
 +COMMIT 
 +</code>
 ==== Paquets installés ==== ==== Paquets installés ====
 +
 Pour virtualiser, il a fallu installer en particulier libvirt-daemon, qemu et zfsutils-linux ainsi que bridge-utils pour créer nos réseaux internes virtuels. Pour virtualiser, il a fallu installer en particulier libvirt-daemon, qemu et zfsutils-linux ainsi que bridge-utils pour créer nos réseaux internes virtuels.
 La liste des paquets : La liste des paquets :
 +
 <code> <code>
-root@hypervisor-01 ~ # dpkg -l | grep '^i' |awk '{ print $2 }' | sed '/^$/d'| sort+# dpkg -l | grep '^i' |awk '{ print $2 }' | sed '/^$/d'| sort 
 +acl 
 +acpid
 adduser adduser
 adwaita-icon-theme adwaita-icon-theme
 amd64-microcode amd64-microcode
-apparmor 
 apt apt
-apt-file 
 aptitude aptitude
 aptitude-common aptitude-common
 apt-utils apt-utils
-at-spi2-core +at 
-attr +at-spi2-common
-augeas-lenses+
 base-files base-files
 base-passwd base-passwd
 bash bash
 bash-completion bash-completion
 +bind9-dnsutils
 bind9-host bind9-host
 +bind9-libs:amd64
 binutils binutils
 binutils-common:amd64 binutils-common:amd64
 binutils-x86-64-linux-gnu binutils-x86-64-linux-gnu
-bolt 
 bridge-utils bridge-utils
-bsdmainutils+bsdextrautils
 bsdutils bsdutils
 btrfs-progs btrfs-progs
-build-essential 
 busybox busybox
 bzip2 bzip2
 ca-certificates ca-certificates
-ceph-common 
-ceph-fuse 
-cifs-utils 
 console-setup console-setup
 console-setup-linux console-setup-linux
 coreutils coreutils
-corosync 
 cpio cpio
 cpp cpp
-cpp-8 +cpp-10 
-cpufrequtils+cpp-12
 cron cron
 +cron-daemon-common
 +cryptsetup
 cryptsetup-bin cryptsetup-bin
-cryptsetup-run+cryptsetup-initramfs
 curl curl
 dash dash
 dbus dbus
 +dbus-bin
 +dbus-daemon
 +dbus-session-bus-common
 +dbus-system-bus-common
 dbus-user-session dbus-user-session
 dconf-gsettings-backend:amd64 dconf-gsettings-backend:amd64
Ligne 91: Ligne 445:
 debianutils debianutils
 diffutils diffutils
-dirmngr 
 discover discover
 discover-data discover-data
Ligne 99: Ligne 452:
 dmidecode dmidecode
 dmsetup dmsetup
 +dnsmasq
 dnsmasq-base dnsmasq-base
-dns-root-data+dnsutils
 dosfstools dosfstools
 dpkg dpkg
 dpkg-dev dpkg-dev
 e2fsprogs e2fsprogs
-ebtables 
 efibootmgr efibootmgr
-eject 
 ethtool ethtool
-exim4-base 
-exim4-config 
-exim4-daemon-light 
-exuberant-ctags 
 fail2ban fail2ban
-fakeroot 
 fdisk fdisk
 file file
 findutils findutils
 firmware-bnx2x firmware-bnx2x
-firmware-linux-free 
-firmware-realtek 
 fontconfig fontconfig
 fontconfig-config fontconfig-config
 fonts-dejavu-core fonts-dejavu-core
-fuse 
-fwupd 
-fwupd-amd64-signed 
-g++ 
-g++-8 
 gcc gcc
-gcc-8 +gcc-10 
-gcc-8-base:amd64+gcc-10-base:amd64 
 +gcc-11-base:amd64 
 +gcc-12 
 +gcc-12-base:amd64 
 +gcc-9-base:amd64
 gdisk gdisk
-genisoimage 
-geoip-database 
 gettext-base gettext-base
-gir1.2-freedesktop:amd64 
-gir1.2-glib-2.0:amd64 
-gir1.2-libosinfo-1.0:amd64 
-glib-networking:amd64 
-glib-networking-common 
-glib-networking-services 
-glusterfs-common 
-gnupg 
-gnupg-l10n 
-gnupg-utils 
-gpg 
-gpg-agent 
-gpgconf 
-gpgsm 
 gpgv gpgv
-gpg-wks-client 
-gpg-wks-server 
 grep grep
 groff-base groff-base
 grub2-common grub2-common
 grub-common grub-common
 +grub-efi-amd64
 grub-efi-amd64-bin grub-efi-amd64-bin
-grub-pc 
 grub-pc-bin grub-pc-bin
-gsettings-desktop-schemas 
-gstreamer1.0-libav:amd64 
-gstreamer1.0-plugins-base:amd64 
-gstreamer1.0-plugins-good:amd64 
-gstreamer1.0-plugins-ugly:amd64 
-gstreamer1.0-x:amd64 
 gtk-update-icon-cache gtk-update-icon-cache
-guile-2.2-libs:amd64 
 gzip gzip
-haveged 
-hdparm 
 hicolor-icon-theme hicolor-icon-theme
 hostname hostname
 htop htop
-i965-va-driver:amd64 
-ibverbs-providers:amd64 
-ifenslave 
 iftop iftop
 ifupdown ifupdown
 +inetutils-telnet
 init init
 initramfs-tools initramfs-tools
 initramfs-tools-core initramfs-tools-core
 init-system-helpers init-system-helpers
-installation-report 
-intel-media-va-driver:amd64 
 intel-microcode intel-microcode
 iotop iotop
-iperf+ipcalc-ng
 iproute2 iproute2
-ipset 
 iptables iptables
 iptables-persistent iptables-persistent
-iputils-clockdiff 
 iputils-ping iputils-ping
-iputils-tracepath 
 ipxe-qemu ipxe-qemu
-irqbalance 
 isc-dhcp-client isc-dhcp-client
 isc-dhcp-common isc-dhcp-common
 iso-codes iso-codes
 iucode-tool iucode-tool
-javascript-common 
 kbd kbd
 keyboard-configuration keyboard-configuration
Ligne 207: Ligne 515:
 klibc-utils klibc-utils
 kmod kmod
-kpartx 
-krb5-locales 
 laptop-detect laptop-detect
 less less
-liba52-0.7.4:amd64 
-libaa1:amd64 
-libaacs0:amd64 
 libacl1:amd64 libacl1:amd64
-libacl1-dev:amd64 
 libaio1:amd64 libaio1:amd64
-libalgorithm-diff-perl 
-libalgorithm-diff-xs-perl 
-libalgorithm-merge-perl 
-libaom0:amd64 
 libapparmor1:amd64 libapparmor1:amd64
-libapt-inst2.0:amd64 +libapt-pkg6.0:amd64
-libapt-pkg5.0:amd64 +
-libapt-pkg-perl +
-libarchive13:amd64+
 libargon2-1:amd64 libargon2-1:amd64
-libasan5:amd64+libasan6:amd64 
 +libasan8:amd64
 libasound2:amd64 libasound2:amd64
 libasound2-data libasound2-data
-libass9:amd64 
-libassuan0:amd64 
 libasyncns0:amd64 libasyncns0:amd64
 libatk1.0-0:amd64 libatk1.0-0:amd64
-libatk1.0-data 
 libatk-bridge2.0-0:amd64 libatk-bridge2.0-0:amd64
 libatomic1:amd64 libatomic1:amd64
 libatspi2.0-0:amd64 libatspi2.0-0:amd64
 libattr1:amd64 libattr1:amd64
-libattr1-dev:amd64 
 libaudit1:amd64 libaudit1:amd64
 libaudit-common libaudit-common
-libaugeas0:amd64 
-libauthen-sasl-perl 
 libavahi-client3:amd64 libavahi-client3:amd64
 libavahi-common3:amd64 libavahi-common3:amd64
 libavahi-common-data:amd64 libavahi-common-data:amd64
-libavc1394-0:amd64 
-libavcodec58:amd64 
-libavfilter7:amd64 
-libavformat58:amd64 
-libavutil56:amd64 
-libbabeltrace1:amd64 
-libbdplus0:amd64 
-libbind9-161:amd64 
 libbinutils:amd64 libbinutils:amd64
 libblkid1:amd64 libblkid1:amd64
-libbluetooth3:amd64 +libboost-iostreams1.74.0:amd64 
-libbluray2:amd64 +libbpf0:amd64 
-libboost-atomic1.67.0:amd64 +libbpf1:amd64 
-libboost-iostreams1.67.0:amd64 +libbrlapi0.8:amd64 
-libboost-program-options1.67.0:amd64 +libbrotli1:amd64
-libboost-regex1.67.0:amd64 +
-libboost-system1.67.0:amd64 +
-libboost-thread1.67.0:amd64 +
-libbrlapi0.6:amd64 +
-libbs2b0:amd64+
 libbsd0:amd64 libbsd0:amd64
-libbytes-random-secure-perl 
 libbz2-1.0:amd64 libbz2-1.0:amd64
 libc6:amd64 libc6:amd64
 libc6-dev:amd64 libc6-dev:amd64
-libcaca0:amd64 
 libcacard0:amd64 libcacard0:amd64
 libcairo2:amd64 libcairo2:amd64
Ligne 279: Ligne 554:
 libcap2-bin libcap2-bin
 libcap-ng0:amd64 libcap-ng0:amd64
-libcapstone3:amd64+libcapstone4:amd64
 libc-bin libc-bin
 +libcbor0.8:amd64
 libcc1-0:amd64 libcc1-0:amd64
 libc-dev-bin libc-dev-bin
-libcdio18:amd64 
-libcdparanoia0:amd64 
-libcephfs2:amd64 
-libcfg7:amd64 
-libchromaprint1:amd64 
 libc-l10n libc-l10n
-libcmap4:amd64 
-libcodec2-0.8.1:amd64 
 libcolord2:amd64 libcolord2:amd64
 libcom-err2:amd64 libcom-err2:amd64
-libcommon-sense-perl +libcrypt1:amd64 
-libconvert-asn1-perl +libcrypt-dev:amd64
-libcorosync-common4:amd64 +
-libcpg4:amd64 +
-libcpufreq0 +
-libcroco3:amd64 +
-libcrypt-random-seed-perl+
 libcryptsetup12:amd64 libcryptsetup12:amd64
-libcrypt-ssleay-perl +libctf0:amd64 
-libcrystalhd3:amd64+libctf-nobfd0:amd64
 libcups2:amd64 libcups2:amd64
 libcurl3-gnutls:amd64 libcurl3-gnutls:amd64
 libcurl4:amd64 libcurl4:amd64
-libcwidget3v5:amd64 +libcwidget4:amd64
-libdata-dump-perl+
 libdatrie1:amd64 libdatrie1:amd64
 +libdaxctl1:amd64
 libdb5.3:amd64 libdb5.3:amd64
-libdbi1:amd64 
 libdbus-1-3:amd64 libdbus-1-3:amd64
 libdconf1:amd64 libdconf1:amd64
 libdebconfclient0:amd64 libdebconfclient0:amd64
 +libdecor-0-0:amd64
 +libdeflate0:amd64
 libdevmapper1.02.1:amd64 libdevmapper1.02.1:amd64
 libdevmapper-event1.02.1:amd64 libdevmapper-event1.02.1:amd64
-libdigest-hmac-perl 
 libdiscover2 libdiscover2
-libdns1104:amd64 +libdns-export1110
-libdns-export1104+
 libdpkg-perl libdpkg-perl
 libdrm2:amd64 libdrm2:amd64
Ligne 327: Ligne 590:
 libdrm-nouveau2:amd64 libdrm-nouveau2:amd64
 libdrm-radeon1:amd64 libdrm-radeon1:amd64
-libdv4:amd64 +libduktape207:amd64
-libdvdnav4:amd64 +
-libdvdread4:amd64+
 libdw1:amd64 libdw1:amd64
 libedit2:amd64 libedit2:amd64
Ligne 335: Ligne 596:
 libefivar1:amd64 libefivar1:amd64
 libelf1:amd64 libelf1:amd64
-libelf-dev:amd64 
-libencode-locale-perl 
 libepoxy0:amd64 libepoxy0:amd64
 libestr0:amd64 libestr0:amd64
-libevent-2.1-6:amd64+libevent-core-2.1-7:amd64 
 +libexecs0:amd64
 libexpat1:amd64 libexpat1:amd64
-libexporter-tiny-perl 
 libext2fs2:amd64 libext2fs2:amd64
-libfakeroot:amd64 
 libfastjson4:amd64 libfastjson4:amd64
 libfdisk1:amd64 libfdisk1:amd64
 libfdt1:amd64 libfdt1:amd64
-libffi6:amd64 +libffi7:amd64 
-libfftw3-double3:amd64 +libffi8:amd64 
-libfile-fcntllock-perl +libfido2-1:amd64 
-libfile-listing-perl +libfile-find-rule-perl 
-libflac8:amd64 +libflac12:amd64
-libflite1:amd64 +
-libfont-afm-perl+
 libfontconfig1:amd64 libfontconfig1:amd64
 libfreetype6:amd64 libfreetype6:amd64
Ligne 359: Ligne 615:
 libfstrm0:amd64 libfstrm0:amd64
 libfuse2:amd64 libfuse2:amd64
-libfwupd2:amd64+libfuse3-3:amd64
 libgbm1:amd64 libgbm1:amd64
-libgc1c2:amd64 +libgcc-10-dev:amd64 
-libgcab-1.0-0:amd64 +libgcc-12-dev:amd64 
-libgcc1:amd64 +libgcc-s1:amd64
-libgcc-8-dev:amd64+
 libgcrypt20:amd64 libgcrypt20:amd64
 libgdbm6:amd64 libgdbm6:amd64
 libgdbm-compat4:amd64 libgdbm-compat4:amd64
-libgdk-pixbuf2.0-0:amd64 +libgdk-pixbuf-2.0-0:amd64
-libgdk-pixbuf2.0-bin+
 libgdk-pixbuf2.0-common libgdk-pixbuf2.0-common
-libgeoip1:amd64 
-libgfapi0:amd64 
-libgfchangelog0:amd64 
-libgfdb0:amd64 
-libgfrpc0:amd64 
-libgfxdr0:amd64 
-libgirepository-1.0-1:amd64 
 libgl1:amd64 libgl1:amd64
 libgl1-mesa-dri:amd64 libgl1-mesa-dri:amd64
 libglapi-mesa:amd64 libglapi-mesa:amd64
 libglib2.0-0:amd64 libglib2.0-0:amd64
-libglusterfs0:amd64 
-libglusterfs-dev 
 libglvnd0:amd64 libglvnd0:amd64
 libglx0:amd64 libglx0:amd64
 libglx-mesa0:amd64 libglx-mesa0:amd64
-libgme0:amd64 
 libgmp10:amd64 libgmp10:amd64
 libgnutls30:amd64 libgnutls30:amd64
-libgnutls-dane0:amd64 
 libgomp1:amd64 libgomp1:amd64
-libgoogle-perftools4:amd64 
-libgovirt2:amd64 
-libgovirt-common 
 libgpg-error0:amd64 libgpg-error0:amd64
-libgpgme11:amd64 
 libgpm2:amd64 libgpm2:amd64
 +libgprofng0:amd64
 libgraphite2-3:amd64 libgraphite2-3:amd64
-libgsasl7 
-libgsm1:amd64 
 libgssapi-krb5-2:amd64 libgssapi-krb5-2:amd64
-libgssapi-perl 
 libgstreamer1.0-0:amd64 libgstreamer1.0-0:amd64
 libgstreamer-plugins-base1.0-0:amd64 libgstreamer-plugins-base1.0-0:amd64
 libgtk-3-0:amd64 libgtk-3-0:amd64
-libgtk-3-bin 
 libgtk-3-common libgtk-3-common
-libgtk-vnc-2.0-0:amd64 
-libgudev-1.0-0:amd64 
-libgusb2:amd64 
-libgvnc-1.0-0:amd64 
 libharfbuzz0b:amd64 libharfbuzz0b:amd64
-libhavege1:amd64 +libhogweed6:amd64
-libhogweed4:amd64 +
-libhtml-format-perl +
-libhtml-form-perl +
-libhtml-parser-perl +
-libhtml-tagset-perl +
-libhtml-tree-perl +
-libhttp-cookies-perl +
-libhttp-daemon-perl +
-libhttp-date-perl +
-libhttp-message-perl +
-libhttp-negotiate-perl+
 libibverbs1:amd64 libibverbs1:amd64
-libice6:amd64 +libicu72:amd64
-libicu63:amd64 +
-libidn11:amd64+
 libidn2-0:amd64 libidn2-0:amd64
-libiec61883-0:amd64 +libinih1:amd64 
-libigdgmm5:amd64 +libip4tc2:amd64 
-libio-html-perl +libip6tc2:amd64 
-libio-socket-ssl-perl +libisc-export1105:amd64 
-libip4tc0:amd64 +libisl23:amd64
-libip6tc0:amd64 +
-libipset11:amd64 +
-libiptc0:amd64 +
-libisc1100:amd64 +
-libisccc161:amd64 +
-libisccfg163:amd64 +
-libisc-export1100:amd64 +
-libisl19:amd64 +
-libisns0:amd64+
 libitm1:amd64 libitm1:amd64
 libjack-jackd2-0:amd64 libjack-jackd2-0:amd64
 libjansson4:amd64 libjansson4:amd64
 libjbig0:amd64 libjbig0:amd64
 +libjemalloc2:amd64
 libjpeg62-turbo:amd64 libjpeg62-turbo:amd64
-libjson-c3:amd64 +libjson-c5:amd64
-libjson-glib-1.0-0:amd64 +
-libjson-glib-1.0-common +
-libjson-perl +
-libjson-xs-perl+
 libk5crypto3:amd64 libk5crypto3:amd64
 libkeyutils1:amd64 libkeyutils1:amd64
 libklibc:amd64 libklibc:amd64
 libkmod2:amd64 libkmod2:amd64
-libknet1:amd64 
 libkrb5-3:amd64 libkrb5-3:amd64
 libkrb5support0:amd64 libkrb5support0:amd64
-libksba8:amd64 
-libkyotocabinet16v5:amd64 
 liblcms2-2:amd64 liblcms2-2:amd64
-libldap-2.4-2:amd64+libldap-2.5-0:amd64
 libldap-common libldap-common
-libldb1:amd64 +liblerc4:amd64 
-liblilv-0-0:amd64 +libllvm15:amd64
-liblist-moreutils-perl +
-libllvm7:amd64+
 liblmdb0:amd64 liblmdb0:amd64
 liblocale-gettext-perl liblocale-gettext-perl
 +liblockfile-bin
 liblognorm5:amd64 liblognorm5:amd64
 liblsan0:amd64 liblsan0:amd64
-libltdl7:amd64 
 liblvm2cmd2.03:amd64 liblvm2cmd2.03:amd64
-liblwp-mediatypes-perl 
-liblwp-protocol-https-perl 
-liblwres161:amd64 
 liblz4-1:amd64 liblz4-1:amd64
 liblzma5:amd64 liblzma5:amd64
Ligne 484: Ligne 683:
 libmagic1:amd64 libmagic1:amd64
 libmagic-mgc libmagic-mgc
-libmailtools-perl +libmaxminddb0:amd64 
-libmailutils5:amd64 +libmd0:amd64
-libmariadb3:amd64 +
-libmath-random-isaac-perl +
-libmath-random-isaac-xs-perl+
 libmnl0:amd64 libmnl0:amd64
 libmount1:amd64 libmount1:amd64
 libmp3lame0:amd64 libmp3lame0:amd64
 libmpc3:amd64 libmpc3:amd64
-libmpdec2:amd64 
-libmpeg2-4:amd64 
 libmpfr6:amd64 libmpfr6:amd64
 libmpg123-0:amd64 libmpg123-0:amd64
-libmpx2:amd64 
-libmysofa0:amd64 
 libncurses6:amd64 libncurses6:amd64
 libncursesw6:amd64 libncursesw6:amd64
-libnetcf1+libndctl6:amd64
 libnetfilter-conntrack3:amd64 libnetfilter-conntrack3:amd64
-libnet-http-perl +libnettle8:amd64
-libnet-ldap-perl +
-libnet-libidn-perl +
-libnet-smtp-ssl-perl +
-libnet-ssleay-perl +
-libnettle6:amd64+
 libnewt0.52:amd64 libnewt0.52:amd64
 libnfnetlink0:amd64 libnfnetlink0:amd64
-libnfsidmap2:amd64+libnfsidmap1:amd64 
 +libnftables1:amd64
 libnftnl11:amd64 libnftnl11:amd64
 libnghttp2-14:amd64 libnghttp2-14:amd64
 libnl-3-200:amd64 libnl-3-200:amd64
 +libnl-genl-3-200:amd64
 libnl-route-3-200:amd64 libnl-route-3-200:amd64
-libnorm1:amd64 +libnsl2:amd64 
-libnpth0:amd64+libnsl-dev:amd64
 libnspr4:amd64 libnspr4:amd64
 libnss3:amd64 libnss3:amd64
-libntlm0:amd64+libnss-systemd:amd64
 libnuma1:amd64 libnuma1:amd64
-libnvpair1linux+libnumber-compare-perl 
 +libnvpair3linux
 libogg0:amd64 libogg0:amd64
-libopencore-amrnb0:amd64 
-libopencore-amrwb0:amd64 
-libopenjp2-7:amd64 
-libopenmpt0:amd64 
 libopus0:amd64 libopus0:amd64
 liborc-0.4-0:amd64 liborc-0.4-0:amd64
-libosinfo-1.0-0:amd64 
 libp11-kit0:amd64 libp11-kit0:amd64
 libpam0g:amd64 libpam0g:amd64
Ligne 547: Ligne 732:
 libpcre3:amd64 libpcre3:amd64
 libpcsclite1:amd64 libpcsclite1:amd64
-libperl5.28:amd64 +libperl5.36:amd64
-libpgm-5.2-0:amd64 +
-libphodav-2.0-0:amd64 +
-libphodav-2.0-common+
 libpipeline1:amd64 libpipeline1:amd64
 libpixman-1-0:amd64 libpixman-1-0:amd64
 +libpmem1:amd64
 libpng16-16:amd64 libpng16-16:amd64
 libpolkit-agent-1-0:amd64 libpolkit-agent-1-0:amd64
-libpolkit-backend-1-0:amd64 
 libpolkit-gobject-1-0:amd64 libpolkit-gobject-1-0:amd64
 libpopt0:amd64 libpopt0:amd64
-libpostproc55:amd64 +libproc2-0:amd64 
-libprocps7:amd64+libprocps8:amd64
 libprotobuf-c1:amd64 libprotobuf-c1:amd64
-libproxy1v5:amd64 
 libpsl5:amd64 libpsl5:amd64
 libpulse0:amd64 libpulse0:amd64
-libpulse-mainloop-glib0:amd64 +libpython3.11-minimal:amd64 
-libpython2.7:amd64 +libpython3.11-stdlib:amd64
-libpython2.7-minimal:amd64 +
-libpython2.7-stdlib:amd64 +
-libpython2-stdlib:amd64 +
-libpython3.7:amd64 +
-libpython3.7-minimal:amd64 +
-libpython3.7-stdlib:amd64+
 libpython3-stdlib:amd64 libpython3-stdlib:amd64
-libpython-stdlib:amd64 
-libqb0:amd64 
 libquadmath0:amd64 libquadmath0:amd64
-libquorum5:amd64 
-librados2:amd64 
-libradosstriper1:amd64 
-libraw1394-11:amd64 
-librbd1:amd64 
 librdmacm1:amd64 librdmacm1:amd64
-libreadline5:amd64 +libreadline8:amd64
-libreadline7:amd64 +
-libregexp-assemble-perl +
-librest-0.7-0:amd64 +
-librrd8:amd64 +
-librsvg2-2:amd64 +
-librsvg2-common:amd64+
 librtmp1:amd64 librtmp1:amd64
-librubberband2:amd64 
 libsamplerate0:amd64 libsamplerate0:amd64
 libsasl2-2:amd64 libsasl2-2:amd64
 +libsasl2-modules:amd64
 libsasl2-modules-db:amd64 libsasl2-modules-db:amd64
 +libsdl2-2.0-0:amd64
 libseccomp2:amd64 libseccomp2:amd64
 libselinux1:amd64 libselinux1:amd64
-libsemanage1:amd64+libsemanage2:amd64
 libsemanage-common libsemanage-common
 libsensors5:amd64 libsensors5:amd64
 libsensors-config libsensors-config
 libsepol1:amd64 libsepol1:amd64
-libserd-0-0:amd64 +libsepol2:amd64
-libshine3:amd64 +
-libshout3:amd64 +
-libsidplay1v5:amd64+
 libsigc++-2.0-0v5:amd64 libsigc++-2.0-0v5:amd64
 libslang2:amd64 libslang2:amd64
-libsm6:amd64+libslirp0:amd64
 libsmartcols1:amd64 libsmartcols1:amd64
-libsmbios-c2 
-libsnappy1v5:amd64 
 libsndfile1:amd64 libsndfile1:amd64
 +libsndio7.0:amd64
 libsodium23:amd64 libsodium23:amd64
-libsord-0-0:amd64 
-libsoup2.4-1:amd64 
-libsoup-gnome2.4-1:amd64 
-libsoxr0:amd64 
-libspeex1:amd64 
-libspice-client-glib-2.0-8:amd64 
-libspice-client-gtk-3.0-5:amd64 
 libspice-server1:amd64 libspice-server1:amd64
 libsqlite3-0:amd64 libsqlite3-0:amd64
-libsratom-0-0:amd64 
 libss2:amd64 libss2:amd64
 libssh2-1:amd64 libssh2-1:amd64
-libssh-gcrypt-4:amd64+libssh-4:amd64
 libssl1.1:amd64 libssl1.1:amd64
-libstatgrab10+libssl3:amd64
 libstdc++6:amd64 libstdc++6:amd64
-libstdc++-8-dev:amd64 
-libswresample3:amd64 
-libswscale5:amd64 
 libsystemd0:amd64 libsystemd0:amd64
-libtag1v5:amd64 +libsystemd-shared:amd64
-libtag1v5-vanilla:amd64 +
-libtalloc2:amd64+
 libtasn1-6:amd64 libtasn1-6:amd64
-libtcmalloc-minimal4:amd64 +libtext-charwidth-perl:amd64 
-libtdb1:amd64 +libtext-glob-perl 
-libterm-readline-gnu-perl +libtext-iconv-perl:amd64
-libtevent0:amd64 +
-libtext-charwidth-perl +
-libtext-iconv-perl+
 libtext-wrapi18n-perl libtext-wrapi18n-perl
 libthai0:amd64 libthai0:amd64
 libthai-data libthai-data
-libtheora0:amd64 +libtiff6:amd64
-libtiff5:amd64 +
-libtimedate-perl+
 libtinfo6:amd64 libtinfo6:amd64
 libtirpc3:amd64 libtirpc3:amd64
 libtirpc-common libtirpc-common
-libtry-tiny-perl+libtirpc-dev:amd64
 libtsan0:amd64 libtsan0:amd64
-libtss2-esys0 +libtsan2:amd64
-libtss2-udev +
-libtwolame0:amd64 +
-libtypes-serialiser-perl+
 libubsan1:amd64 libubsan1:amd64
 libuchardet0:amd64 libuchardet0:amd64
 libudev1:amd64 libudev1:amd64
-libunbound8:amd64 
 libunistring2:amd64 libunistring2:amd64
 libunwind8:amd64 libunwind8:amd64
-liburcu6:amd64 +liburcu8:amd64 
-liburi-perl +liburing2:amd64
-libusb-0.1-4:amd64+
 libusb-1.0-0:amd64 libusb-1.0-0:amd64
-libusbredirhost1:amd64 
 libusbredirparser1:amd64 libusbredirparser1:amd64
-libutempter0:amd64 
 libuuid1:amd64 libuuid1:amd64
-libuutil1linux +libuutil3linux 
-libv4l-0:amd64 +libuv1:amd64
-libv4lconvert0:amd64+
 libva2:amd64 libva2:amd64
 libva-drm2:amd64 libva-drm2:amd64
-libva-x11-2:amd64 +libvdeplug2:amd64 
-libvdeplug2 +libvirglrenderer1:amd64
-libvdpau1:amd64 +
-libvdpau-va-gl1:amd64 +
-libvidstab1.1:amd64 +
-libvirglrenderer0:amd64+
 libvirt0:amd64 libvirt0:amd64
 libvirt-clients libvirt-clients
 libvirt-daemon libvirt-daemon
 +libvirt-daemon-config-network
 +libvirt-daemon-config-nwfilter
 +libvirt-daemon-driver-qemu
 libvirt-daemon-system libvirt-daemon-system
-libvirt-glib-1.0-0:amd64 +libvirt-daemon-system-systemd
-libvisual-0.4-0:amd64+
 libvorbis0a:amd64 libvorbis0a:amd64
 libvorbisenc2:amd64 libvorbisenc2:amd64
-libvorbisfile3:amd64 
-libvotequorum8:amd64 
-libvpx5:amd64 
 libvte-2.91-0:amd64 libvte-2.91-0:amd64
 libvte-2.91-common libvte-2.91-common
-libwavpack1:amd64+libvulkan1:amd64
 libwayland-client0:amd64 libwayland-client0:amd64
 libwayland-cursor0:amd64 libwayland-cursor0:amd64
 libwayland-egl1:amd64 libwayland-egl1:amd64
 libwayland-server0:amd64 libwayland-server0:amd64
-libwbclient0:amd64 +libwebp7:amd64
-libwebp6:amd64 +
-libwebpmux3:amd64+
 libwrap0:amd64 libwrap0:amd64
-libwww-perl 
-libwww-robotrules-perl 
 libx11-6:amd64 libx11-6:amd64
 libx11-data libx11-data
 libx11-xcb1:amd64 libx11-xcb1:amd64
-libx264-155:amd64 
-libx265-165:amd64 
 libxapian30:amd64 libxapian30:amd64
 libxau6:amd64 libxau6:amd64
Ligne 719: Ligne 841:
 libxcb-glx0:amd64 libxcb-glx0:amd64
 libxcb-present0:amd64 libxcb-present0:amd64
 +libxcb-randr0:amd64
 libxcb-render0:amd64 libxcb-render0:amd64
 libxcb-shm0:amd64 libxcb-shm0:amd64
Ligne 727: Ligne 850:
 libxdamage1:amd64 libxdamage1:amd64
 libxdmcp6:amd64 libxdmcp6:amd64
-libxencall1:amd64 
-libxendevicemodel1:amd64 
-libxenevtchn1:amd64 
-libxenforeignmemory1:amd64 
-libxengnttab1:amd64 
-libxenmisc4.11:amd64 
-libxenstore3.0:amd64 
-libxentoolcore1:amd64 
-libxentoollog1:amd64 
 libxext6:amd64 libxext6:amd64
 libxfixes3:amd64 libxfixes3:amd64
Ligne 742: Ligne 856:
 libxkbcommon0:amd64 libxkbcommon0:amd64
 libxml2:amd64 libxml2:amd64
-libxml2-utils 
-libxmlb1:amd64 
-libxml-namespacesupport-perl 
-libxml-parser-perl 
-libxml-sax-base-perl 
-libxml-sax-expat-perl 
-libxml-sax-perl 
 libxrandr2:amd64 libxrandr2:amd64
 libxrender1:amd64 libxrender1:amd64
 libxshmfence1:amd64 libxshmfence1:amd64
-libxslt1.1:amd64+libxss1:amd64
 libxtables12:amd64 libxtables12:amd64
-libxtst6:amd64 
-libxv1:amd64 
-libxvidcore4:amd64 
 libxxf86vm1:amd64 libxxf86vm1:amd64
 +libxxhash0:amd64
 libyajl2:amd64 libyajl2:amd64
-libzfs2linux +libz3-4:amd64 
-libzmq5:amd64 +libzfs4linux 
-libzpool2linux+libzpool5linux
 libzstd1:amd64 libzstd1:amd64
-libzvbi0:amd64 
-libzvbi-common 
 linux-base linux-base
-linux-compiler-gcc-8-x86 +linux-compiler-gcc-10-x86 
-linux-headers-4.19.0-13-amd64 +linux-compiler-gcc-12-x86 
-linux-headers-4.19.0-13-common +linux-headers-5.10.0-15-amd64 
-linux-headers-4.19.0-14-amd64 +linux-headers-5.10.0-15-common 
-linux-headers-4.19.0-14-common+linux-headers-5.10.0-16-amd64 
 +linux-headers-5.10.0-16-common 
 +linux-headers-5.10.0-17-amd64 
 +linux-headers-5.10.0-17-common 
 +linux-headers-5.10.0-18-amd64 
 +linux-headers-5.10.0-18-common 
 +linux-headers-5.10.0-19-amd64 
 +linux-headers-5.10.0-19-common 
 +linux-headers-5.10.0-25-amd64 
 +linux-headers-5.10.0-25-common 
 +linux-headers-6.1.0-12-amd64 
 +linux-headers-6.1.0-12-common
 linux-headers-amd64 linux-headers-amd64
-linux-image-4.19.0-13-amd64 +linux-image-5.10.0-25-amd64 
-linux-image-4.19.0-14-amd64+linux-image-6.1.0-12-amd64
 linux-image-amd64 linux-image-amd64
-linux-kbuild-4.19+linux-kbuild-5.10 
 +linux-kbuild-6.1
 linux-libc-dev:amd64 linux-libc-dev:amd64
 +lm-sensors
 locales locales
 login login
 logrotate logrotate
 +logsave
 lsb-base lsb-base
 lsb-release lsb-release
 lsof lsof
 lvm2 lvm2
-lxcfs +mailcap
-mailutils +
-mailutils-common+
 make make
 man-db man-db
 manpages manpages
-manpages-dev 
-mariadb-common 
 mawk mawk
 +mbuffer
 mdadm mdadm
-mesa-va-drivers:amd64 +media-types
-mesa-vdpau-drivers:amd64+
 mime-support mime-support
 +mokutil
 mount mount
-mysql-common+mtr-tiny
 nano nano
 ncurses-base ncurses-base
Ligne 804: Ligne 918:
 ncurses-term ncurses-term
 netbase netbase
-netcat-openbsd+netcat-traditional
 netfilter-persistent netfilter-persistent
 net-tools net-tools
 nfs-common nfs-common
 nfs-kernel-server nfs-kernel-server
-ntpdate +nftables
-open-iscsi+
 openssh-client openssh-client
 openssh-server openssh-server
 openssh-sftp-server openssh-sftp-server
 openssl openssl
-osinfo-db 
-ovmf 
-parted 
 passwd passwd
 patch patch
 +pci.ids
 pciutils pciutils
 perl perl
 perl-base perl-base
-perl-modules-5.28 +perl-modules-5.36 
-perl-openssl-defaults:amd64 +pkexec
-pinentry-curses+
 policykit-1 policykit-1
-powermgmt-base+polkitd
 procps procps
-psmisc +publicsuffix
-python +
-python2 +
-python2.7 +
-python2.7-minimal +
-python2-minimal+
 python3 python3
-python3.7 +python3.11 
-python3.7-minimal +python3.11-minimal 
-python3-asn1crypto+python3-apt
 python3-certifi python3-certifi
-python3-cffi-backend 
 python3-chardet python3-chardet
-python3-cryptography+python3-charset-normalizer 
 +python3-debian 
 +python3-debianbts
 python3-distutils python3-distutils
-python3-gi+python3-httplib2
 python3-idna python3-idna
-python3-jwt 
 python3-lib2to3 python3-lib2to3
-python3-libvirt 
-python3-libxml2:amd64 
 python3-minimal python3-minimal
 python3-pkg-resources python3-pkg-resources
-python3-prettytable +python3-pycurl 
-python3-pyinotify+python3-pyparsing 
 +python3-pysimplesoap 
 +python3-reportbug
 python3-requests python3-requests
 python3-six python3-six
-python3-systemd 
 python3-urllib3 python3-urllib3
-python-asn1crypto +python-apt-common 
-python-cephfs +python-is-python3
-python-certifi +
-python-cffi-backend +
-python-chardet +
-python-crypto +
-python-cryptography +
-python-enum34 +
-python-gpg +
-python-idna +
-python-ipaddress +
-python-ldb +
-python-minimal +
-python-openssl +
-python-pkg-resources +
-python-prettytable +
-python-rados +
-python-rbd +
-python-requests +
-python-samba +
-python-six +
-python-talloc:amd64 +
-python-tdb +
-python-urllib3 +
-qemu-kvm+
 qemu-system-common qemu-system-common
 qemu-system-data qemu-system-data
Ligne 889: Ligne 970:
 qemu-utils qemu-utils
 readline-common readline-common
-rename+reportbug
 rpcbind rpcbind
-rrdcached+rpcsvc-proto
 rsync rsync
 rsyslog rsyslog
 runit-helper runit-helper
-samba-common 
-samba-common-bin 
-samba-dsdb-modules:amd64 
-samba-libs:amd64 
-screen 
 seabios seabios
 sed sed
Ligne 905: Ligne 981:
 sgml-base sgml-base
 shared-mime-info shared-mime-info
 +shim-helpers-amd64-signed
 +shim-signed:amd64
 +shim-signed-common
 +shim-unsigned
 smartmontools smartmontools
-spice-client-glib-usb-acl-helper 
 spl-dkms spl-dkms
-sqlite3 +sudo
-ssl-cert +
-strace+
 sysstat sysstat
 systemd systemd
 +systemd-container
 systemd-sysv systemd-sysv
 +systemd-timesyncd
 sysvinit-utils sysvinit-utils
 tar tar
Ligne 921: Ligne 1000:
 task-ssh-server task-ssh-server
 tcpdump tcpdump
-telnet +traceroute
-thin-provisioning-tools +
-tpm2-abrmd +
-tpm2-tools+
 tree tree
 tzdata tzdata
 ucf ucf
 udev udev
-ufw +usrmerge
-usb.ids +
-usbutils+
 util-linux util-linux
 +util-linux-extra
 util-linux-locales util-linux-locales
-va-driver-all:amd64 
-vdpau-driver-all:amd64 
 vim vim
 vim-common vim-common
 vim-runtime vim-runtime
 vim-tiny vim-tiny
-virtinst 
-virt-viewer 
 wget wget
 whiptail whiptail
-whois 
 x11-common x11-common
-xdg-user-dirs 
 xfsprogs xfsprogs
 xkb-data xkb-data
 xml-core xml-core
-xsltproc 
 xxd xxd
 xz-utils xz-utils
 +zabbix-agent2
 zfs-dkms zfs-dkms
 zfsutils-linux zfsutils-linux
-zfs-zed 
 zlib1g:amd64 zlib1g:amd64
-zlib1g-dev:amd64+znapzend 
 +zstd
 </code> </code>
 +==== Stockage ZFS ====
  
-==== Adressage IP ==== +Un « pool » sur les 2 gros disques mécaniques a été créé en miroir (RAID1)Si vous vous demandez pourquoi nous n'avons pas créé de RAIDZ*RAID5, RAID10, etc., vous pouvez jeter un coup d'oeil à [[https://jrs-s.net/2015/02/06/zfs-you-should-use-mirror-vdevs-not-raidz/|ce très bon article]].
-Hetzner offre une IP publiqueNous avons modifié l'adressage pour créer 2 réseaux internes : un pour les machines virtuelles et un pour notre administrationpuis on bridgé le réseau des VM sur le réseau adressé avec l'IP publiqueL'interface enp0trucmachin est devenue br0. La ligne « pre-up » corrige notamment un problème connu d'instabilité de connexion sur la carte réseau de ce serveur.+
  
-L'adressage du réseau d'administration (10.X.X.X) a été masqué pour des raisons de sécurité.+Nous avons décidé d'offrir un maximum de 4 Go à l'ARC, le cache adaptatif de ZFS :
  
-<code> +<code bash
-root@hypervisor-01 ~ # cat /etc/network/interfaces +echo 4294967296 >> /sys/module/zfs/parameters/zfs_arc_max 
-### Hetzner Online GmbH installimage+</code>
  
-source /etc/network/interfaces.d/*+<code bash> 
 +root@hypervisor-01 ~ # cat /etc/modprobe.d/zfs.conf  
 +options zfs zfs_arc_max=4294967296 
 +</code>
  
-auto lo +Nous avons ensuite créé un « pool » avec les numéros de série des disques (qu'on trouve dans ''/dev/disk/by-id''), avons activé la compression LZ4 et avons créé un ensemble de partages ZFS pour stocker les disques durs virtuels des VM (le partage ''prod-01''), et sur d'autres partages les données de hébergé⋅e⋅s, etc. qu'on montera plus tard dans chaque VM en NFS :
-iface lo inet loopback +
-iface lo inet6 loopback+
  
-#auto enp0s31f6 +<code bash> 
-#iface enp0s31f6 inet static +zpool status -v 
- address 159.69.59.13 +  pool: zdata 
-#  netmask 255.255.255.192 + state: ONLINE 
- gateway 159.69.59.1 +  scan: scrub repaired 0B in 05:42:22 with errors on Sun Aug 14 06:06:23 2022 
-#  # route 159.69.59.0/26 via 159.69.59.1 +config:
-#  up route add -net 159.69.59.0 netmask 255.255.255.192 gw 159.69.59.1 dev enp0s31f6+
  
-auto br0 + NAME                                  STATE     READ WRITE CKSUM 
-iface br0 inet static + zdata                                 ONLINE               0 
- bridge_ports enp0s31f6 +   mirror-0                            ONLINE               0 
- bridge_fd 5 +     ata-ST4000NM0245-1Z2107_ZC17DQEF  ONLINE               0 
- bridge_stp off +     ata-ST4000NM0245-1Z2107_ZC17EN25  ONLINE               0
- bridge_maxwait 1 +
- address  159.69.59.13 +
- netmask  255.255.255.192 +
- gateway  159.69.59.1 +
- pre-up /usr/sbin/ethtool -K enp0s31f6 tso off gso off +
- up route add -net 159.69.59.netmask 255.255.255.192 gw 159.69.59.1 dev enp0s31f6+
  
-# Management  +errors: No known data errors 
-auto br1 +</code>
-iface br1 inet static +
- bridge_ports none +
- bridge_fd 5 +
- bridge_stp off +
- address 10.X.X.X +
- netmask 255.X.X.X+
  
-VM-LAN +<code bash> 
-auto br2 +zfs list 
-iface br2 inet static +NAME                    USED  AVAIL     REFER  MOUNTPOINT 
- bridge_ports none +zdata                  2.11T  1.40T      120K  /zdata 
- bridge_fd 5 +zdata/audio_data       57.9G  1.40T     45.4G  /zdata/audio_data 
- bridge_stp off +zdata/cloud_data        587G  1.40T      489G  /zdata/cloud_data 
- address 192.168.10.1 +zdata/cryptpad_data     812M  1.40T      793M  /zdata/cryptpad_data 
- netmask 255.255.255.0+zdata/iso                96K  1.40T       96K  /zdata/iso 
 +zdata/mail_data         736K  1.40T      480K  /zdata/mail_data 
 +zdata/mobilizon_data    473M  1.40T      471M  /zdata/mobilizon_data 
 +zdata/mysql_data        100M  1.40T      100M  /zdata/mysql_data 
 +zdata/pleroma_data      127M  1.40T     80.2M  /zdata/pleroma_data 
 +zdata/postgresql_data   465M  1.40T      465M  /zdata/postgresql_data 
 +zdata/prod-01           562G  1.40T      333G  /zdata/prod-01 
 +zdata/video_data        951G  1.40T      907G  /zdata/video_data
 </code> </code>
  
-==== Routage et filtrage avec iptables ==== +Nous n'avions plus qu'à ajouter ces partages dans les exports NFS pour que nos VM puissent y accéder :
-Nous avons dû ensuite router et rediriger tout ça avec iptables afin de communiquer depuis l'extérieur avec le réseau des VM en 192.168.10.0/24 et filtrer les connexions entrantes, c'est le point le plus important.+
  
-L'idée est de rediriger le requêtes d'Internet vers les bonnes VM et de pouvoir administrer à distance de façon graphique avec virt-manager l'ensemble des VM+<code> 
-Le paquet ''iptables-persistent'' doit avoir été installé pour conserver les modifications du pare-feu entre chaque redémarrage+# cat /etc/exports 
-Le port SSH a été masqué.+/zdata/cloud_data      192.168.10.0/255.255.255.0(rw,async,no_subtree_check,no_root_squash) 10.10.10.0/255.255.255.252(rw,async,no_subtree_check,no_root_squash) 
 +/zdata/mail_data       192.168.10.0/255.255.255.0(rw,async,no_subtree_check,no_root_squash) 10.10.10.0/255.255.255.252(rw,async,no_subtree_check,no_root_squash) 
 +/zdata/video_data      192.168.10.0/255.255.255.0(rw,async,no_subtree_check,no_root_squash) 10.10.10.0/255.255.255.252(rw,async,no_subtree_check,no_root_squash) 
 +/zdata/audio_data      192.168.10.0/255.255.255.0(rw,async,no_subtree_check,no_root_squash) 10.10.10.0/255.255.255.252(rw,async,no_subtree_check,no_root_squash) 
 +/zdata/pleroma_data    192.168.10.0/255.255.255.0(rw,async,no_subtree_check,no_root_squash) 10.10.10.0/255.255.255.252(rw,async,no_subtree_check,no_root_squash) 
 +/zdata/cryptpad_data   192.168.10.0/255.255.255.0(rw,async,no_subtree_check,no_root_squash) 10.10.10.0/255.255.255.252(rw,async,no_subtree_check,no_root_squash) 
 +/zdata/mobilizon_data  192.168.10.0/255.255.255.0(rw,async,no_subtree_check,no_root_squash) 10.10.10.0/255.255.255.252(rw,async,no_subtree_check,no_root_squash) 
 +/zdata/mysql_data      192.168.10.0/255.255.255.0(rw,async,no_subtree_check,no_root_squash) 10.10.10.0/255.255.255.252(rw,async,no_subtree_check,no_root_squash) 
 +/zdata/postgresql_data 192.168.10.0/255.255.255.0(rw,async,no_subtree_check,no_root_squash) 10.10.10.0/255.255.255.252(rw,async,no_subtree_check,no_root_squash) 
 +</code>
  
-Il est bien sûr extrêmement important de sécuriser SSH : interdire le login root avec mot de passe, utiliser de bons algorithmes de chiffrement, changer le port, n'autoriser qu'une IP distante (ou mieux, ne rien autoriser depuis internet et utiliser un VPN) et mettre en place un faux serveur SSH pour que les attaquants perdent leur temps à essayer de se connectersans vous faire perdre le vôtre (et ajouter un Fail2Ban évidemment)La recette reste secrète, désolé ! ;-)+Il ne restait plus qu'à créer nos VM tranquillement avec ''virt-manager'' sur notre réseau ''br2'' et sur le stockage ''prod-01'' pour héberger les disques durs de chaque système d'exploitationen les démarrant depuis le stockage ''iso'' contenant nos images ISO pour installer Debian.
  
-Les règles concernant le réseau d'administration n'apparaissent pas non plus ici.+==== Sauvegardes ==== 
 +Toujours sauvegarder ! 
  
-<code bash> +Concernant les bases de données MySQL et PostgreSQLnous utilisons les outils natifs ''mysqldump'' et ''pg_dump''dont nous stockons les résultats sous forme compressée dans les partages ZFS respectifs (''zdata/mysql_data'' et ''zdata/postgresql_data'')
-root@hypervisor-01 ~ # cat /etc/iptables/rules.v4 +
-# Router le Web vers le proxy Nginx : +
--A PREROUTING -d 159.69.59.13/32 -p tcp -m tcp --syn -m multiport --dports 80,443 -j DNAT --to-destination 192.168.10.2 +
-# Router le mail envoi/réception vers le serveur mail : +
--A PREROUTING -d 159.69.59.13/32 -p tcp -m tcp --syn -m multiport --dports 587,993,25 -j DNAT --to-destination 192.168.10.7 +
-# Router le 9000 vers le serveur peertube : +
--A PREROUTING -d 159.69.59.13/32 -p tcp -m tcp --syn -m multiport --dports 9000 -j DNAT --to-destination 192.168.10.8 +
-# Router le 4443 et les 10000-20000  tcp/udp vers le serveur jitsi : +
--A PREROUTING -d 159.69.59.13/32 -p tcp -m tcp --syn -m multiport --dports 10000:20000 -j DNAT --to-destination 192.168.10.10 +
--A PREROUTING -d 159.69.59.13/32 -p udp -m udp       -m multiport --dports 10000:20000 -j DNAT --to-destination 192.168.10.10 +
--A PREROUTING -d 159.69.59.13/32 -p tcp -m tcp --syn -m multiport --dports 4443        -j DNAT --to-destination 192.168.10.10 +
-# Ne pas appliquer le masquerading sur le broadcast/multicast : +
--A POSTROUTING -s 192.168.10.0/24 -d 224.0.0.0/24 -j RETURN +
--A POSTROUTING -s 192.168.10.0/24 -d 255.255.255.255/32 -j RETURN +
-# Masquerading sur tous les ports dans le sens sortant (VM -> Internet) +
--A POSTROUTING -s 192.168.10.0/24 ! -d 192.168.10.0/24 -p tcp -j MASQUERADE --to-ports 1024-65535 +
--A POSTROUTING -s 192.168.10.0/24 ! -d 192.168.10.0/24 -p udp -j MASQUERADE --to-ports 1024-65535 +
--A POSTROUTING -s 192.168.10.0/24 ! -d 192.168.10.0/24 -j MASQUERADE+
  
-# Accepter le trafic basique : ICMP, boucle locale et connexions établiesen entrée : +Nous utilisons ZFS pour snapshoter et répliquer toutes les données stockées sur 3 sites géographiques différentsdans des pays différents.
--A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT +
--A INPUT -i lo -j ACCEPT +
--A INPUT -p icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT +
-# Accepter le SSH : +
--A INPUT -p tcp -m tcp --syn -m conntrack --ctstate NEW --dport XXXX -j ACCEPT +
-# Accepter Spice et VNC (console virtuelle de virt-manager) : +
--A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --dport 5900 -j ACCEPT +
--A INPUT -p udp -m udp -m conntrack --ctstate NEW --dport 5900 -j ACCEPT +
--A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --dport 5901 -j ACCEPT +
--A INPUT -p udp -m udp -m conntrack --ctstate NEW --dport 5901 -j ACCEPT +
--A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --dport 5902 -j ACCEPT +
--A INPUT -p udp -m udp -m conntrack --ctstate NEW --dport 5902 -j ACCEPT +
--A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --dport 5903 -j ACCEPT +
--A INPUT -p udp -m udp -m conntrack --ctstate NEW --dport 5903 -j ACCEPT +
--A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --dport 5904 -j ACCEPT +
--A INPUT -p udp -m udp -m conntrack --ctstate NEW --dport 5904 -j ACCEPT +
--A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --dport 5905 -j ACCEPT +
--A INPUT -p udp -m udp -m conntrack --ctstate NEW --dport 5905 -j ACCEPT +
--A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --dport 5906 -j ACCEPT +
--A INPUT -p udp -m udp -m conntrack --ctstate NEW --dport 5906 -j ACCEPT +
--A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --dport 5907 -j ACCEPT +
--A INPUT -p udp -m udp -m conntrack --ctstate NEW --dport 5907 -j ACCEPT +
--A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --dport 5908 -j ACCEPT +
--A INPUT -p udp -m udp -m conntrack --ctstate NEW --dport 5908 -j ACCEPT +
--A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --dport 5909 -j ACCEPT +
--A INPUT -p udp -m udp -m conntrack --ctstate NEW --dport 5909 -j ACCEPT +
--A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --dport 5910 -j ACCEPT +
--A INPUT -p udp -m udp -m conntrack --ctstate NEW --dport 5910 -j ACCEPT +
--A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --dport 5911 -j ACCEPT +
--A INPUT -p udp -m udp -m conntrack --ctstate NEW --dport 5911 -j ACCEPT +
-# Accepter les requêtes DNS (port 53) depuis les VM : +
--A INPUT -i br2 -p udp -m udp -m multiport --dports 53 -j ACCEPT +
--A INPUT -i br2 -p tcp -m tcp -m multiport --dports 53 -j ACCEPT +
-# Bloquer les requêtes rpcbind/portmap en entrée depuis l'extérieur: +
--A INPUT -i br2 -p tcp -m multiport --dport 2049 -j ACCEPT +
--A INPUT -i br2 -p tcp -m multiport --dport 111 -j ACCEPT +
--A INPUT -p tcp -s 127.0.0.1 --dport 111 -j ACCEPT +
--A INPUT -p udp --dport 111 -j DROP +
--A INPUT -p tcp --dport 111 -j DROP+
  
-# On refuse tout le reste : +Nous utilisons [[https://github.com/oetiker/znapzend|ZnapZend]] pour les snapshots ZFS et leur réplication via SSH vers un deuxième serveur sous Debian chez Hetzner, dans leur datacenter de Helsinki en Finalande. 
--A INPUT -m conntrack --ctstate INVALID -j DROP +
--A INPUT -p tcp -m tcp -j REJECT --reject-with tcp-reset +
--A INPUT -j REJECT --reject-with icmp-port-unreachable+
  
-# Accepter les connexions établies sur le LAN : +Sur la machine de production hypervisor-01 à Falkenstein en Allemagnenous avons une rétention glissante de snapshots ZFS :
--A FORWARD -d 192.168.10.0/24 -o br2 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT +
-# Accepter le trafic sortant depuis le LAN : +
--A FORWARD -s 192.168.10.0/24 -i br2 -j ACCEPT +
-# Accepter le trafic interne entre les VM : +
--A FORWARD -i br2 -o br2 -j ACCEPT +
-# Accepter les paquets redirigés vers des ports particuliers pour le Web vers le proxy : +
--A FORWARD -d 192.168.10.2/32 -o br2 -p tcp -m tcp --syn -m conntrack --ctstate NEW -m multiport --dports 80,443 -j ACCEPT +
-# Accepter les paquets redirigés vers des ports particuliers pour le mail vers le serveur mail : +
--A FORWARD -d 192.168.10.7/32 -o br2 -p tcp -m tcp --syn -m conntrack --ctstate NEW -m multiport --dports 587,993,25 -j ACCEPT +
-# Accepter les paquets redirigés vers des ports particuliers pour peertube service 9000 vers le serveur video : +
--A FORWARD -d 192.168.10.8/32 -o br2 -p tcp -m tcp --syn -m conntrack --ctstate NEW -m multiport --dports 9000 -j ACCEPT +
-# Accepter les paquets redirigés vers des ports particuliers pour funkwhale service 5000 vers le serveur video : +
--A FORWARD -d 192.168.10.9/32 -o br2 -p tcp -m tcp --syn -m conntrack --ctstate NEW -m multiport --dports 5000 -j ACCEPT +
-# Accepter les paquets redirigés vers des ports particuliers pour jitsi meet service tcp 10000-20000 vers le serveur visio : +
--A FORWARD -d 192.168.10.10/32 -o br2 -p tcp -m tcp --syn -m conntrack --ctstate NEW -m multiport --dports 10000:20000 -j ACCEPT +
-# Accepter les paquets redirigés vers des ports particuliers pour jitsi meet service udp 10000-20000 vers le serveur visio : +
--A FORWARD -d 192.168.10.10/32 -o br2 -p udp -m udp       -m conntrack --ctstate NEW -m multiport --dports 10000:20000 -j ACCEPT +
-# Accepter les paquets redirigés vers des ports particuliers pour jitsi meet service tcp 4443 vers le serveur visio : +
--A FORWARD -d 192.168.10.10/32 -o br2 -p tcp -m tcp --syn -m conntrack --ctstate NEW -m multiport --dports 4443 -j ACCEPT+
  
-# Rejeter tout le reste : +  * horaire de 24 heures 
--A FORWARD -i br2 -j REJECT --reject-with icmp-port-unreachable +  * journalière d'une semaine
--A FORWARD -o br2 -j REJECT --reject-with icmp-port-unreachable +
-</code>+
  
-==== Stockage ZFS ==== +Sur le serveur de backup backup-01 à Helsinki, nous avons une réplication avec une rétention glissante de snapshots ZFS :
-Un « pool » sur les 2 gros disques mécaniques a été créé en miroir (RAID1). Si vous vous demandez pourquoi nous n'avons pas créé de RAIDZ*, RAID5, RAID10, etc., vous pouvez jeter un coup d'oeil à [[https://jrs-s.net/2015/02/06/zfs-you-should-use-mirror-vdevs-not-raidz/|ce très bon article]].+
  
-Nous avons décidé d'offrir un maximum de 4 Go à l'ARC, le cache adaptatif de ZFS :+  * horaire de 24 heures 
 +  * journalière d'une semaine 
 +  * hebdomadaire sur deux mois
  
-<code> +Nous avons en sus mis en place une réplication des snapshots ZFS en France, dans le Tarn au domicile de l'administrateur, via SSH sur un autre pool ZFS en miroir. 
-echo 4294967296 >> /sys/module/zfs/parameters/zfs_arc_max + 
-</code>+Les donnés sont donc techniquement répliquées 5 fois (6 disques sur 3 sites géographiques différents). 
 + 
 +Voici les commandes invoquées pour la mise en place des snapshots et de la réplication dans le sens production =backup avec [[https://www.znapzend.org/|ZnapZend]] :
  
-<code> +<code bash
-root@hypervisor-01 ~ # cat /etc/modprobe.d/zfs.conf  +wget https://github.com/Gregy/znapzend-debian/releases/download/0.21.1/znapzend_0.21.1-1_amd64.deb 
-options zfs zfs_arc_max=4294967296+mv znapzend_0.21.1-1_amd64.deb /tmp/ 
 +apt install /tmp/znapzend_0.21.1-1_amd64.deb 
 +apt install mbuffer
 </code> </code>
  
-Nous avons ensuite créé un « pool » avec les numéros de série des disques (qu'on trouve dans ''/dev/disk/by-id''), avons activé la compression LZ4 et avons créé un ensemble de partages ZFS pour stocker les disques durs virtuels des VM (le partage ''prod-01'')et sur d'autres partages les données de hébergé⋅e⋅setc. qu'on montera plus tard dans chaque VM en NFS :+<code bash> 
 +for f in audio_data cloud_data cryptpad_data mail_data mobilizon_data mysql_data pleroma_data postgresql_data prod-01 video_data; do \ 
 +    znapzendzetup create --recursive --mbuffer=/usr/bin/mbuffer --mbuffersize=1G \ 
 +    --tsformat='%Y%m%d-%H%M%S' --send-delay=28800 \ 
 +    SRC '1d=>1h,7d=>1d' zdata/${f} \ 
 +    DST:a '1d=>1h,7d=>1d,2month=>1w
 +    root@backup-01:zdatabackup/${f}; done;
  
-<code> +*** backup plan: zdata/audio_data *** 
-root@hypervisor-01 ~ # zpool status +           dst_a = root@backup-01:zdatabackup/audio_data 
-  poolzdata +      dst_a_plan = 1day=>1hour,7days=>1day,2months=>1week 
- state: ONLINE +         enabled = on 
-  scan: scrub repaired 0B in 3h4m with 0 errors on Sun Feb 14 03:28:19 2021 +         mbuffer = /usr/bin/mbuffer 
-config:+    mbuffer_size = 1G 
 +   post_znap_cmd = off 
 +    pre_znap_cmd = off 
 +       recursive = on 
 +             src = zdata/audio_data 
 +        src_plan = 1day=>1hour,7days=>1day 
 +        tsformat = %Y%m%d-%H%M%S 
 +      zend_delay = 28800
  
- NAME                                  STATE     READ WRITE CKSUM +Do you want to save this backup set [y/N]? y 
- zdata                                 ONLINE               0 +NOTE: if you have modified your configuration, send a HUP signal 
-   mirror-0                            ONLINE               0 +(pkill -HUP znapzend) to your znapzend daemon for it to notice the change. 
-     ata-ST4000NM0245-1Z2107_XXXXX  ONLINE       0         0 +*** backup plan: zdata/cloud_data *** 
-     ata-ST4000NM0245-1Z2107_XXXXX  ONLINE               0+           dst_a = root@backup-01:zdatabackup/cloud_data 
 +      dst_a_plan = 1day=>1hour,7days=>1day,2months=>1week 
 +         enabled = on 
 +         mbuffer = /usr/bin/mbuffer 
 +    mbuffer_size = 1G 
 +   post_znap_cmd = off 
 +    pre_znap_cmd = off 
 +       recursive = on 
 +             src = zdata/cloud_data 
 +        src_plan = 1day=>1hour,7days=>1day 
 +        tsformat = %Y%m%d-%H%M%S 
 +      zend_delay = 28800
  
-errorsNo known data errors+Do you want to save this backup set [y/N]? y 
 +NOTEif you have modified your configuration, send a HUP signal 
 +(pkill -HUP znapzend) to your znapzend daemon for it to notice the change. 
 +*** backup plan: zdata/cryptpad_data *** 
 +           dst_a = root@backup-01:zdatabackup/cryptpad_data 
 +      dst_a_plan = 1day=>1hour,7days=>1day,2months=>1week 
 +         enabled = on 
 +         mbuffer = /usr/bin/mbuffer 
 +    mbuffer_size = 1G 
 +   post_znap_cmd = off 
 +    pre_znap_cmd = off 
 +       recursive = on 
 +             src = zdata/cryptpad_data 
 +        src_plan = 1day=>1hour,7days=>1day 
 +        tsformat = %Y%m%d-%H%M%S 
 +      zend_delay = 28800
  
-root@hypervisor-01 ~ # zfs list +Do you want to save this backup set [y/N]? y 
-NAME               USED  AVAIL  REFER  MOUNTPOINT +NOTE: if you have modified your configuration, send a HUP signal 
-zdata              895G  2.64T   112K  /zdata +(pkill -HUP znapzend) to your znapzend daemon for it to notice the change
-zdata/audio_data  21.8G  2.64T  19.6G  /zdata/audio_data +*** backup plan: zdata/mail_data *** 
-zdata/cloud_data  72.4G  2.64T  71.3G  /zdata/cloud_data +           dst_a = root@backup-01:zdatabackup/mail_data 
-zdata/iso         3.65G  2.64T  3.65G  /zdata/iso +      dst_a_plan = 1day=>1hour,7days=>1day,2months=>1week 
-zdata/mail_data    288K  2.64T   224K  /zdata/mail_data +         enabled = on 
-zdata/prod-01      144G  2.64T  76.3G  /zdata/prod-01 +         mbuffer = /usr/bin/mbuffer 
-zdata/video_data   653G  2.64T   651G  /zdata/video_data +    mbuffer_size = 1G 
-</code>+   post_znap_cmd = off 
 +    pre_znap_cmd = off 
 +       recursive = on 
 +             src = zdata/mail_data 
 +        src_plan = 1day=>1hour,7days=>1day 
 +        tsformat = %Y%m%d-%H%M%S 
 +      zend_delay = 28800
  
-Nous n'avions plus qu'à ajouter ces partages dans les exports NFS pour que nos VM puissent accéder :+Do you want to save this backup set [y/N]? y 
 +NOTE: if you have modified your configuration, send a HUP signal 
 +(pkill -HUP znapzend) to your znapzend daemon for it to notice the change. 
 +*** backup plan: zdata/mobilizon_data *** 
 +           dst_a = root@backup-01:zdatabackup/mobilizon_data 
 +      dst_a_plan = 1day=>1hour,7days=>1day,2months=>1week 
 +         enabled = on 
 +         mbuffer = /usr/bin/mbuffer 
 +    mbuffer_size = 1G 
 +   post_znap_cmd = off 
 +    pre_znap_cmd = off 
 +       recursive = on 
 +             src = zdata/mobilizon_data 
 +        src_plan = 1day=>1hour,7days=>1day 
 +        tsformat = %Y%m%d-%H%M%S 
 +      zend_delay = 28800
  
-<code> +Do you want to save this backup set [y/N]? y 
-root@hypervisor-01 ~ # cat /etc/exports  +NOTE: if you have modified your configuration, send a HUP signal 
-/zdata/cloud_data 192.168.10.X/255.255.255.0(rw,async,no_subtree_check,no_root_squash+(pkill -HUP znapzend) to your znapzend daemon for it to notice the change. 
-/zdata/mail_data 192.168.10.X/255.255.255.0(rw,async,no_subtree_check,no_root_squash) +*** backup plan: zdata/mysql_data *** 
-/zdata/video_data 192.168.10.X/255.255.255.0(rw,async,no_subtree_check,no_root_squash) +           dst_a = root@backup-01:zdatabackup/mysql_data 
-/zdata/audio_data 192.168.10.X/255.255.255.0(rw,async,no_subtree_check,no_root_squash) +      dst_a_plan = 1day=>1hour,7days=>1day,2months=>1week 
-</code>+         enabled = on 
 +         mbuffer = /usr/bin/mbuffer 
 +    mbuffer_size = 1G 
 +   post_znap_cmd = off 
 +    pre_znap_cmd = off 
 +       recursive = on 
 +             src = zdata/mysql_data 
 +        src_plan = 1day=>1hour,7days=>1day 
 +        tsformat = %Y%m%d-%H%M%S 
 +      zend_delay = 28800 
 + 
 +Do you want to save this backup set [y/N]? y 
 +NOTE: if you have modified your configurationsend a HUP signal 
 +(pkill -HUP znapzendto your znapzend daemon for it to notice the change. 
 +*** backup plan: zdata/pleroma_data *** 
 +           dst_a = root@backup-01:zdatabackup/pleroma_data 
 +      dst_a_plan = 1day=>1hour,7days=>1day,2months=>1week 
 +         enabled = on 
 +         mbuffer = /usr/bin/mbuffer 
 +    mbuffer_size = 1G 
 +   post_znap_cmd = off 
 +    pre_znap_cmd = off 
 +       recursive = on 
 +             src = zdata/pleroma_data 
 +        src_plan = 1day=>1hour,7days=>1day 
 +        tsformat = %Y%m%d-%H%M%S 
 +      zend_delay = 28800 
 + 
 +Do you want to save this backup set [y/N]? y 
 +NOTE: if you have modified your configuration, send a HUP signal 
 +(pkill -HUP znapzend) to your znapzend daemon for it to notice the change. 
 +*** backup plan: zdata/postgresql_data *** 
 +           dst_a = root@backup-01:zdatabackup/postgresql_data 
 +      dst_a_plan = 1day=>1hour,7days=>1day,2months=>1week 
 +         enabled = on 
 +         mbuffer = /usr/bin/mbuffer 
 +    mbuffer_size = 1G 
 +   post_znap_cmd = off 
 +    pre_znap_cmd = off 
 +       recursive = on 
 +             src = zdata/postgresql_data 
 +        src_plan = 1day=>1hour,7days=>1day 
 +        tsformat = %Y%m%d-%H%M%S 
 +      zend_delay = 28800 
 + 
 +Do you want to save this backup set [y/N]? y 
 +NOTE: if you have modified your configuration, send a HUP signal 
 +(pkill -HUP znapzend) to your znapzend daemon for it to notice the change. 
 +*** backup plan: zdata/prod-01 *** 
 +           dst_a = root@backup-01:zdatabackup/prod-01 
 +      dst_a_plan = 1day=>1hour,7days=>1day,2months=>1week 
 +         enabled = on 
 +         mbuffer = /usr/bin/mbuffer 
 +    mbuffer_size = 1G 
 +   post_znap_cmd = off 
 +    pre_znap_cmd = off 
 +       recursive = on 
 +             src = zdata/prod-01 
 +        src_plan = 1day=>1hour,7days=>1day 
 +        tsformat = %Y%m%d-%H%M%S 
 +      zend_delay = 28800
  
-Il ne restait plus qu'à créer nos VM tranquillement avec ''virt-manager'' sur notre réseau ''br2'' et sur le stockage ''prod-01'' pour héberger les disques durs de chaque système d'exploitationen les démarrant depuis le stockage ''iso'' contenant nos image pour installer Debian.+Do you want to save this backup set [y/N]? y 
 +NOTE: if you have modified your configuration, send a HUP signal 
 +(pkill -HUP znapzend) to your znapzend daemon for it to notice the change. 
 +*** backup plan: zdata/video_data *** 
 +           dst_a = root@backup-01:zdatabackup/video_data 
 +      dst_a_plan = 1day=>1hour,7days=>1day,2months=>1week 
 +         enabled = on 
 +         mbuffer = /usr/bin/mbuffer 
 +    mbuffer_size = 1G 
 +   post_znap_cmd = off 
 +    pre_znap_cmd = off 
 +       recursive = on 
 +             src = zdata/video_data 
 +        src_plan = 1day=>1hour,7days=>1day 
 +        tsformat = %Y%m%d-%H%M%S 
 +      zend_delay = 28800 
 + 
 +Do you want to save this backup set [y/N]? y 
 +NOTE: if you have modified your configurationsend a HUP signal 
 +(pkill -HUP znapzend) to your znapzend daemon for it to notice the change. 
 +</code>