backup-01
Machine
- Partie matérielle
- Serveur dédié
- 1 processeur 8 cœursIntel Core i7-7700
- 2 barrettes pour un total de 32 Go de mémoire RAM DDR4
- 2 disques SATA Enterprise de 4 To
- 1 carte réseau 1 Gbit/s Intel I219-LM
- Partie logicielle
- Système d'exploitation : Debian stable
Configuration
Système d'exploitation
Debian stable (Debian 11 « Bullseye » au moment de la rédaction de cette page)
Adressage IP
# cat /etc/network/interfaces ### Hetzner Online GmbH installimage source /etc/network/interfaces.d/* auto lo iface lo inet loopback iface lo inet6 loopback auto enp0s31f6 iface enp0s31f6 inet static address 95.216.12.179 netmask 255.255.255.192 gateway 95.216.12.129 # route 95.216.12.128/26 via 95.216.12.129 up route add -net 95.216.12.128 netmask 255.255.255.192 gw 95.216.12.129 dev enp0s31f6 iface enp0s31f6 inet6 static address 2a01:4f9:2a:cc8::2 netmask 64 gateway fe80::1
Paramètres réseau et swap dans sysctl
Depuis fin 2024, nous avons décidé d'activer un bridge réseau afin de pouvoir faire tourner un hyperviseur (comme sur hypervisor-01
) pour y héberger quelques machines virtuelles visant à soulager hypervisor-01
(notamment les ressources consommées par Peertube pour le transcodage).
Dans /etc/sysctl.d/99-liberta.conf
nous avons dû activer les paramètres réseau pour permettre au bridge de router les paquets et passer également la « swappiness » à 0. La mémoire doit être donc complètement saturée avant de commencer à « swapper » sur le disque dur (c'est un SSD) :
net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.all.rp_filter=1 net.ipv4.conf.default.rp_filter=1 net.ipv4.icmp_echo_ignore_broadcasts=1 net.ipv4.ip_forward=1 net.ipv6.conf.all.accept_dad=0 net.ipv6.conf.all.accept_ra=0 net.ipv6.conf.all.accept_ra_defrtr=0 net.ipv6.conf.all.accept_ra_pinfo=0 net.ipv6.conf.all.accept_ra_rtr_pref=0 net.ipv6.conf.all.accept_redirects = 0 net.ipv6.conf.all.accept_redirects=0 net.ipv6.conf.all.accept_source_route=0 net.ipv6.conf.all.autoconf=0 net.ipv6.conf.all.forwarding=1 net.ipv6.conf.default.accept_dad=0 net.ipv6.conf.default.accept_ra=0 net.ipv6.conf.default.accept_ra_defrtr=0 net.ipv6.conf.default.accept_ra_pinfo=0 net.ipv6.conf.default.accept_ra_rtr_pref=0 net.ipv6.conf.default.accept_redirects=0 net.ipv6.conf.default.accept_source_route=0 net.ipv6.conf.default.autoconf=0 vm.swappiness=0
Routages et pare-feu avec iptables
En prévision de la mise en place de machines virtuelles sur cette machine, nous devrons paramétrer un filtrage (cela dit, plus besoin de NAT !)
### IPV4 ### *nat -A PREROUTING -d 95.216.12.179/128 -p tcp -m tcp --syn -m multiport --dports 80,443,1935 -m comment --comment "Router le trafic Web vers le serveur web-02" -j DNAT --to-destination 192.168.10.105 -A POSTROUTING -s 192.168.10.0/24 -d 224.0.0.0/24 -m comment --comment "Ne pas appliquer le masquerading sur le broadcast/multicast" -j RETURN -A POSTROUTING -s 192.168.10.0/24 -d 255.255.255.255/32 -m comment --comment "Ne pas appliquer le masquerading sur le broadcast/multicast" -j RETURN -A POSTROUTING -s 192.168.10.0/24 ! -d 192.168.10.0/24 -p tcp -m comment --comment "Masquerading sur tous les ports dans le sens sortant (VM -> Internet)" -j MASQUERADE --to-ports 1024-65535 -A POSTROUTING -s 192.168.10.0/24 ! -d 192.168.10.0/24 -p udp -m comment --comment "Masquerading sur tous les ports dans le sens sortant (VM -> Internet)" -j MASQUERADE --to-ports 1024-65535 -A POSTROUTING -s 192.168.10.0/24 ! -d 192.168.10.0/24 -m comment --comment "" -j MASQUERADE COMMIT *filter -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -m comment --comment "Accepter le trafic des connexions établies, en entrée" -j ACCEPT -A INPUT -i lo -m comment --comment "Accepter le trafic basique depuis la boucle locale, en entrée"-j ACCEPT -A INPUT -p icmp --icmp-type 8 -m conntrack --ctstate NEW -m comment --comment "Accepter le trafic basique ICMP, en entrée" -j ACCEPT -A INPUT -p tcp -m tcp --syn -m conntrack --ctstate NEW --dport 22 -m comment --comment "Accepter le SSH" -j ACCEPT -A INPUT -p tcp -m tcp --syn -m conntrack --ctstate NEW --dport 1984 -m comment --comment "Accepter le SSH" -j ACCEPT -A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --dport 52365 -m comment --comment "Accepter le tunnel SSH vers le serveur web-01 sur le port 52365" -j ACCEPT -A INPUT -i br2 -p udp -m udp -m multiport --dports 53 -m comment --comment "Accepter les requêtes DNS (port 53) depuis les VM" -j ACCEPT -A INPUT -i br2 -p tcp -m tcp -m multiport --dports 53 -m comment --comment "Accepter les requêtes DNS (port 53) depuis les VM" -j ACCEPT -A INPUT -i br2 -p tcp -m multiport --dport 2049 -m comment --comment "Bloquer les requêtes rpcbind/portmap en entrée depuis l'extérieur" -j ACCEPT -A INPUT -i br2 -p tcp -m multiport --dport 111 -m comment --comment "Bloquer les requêtes rpcbind/portmap en entrée depuis l'extérieur" -j ACCEPT -A INPUT -p tcp -s 127.0.0.1 --dport 111 -m comment --comment "Bloquer les requêtes rpcbind/portmap en entrée depuis l'extérieur" -j ACCEPT -A INPUT -p udp --dport 111 -m comment --comment "Bloquer les requêtes rpcbind/portmap en entrée depuis l'extérieur" -j DROP -A INPUT -p tcp --dport 111 -m comment --comment "Bloquer les requêtes rpcbind/portmap en entrée depuis l'extérieur" -j DROP -A INPUT -i br2 -p tcp -m tcp -m multiport --dports 10050 -m comment --comment "Accepter les requêtes Zabbix passives (port 10050) depuis les VM" -j ACCEPT -A INPUT -p icmp --icmp-type 8 -m conntrack --ctstate NEW -m limit --limit 1/s --limit-burst 1 -m comment --comment "On refuse les trop nombreux ping" -j ACCEPT -A INPUT -p icmp -m comment --comment "On refuse les trop nombreux ping" -j DROP -A INPUT -m conntrack --ctstate INVALID -m comment --comment "On refuse tout le reste" -j DROP -A INPUT -p tcp -m tcp -m comment --comment "On refuse tout le reste" -j REJECT --reject-with tcp-reset -A INPUT -m comment --comment "On refuse tout le reste" -j REJECT --reject-with icmp-port-unreachable -A FORWARD -d 192.168.10.0/24 -o br2 -m conntrack --ctstate RELATED,ESTABLISHED -m comment --comment "Accepter les connexions établies sur le LAN" -j ACCEPT -A FORWARD -s 192.168.10.0/24 -i br2 -m comment --comment "Accepter le trafic sortant depuis le LAN" -j ACCEPT -A FORWARD -i br2 -o br2 -m comment --comment "Accepter le trafic interne entre les VM" -j ACCEPT -A FORWARD -d 192.168.10.105/32 -o br2 -p tcp -m tcp --syn -m conntrack --ctstate NEW -m multiport --dports 80,443,1935 -m comment --comment "Accepter les paquets redirigés vers des ports particuliers pour le Web vers le serveur web" -j ACCEPT -A FORWARD -d 192.168.10.250/32 -o br2 -p tcp -m tcp -m conntrack --ctstate NEW -m multiport --dports 8484 -m comment --comment "Accepter les paquets redirigés vers des ports particuliers pour le monitoring vers le serveur de monitoring" -j ACCEPT -A INPUT -s 102.132.96.0/20 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 103.4.96.0/22 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 129.134.0.0/17 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 129.134.160.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 129.134.25.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 129.134.26.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 129.134.27.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 129.134.28.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 129.134.29.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 129.134.30.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 129.134.31.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 139.223.200.130/32 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.0.0/17 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.192.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.195.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.196.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.197.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.198.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.199.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.200.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.201.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.202.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.203.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.204.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.205.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.207.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.208.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.209.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.210.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.211.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.212.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.214.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.215.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.216.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.217.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.218.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.22.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.221.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.222.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.223.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.224.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.225.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.226.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.227.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.228.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.229.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.23.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.231.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.232.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.233.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.234.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.235.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.236.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.237.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.238.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.239.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.240.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.24.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.241.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.242.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.243.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.244.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.245.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.247.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.249.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.250.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.25.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.251.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.252.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.253.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.254.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.26.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.27.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.28.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.29.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.30.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.3.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.31.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.5.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.6.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.7.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.8.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 157.240.9.0/24 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 162.254.207.51/32 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 162.255.119.207/32 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 172.67.135.213/32 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 173.252.64.0/18 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 179.60.192.0/22 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 185.199.108.153/32 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 185.199.111.153/32 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 185.60.216.0/22 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 198.54.117.211/32 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 204.15.20.0/22 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 27.124.125.189/32 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 31.13.24.0/21 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 31.13.64.0/18 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 34.117.168.233/32 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 37.9.175.187/32 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 45.130.41.7/32 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 45.64.40.0/22 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 45.91.92.164/32 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 54.81.116.232/32 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 61.9.242.43/32 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 64.225.91.73/32 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 66.220.144.0/20 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 69.171.224.0/19 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 74.119.76.0/22 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 89.223.68.248/32 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A FORWARD -i br2 -m comment --comment "Rejeter tout le reste" -j REJECT --reject-with icmp-port-unreachable -A FORWARD -o br2 -m comment --comment "Rejeter tout le reste" -j REJECT --reject-with icmp-port-unreachable COMMIT ### IPV6 ### *filter -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -m comment --comment "Accepter le trafic basique : ICMP, boucle locale et connexions établies, en entrée" -j ACCEPT -A INPUT -i lo -m comment --comment "Accepter le trafic basique : ICMP, boucle locale et connexions établies, en entrée" -j ACCEPT -A INPUT ! -i lo -d ::1/128 -m comment --comment "Accepter le trafic basique : ICMP, boucle locale et connexions établies, en entrée" -j REJECT -A INPUT -p tcp -m tcp --syn -m conntrack --ctstate NEW --dport 22 -m comment --comment "Accepter le SSH" -j ACCEPT -A INPUT -p tcp -m tcp --syn -m conntrack --ctstate NEW --dport 1984 -m comment --comment "Accepter le SSH" -j ACCEPT -A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --dport 52365 -m comment --comment "Accepter le tunnel SSH vers le serveur web-01 sur le port 52365" -j ACCEPT -A INPUT -i br2 -p udp -m udp -m multiport --dports 53 -m comment --comment "Accepter les requêtes DNS (port 53) depuis les VM" -j ACCEPT -A INPUT -i br2 -p tcp -m tcp -m multiport --dports 53 -m comment --comment "Accepter les requêtes DNS (port 53) depuis les VM" -j ACCEPT -A INPUT -i br2 -p tcp -m multiport --dport 2049 -m comment --comment "Bloquer les requêtes rpcbind/portmap en entrée depuis l'extérieur" -j ACCEPT -A INPUT -i br2 -p tcp -m multiport --dport 111 -m comment --comment "Bloquer les requêtes rpcbind/portmap en entrée depuis l'extérieur" -j ACCEPT -A INPUT -p tcp -s ::1/128 --dport 111 -m comment --comment "Bloquer les requêtes rpcbind/portmap en entrée depuis l'extérieur" -j ACCEPT -A INPUT -p udp --dport 111 -m comment --comment "Bloquer les requêtes rpcbind/portmap en entrée depuis l'extérieur" -j DROP -A INPUT -p tcp --dport 111 -m comment --comment "Bloquer les requêtes rpcbind/portmap en entrée depuis l'extérieur" -j DROP -A INPUT -i br2 -p tcp -m tcp -m multiport --dports 10050 -m comment --comment "Accepter les requêtes Zabbix passives (port 10050) depuis les VM" -j ACCEPT -A INPUT -p icmpv6 --icmpv6-type parameter-problem -m comment --comment "On accepte l'ICMPv6 indispensable au fonctionnement d'IPv6" -j ACCEPT -A INPUT -p icmpv6 --icmpv6-type echo-request -m comment --comment "On accepte l'ICMPv6 indispensable au fonctionnement d'IPv6" -j ACCEPT -A INPUT -p icmpv6 --icmpv6-type echo-reply -m comment --comment "On accepte l'ICMPv6 indispensable au fonctionnement d'IPv6" -j ACCEPT -A INPUT -p icmpv6 --icmpv6-type router-advertisement -m hl --hl-eq 255 -m comment --comment "On accepte l'ICMPv6 indispensable au fonctionnement d'IPv6" -j ACCEPT -A INPUT -p icmpv6 --icmpv6-type router-solicitation -m hl --hl-eq 255 -m comment --comment "On accepte l'ICMPv6 indispensable au fonctionnement d'IPv6" -j ACCEPT -A INPUT -p icmpv6 --icmpv6-type neighbour-advertisement -m hl --hl-eq 255 -m comment --comment "On accepte l'ICMPv6 indispensable au fonctionnement d'IPv6" -j ACCEPT -A INPUT -p icmpv6 --icmpv6-type neighbour-solicitation -m hl --hl-eq 255 -m comment --comment "On accepte l'ICMPv6 indispensable au fonctionnement d'IPv6" -j ACCEPT -A INPUT -p icmpv6 --icmpv6-type echo-request -m conntrack --ctstate NEW -m limit --limit 1/s --limit-burst 1 -m comment --comment "On refuse les trop nombreux ping" -j ACCEPT -A INPUT -p icmpv6 --icmpv6-type echo-request -m comment --comment "On refuse les trop nombreux ping" -j DROP -A INPUT -m conntrack --ctstate INVALID -m comment --comment "On refuse tout le reste en entrée" -j DROP -A INPUT -m comment --comment "On refuse tout le reste en entrée" -j REJECT -A FORWARD -d 2a01:4f9:2a:cc8::/64 -o br2 -m conntrack --ctstate RELATED,ESTABLISHED -m comment --comment "Accepter les connexions établies sur le LAN" -j ACCEPT -A FORWARD -s 2a01:4f9:2a:cc8::/64 -i br2 -m comment --comment "Accepter le trafic sortant depuis le LAN" -j ACCEPT -A FORWARD -i br2 -o br2 -m comment --comment "Accepter le trafic interne entre les VM" -j ACCEPT -A FORWARD -d 2a01:4f9:2a:cc8::105/128 -o br2 -p tcp -m tcp --syn -m conntrack --ctstate NEW -m multiport --dports 80,443,1935 -m comment --comment "Accepter les paquets redirigés vers des ports particuliers pour le Web vers le serveur web (inutile, mais au cas où)" -j ACCEPT -A INPUT -s 2620:0:1c00::/40 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 2620:10d:c090::/44 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 2a03:2880::/32 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 2a03:2887:ff02::/47 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 2a03:2887:ff19::/48 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 2a03:2887:ff1b::/48 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 2a03:2887:ff1c::/46 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 2a03:2887:ff23::/48 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 2a03:2887:ff25::/48 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 2a03:2887:ff27::/48 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 2a03:2887:ff28::/46 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 2a03:2887:ff2f::/48 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 2a03:2887:ff30::/48 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 2a03:2887:ff35::/48 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 2a03:2887:ff37::/48 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 2a03:2887:ff38::/46 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 2a03:2887:ff3f::/48 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 2a03:2887:ff40::/48 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 2a03:2887:ff43::/48 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 2a03:2887:ff44::/47 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 2a03:2887:ff48::/46 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 2a03:2887:ff4d::/48 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 2a03:2887:ff4e::/47 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 2a03:2887:ff50::/47 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 2a03:2887:ff52::/48 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 2a03:2887:ff58::/47 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 2c0f:ef78:3::/48 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 2c0f:ef78:5::/48 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 2c0f:ef78:6::/48 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 2c0f:ef78:9::/48 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 2c0f:ef78:d::/48 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 2c0f:ef78:e::/47 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 2c0f:ef78:11::/48 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A INPUT -s 2c0f:ef78:12::/48 -m comment --comment "Meta/Facebook/Instagram/Threads Adios!" -j DROP -A FORWARD -i br2 -m comment --comment "Rejeter tout le reste" -j REJECT -A FORWARD -o br2 -m comment --comment "Rejeter tout le reste" -j REJECT COMMIT
Paquets installés
La liste des paquets :
# dpkg -l | grep '^i' |awk '{ print $2 }' | sed '/^$/d'| sort acl acpid adduser amd64-microcode apt aptitude aptitude-common apt-utils at base-files base-passwd bash bash-completion bind9-dnsutils bind9-host bind9-libs:amd64 binutils binutils-common:amd64 binutils-x86-64-linux-gnu bridge-utils bsdextrautils bsdutils btrfs-progs busybox bzip2 ca-certificates console-setup console-setup-linux coreutils cpio cpp cpp-10 cron cryptsetup cryptsetup-bin cryptsetup-initramfs curl dash dbus dctrl-tools debconf debconf-i18n debian-archive-keyring debianutils diffutils discover discover-data distro-info-data dkms dmeventd dmidecode dmsetup dnsutils dosfstools dpkg dpkg-dev e2fsprogs efibootmgr ethtool fail2ban fdisk file findutils firmware-bnx2x gcc gcc-10 gcc-10-base:amd64 gcc-9-base:amd64 gdisk gettext-base gpgv grep groff-base grub2-common grub-common grub-efi-amd64 grub-efi-amd64-bin grub-pc-bin gzip hostname htop iftop ifupdown init initramfs-tools initramfs-tools-core init-system-helpers intel-microcode iotop iproute2 iptables iputils-ping isc-dhcp-client isc-dhcp-common iucode-tool kbd keyboard-configuration klibc-utils kmod laptop-detect less libacl1:amd64 libaio1:amd64 libapparmor1:amd64 libapt-pkg6.0:amd64 libargon2-1:amd64 libasan6:amd64 libatomic1:amd64 libattr1:amd64 libaudit1:amd64 libaudit-common libbinutils:amd64 libblas3:amd64 libblkid1:amd64 libboost-iostreams1.74.0:amd64 libbpf0:amd64 libbrotli1:amd64 libbsd0:amd64 libbz2-1.0:amd64 libc6:amd64 libc6-dev:amd64 libcap2:amd64 libcap2-bin libcap-ng0:amd64 libc-bin libcbor0:amd64 libcc1-0:amd64 libc-dev-bin libc-l10n libcom-err2:amd64 libcrypt1:amd64 libcrypt-dev:amd64 libcryptsetup12:amd64 libctf0:amd64 libctf-nobfd0:amd64 libcurl3-gnutls:amd64 libcurl4:amd64 libcwidget4:amd64 libdb5.3:amd64 libdbus-1-3:amd64 libdebconfclient0:amd64 libdevmapper1.02.1:amd64 libdevmapper-event1.02.1:amd64 libdiscover2 libdns-export1110 libdpkg-perl libedit2:amd64 libefiboot1:amd64 libefivar1:amd64 libelf1:amd64 libestr0:amd64 libexpat1:amd64 libext2fs2:amd64 libfastjson4:amd64 libfdisk1:amd64 libffi7:amd64 libfido2-1:amd64 libfl2:amd64 libfreetype6:amd64 libfstrm0:amd64 libfuse2:amd64 libgcc-10-dev:amd64 libgcc-s1:amd64 libgcrypt20:amd64 libgdbm6:amd64 libgdbm-compat4:amd64 libgmp10:amd64 libgnutls30:amd64 libgomp1:amd64 libgpg-error0:amd64 libgssapi-krb5-2:amd64 libhogweed6:amd64 libicu67:amd64 libidn2-0:amd64 libinih1:amd64 libip4tc2:amd64 libip6tc2:amd64 libisc-export1105:amd64 libisl23:amd64 libitm1:amd64 libjansson4:amd64 libjson-c5:amd64 libk5crypto3:amd64 libkeyutils1:amd64 libklibc:amd64 libkmod2:amd64 libkrb5-3:amd64 libkrb5support0:amd64 libldap-2.4-2:amd64 libldap-common liblinear4:amd64 liblmdb0:amd64 liblocale-gettext-perl liblockfile-bin liblognorm5:amd64 liblsan0:amd64 liblua5.3-0:amd64 liblvm2cmd2.03:amd64 liblz4-1:amd64 liblzma5:amd64 liblzo2-2:amd64 libmagic1:amd64 libmagic-mgc libmaxminddb0:amd64 libmd0:amd64 libmnl0:amd64 libmount1:amd64 libmpc3:amd64 libmpdec3:amd64 libmpfr6:amd64 libncurses6:amd64 libncursesw6:amd64 libnetfilter-conntrack3:amd64 libnettle8:amd64 libnewt0.52:amd64 libnfnetlink0:amd64 libnftables1:amd64 libnftnl11:amd64 libnghttp2-14:amd64 libnl-3-200:amd64 libnl-genl-3-200:amd64 libnsl2:amd64 libnsl-dev:amd64 libnss-systemd:amd64 libnvpair3linux libp11-kit0:amd64 libpam0g:amd64 libpam-modules:amd64 libpam-modules-bin libpam-runtime libpam-systemd:amd64 libpcap0.8:amd64 libpci3:amd64 libpcre2-8-0:amd64 libpcre3:amd64 libperl5.32:amd64 libpipeline1:amd64 libpng16-16:amd64 libpopt0:amd64 libprocps8:amd64 libprotobuf-c1:amd64 libpsl5:amd64 libpython3.9-minimal:amd64 libpython3.9-stdlib:amd64 libpython3-stdlib:amd64 libquadmath0:amd64 libreadline8:amd64 librtmp1:amd64 libsasl2-2:amd64 libsasl2-modules:amd64 libsasl2-modules-db:amd64 libseccomp2:amd64 libselinux1:amd64 libsemanage1:amd64 libsemanage-common libsepol1:amd64 libsigc++-2.0-0v5:amd64 libslang2:amd64 libsmartcols1:amd64 libsqlite3-0:amd64 libss2:amd64 libssh2-1:amd64 libssl1.1:amd64 libstdc++6:amd64 libsystemd0:amd64 libtasn1-6:amd64 libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl libtinfo6:amd64 libtirpc3:amd64 libtirpc-common libtirpc-dev:amd64 libtsan0:amd64 libubsan1:amd64 libuchardet0:amd64 libudev1:amd64 libunistring2:amd64 libusb-0.1-4:amd64 libuuid1:amd64 libuutil3linux libuv1:amd64 libwrap0:amd64 libxapian30:amd64 libxml2:amd64 libxtables12:amd64 libxxhash0:amd64 libzfs4linux libzpool4linux libzstd1:amd64 linux-base linux-compiler-gcc-10-x86 linux-headers-5.10.0-16-amd64 linux-headers-5.10.0-16-common linux-headers-amd64 linux-image-5.10.0-16-amd64 linux-image-5.10.0-9-amd64 linux-image-amd64 linux-kbuild-5.10 linux-libc-dev:amd64 locales login logrotate logsave lsb-base lsb-release lsof lua-lpeg:amd64 lvm2 mailcap make man-db manpages mawk mbuffer mdadm media-types mime-support mokutil mount mtr-tiny nano ncurses-base ncurses-bin ncurses-term netbase netcat-traditional net-tools nftables nmap nmap-common openssh-client openssh-server openssh-sftp-server openssl passwd patch pci.ids pciutils perl perl-base perl-modules-5.32 procps publicsuffix python3 python3.9 python3.9-minimal python3-apt python3-certifi python3-chardet python3-debian python3-debianbts python3-distutils python3-httplib2 python3-idna python3-lib2to3 python3-minimal python3-pkg-resources python3-pycurl python3-pysimplesoap python3-reportbug python3-requests python3-six python3-urllib3 python-apt-common readline-common reportbug rsync rsyslog runit-helper sed sensible-utils shim-helpers-amd64-signed shim-signed:amd64 shim-signed-common shim-unsigned sudo systemd systemd-sysv systemd-timesyncd sysvinit-utils tar task-english tasksel tasksel-data task-ssh-server tcpdump traceroute tzdata ucf udev util-linux util-linux-locales vim-common vim-tiny wget whiptail xfsprogs xkb-data xxd xz-utils zfs-dkms zfsutils-linux zlib1g:amd64
Stockage ZFS
Un « pool » de sauvegarde sur les 2 gros disques mécaniques a été créé en miroir (RAID1).
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 :
# zpool status -v pool: zdatabackup state: ONLINE config: NAME STATE READ WRITE CKSUM zdatabackup ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 ata-ST4000NM0245-1Z2107_ZC137LB6-part5 ONLINE 0 0 0 ata-ST4000NM0245-1Z2107_ZC139JEZ-part5 ONLINE 0 0 0 errors: No known data errors
# zfs list NAME USED AVAIL REFER MOUNTPOINT zdatabackup 1.66M 3.47T 144K /zdatabackup zdatabackup/audio_data 96K 3.47T 96K /zdatabackup/audio_data zdatabackup/cloud_data 96K 3.47T 96K /zdatabackup/cloud_data zdatabackup/cryptpad_data 96K 3.47T 96K /zdatabackup/cryptpad_data zdatabackup/mail_data 96K 3.47T 96K /zdatabackup/mail_data zdatabackup/mobilizon_data 96K 3.47T 96K /zdatabackup/mobilizon_data zdatabackup/mysql_data 96K 3.47T 96K /zdatabackup/mysql_data zdatabackup/pleroma_data 96K 3.47T 96K /zdatabackup/pleroma_data zdatabackup/postgresql_data 96K 3.47T 96K /zdatabackup/postgresql_data zdatabackup/prod-01 96K 3.47T 96K /zdatabackup/prod-01 zdatabackup/video_data 96K 3.47T 96K /zdatabackup/video_data
Ce serveur reçoit la réplication des snapshots ZFS du serveur hypervisor-01
, cf. la page dédiée.