Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
tech:hypervisor-01 [29/09/2023 17:43] – [Paquets installés] LibertAdmin | tech:hypervisor-01 [06/11/2023 15:04] (Version actuelle) – [Routage et filtrage avec iptables] LibertAdmin | ||
---|---|---|---|
Ligne 21: | Ligne 21: | ||
* [[tech: | * [[tech: | ||
* [[tech: | * [[tech: | ||
- | * < | + | * < |
- | * [[tech: | + | * [[tech: |
- | * [[tech: | + | |
- | * < | + | * < |
- | * [[tech: | + | * [[tech: |
- | Toutes les requêtes venant d' | + | Toutes les requêtes venant d' |
===== Configuration ===== | ===== Configuration ===== | ||
==== Système d' | ==== Système d' | ||
- | Debian stable (Debian 11 « Bullseye » au moment de la rédaction de cette page) | + | * Debian stable |
+ | * Debian oldstable pour le serveur web-01 | ||
==== Adressage IP ==== | ==== Adressage IP ==== | ||
Hetzner offre une IP publique. Nous avons modifié l' | Hetzner offre une IP publique. Nous avons modifié l' | ||
- | L' | + | L' |
- | L' | + | L' |
< | < | ||
Ligne 64: | Ligne 65: | ||
iface br0 inet6 static | iface br0 inet6 static | ||
bridge_ports enp0s31f6 | bridge_ports enp0s31f6 | ||
- | bridge_hz | + | bridge_hw |
bridge_fd 0 | bridge_fd 0 | ||
bridge_stp off | bridge_stp off | ||
Ligne 78: | Ligne 79: | ||
bridge_fd 0 | bridge_fd 0 | ||
bridge_stp off | bridge_stp off | ||
- | address | + | address |
- | netmask 255.X.Y.Z | + | netmask 255.255.255.0 |
iface br1 inet6 static | iface br1 inet6 static | ||
Ligne 85: | Ligne 86: | ||
bridge_fd 0 | bridge_fd 0 | ||
bridge_stp off | bridge_stp off | ||
- | address | + | address |
netmask 120 | netmask 120 | ||
Ligne 101: | Ligne 102: | ||
bridge_fd 0 | bridge_fd 0 | ||
bridge_stp off | bridge_stp off | ||
- | address ::ffff:c0a8:a01 | + | address |
netmask 120 | netmask 120 | ||
Ligne 121: | Ligne 122: | ||
<code bash> | <code bash> | ||
- | |||
*nat | *nat | ||
- | |||
# Router le trafic Web vers le serveur web : | # Router le trafic Web vers le serveur web : | ||
-A PREROUTING -d 159.69.59.13/ | -A PREROUTING -d 159.69.59.13/ | ||
- | |||
# Router le mail envoi/ | # Router le mail envoi/ | ||
-A PREROUTING -d 159.69.59.13/ | -A PREROUTING -d 159.69.59.13/ | ||
- | |||
- | # Tests | ||
- | ## Router les ports des applications vers le serveur web : | ||
- | #-A PREROUTING -d 159.69.59.13/ | ||
- | # | ||
- | ## Router le port 5868 vers le serveur audio pour Funkwhale : | ||
- | #-A PREROUTING -d 159.69.59.13/ | ||
- | |||
# Router le 8484 pour Zabbix vers le serveur monitoring : | # Router le 8484 pour Zabbix vers le serveur monitoring : | ||
-A PREROUTING -d 159.69.59.13/ | -A PREROUTING -d 159.69.59.13/ | ||
- | |||
# Ne pas appliquer le masquerading sur le broadcast/ | # Ne pas appliquer le masquerading sur le broadcast/ | ||
-A POSTROUTING -s 192.168.10.0/ | -A POSTROUTING -s 192.168.10.0/ | ||
-A POSTROUTING -s 192.168.10.0/ | -A POSTROUTING -s 192.168.10.0/ | ||
- | |||
# Masquerading sur tous les ports dans le sens sortant (VM -> Internet) | # Masquerading sur tous les ports dans le sens sortant (VM -> Internet) | ||
-A POSTROUTING -s 192.168.10.0/ | -A POSTROUTING -s 192.168.10.0/ | ||
-A POSTROUTING -s 192.168.10.0/ | -A POSTROUTING -s 192.168.10.0/ | ||
-A POSTROUTING -s 192.168.10.0/ | -A POSTROUTING -s 192.168.10.0/ | ||
- | |||
COMMIT | COMMIT | ||
- | |||
*filter | *filter | ||
- | |||
# Accepter le trafic basique : ICMP, boucle locale et connexions établies, en entrée : | # Accepter le trafic basique : ICMP, boucle locale et connexions établies, en entrée : | ||
-A INPUT -m conntrack --ctstate RELATED, | -A INPUT -m conntrack --ctstate RELATED, | ||
-A INPUT -i lo -j ACCEPT | -A INPUT -i lo -j ACCEPT | ||
-A INPUT -p icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT | -A INPUT -p icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT | ||
- | |||
# Accepter le SSH : | # 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 22 -j ACCEPT | ||
-A INPUT -p tcp -m tcp --syn -m conntrack --ctstate NEW --dport 1984 -j ACCEPT | -A INPUT -p tcp -m tcp --syn -m conntrack --ctstate NEW --dport 1984 -j ACCEPT | ||
- | |||
# Accepter les connexions pour le mail : | # 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 | -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 : | # 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 | -A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --dport 52365 -j ACCEPT | ||
- | |||
# Accepter les requêtes DNS (port 53) depuis les VM : | # 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 udp -m udp -m multiport --dports 53 -j ACCEPT | ||
-A INPUT -i br2 -p tcp -m tcp -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/ | # Bloquer les requêtes rpcbind/ | ||
-A INPUT -i br2 -p tcp -m multiport --dport 2049 -j ACCEPT | -A INPUT -i br2 -p tcp -m multiport --dport 2049 -j ACCEPT | ||
Ligne 178: | Ligne 158: | ||
-A INPUT -p udp --dport 111 -j DROP | -A INPUT -p udp --dport 111 -j DROP | ||
-A INPUT -p tcp --dport 111 -j DROP | -A INPUT -p tcp --dport 111 -j DROP | ||
- | |||
# Accepter les requêtes Zabbix passives (port 10050) depuis les VM : | # 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 | -A INPUT -i br2 -p tcp -m tcp -m multiport --dports 10050 -j ACCEPT | ||
- | |||
# On refuse les trop nombreux ping : | # 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 --icmp-type 8 -m conntrack --ctstate NEW -m limit --limit 1/s --limit-burst 1 -j ACCEPT | ||
-A INPUT -p icmp -j DROP | -A INPUT -p icmp -j DROP | ||
- | |||
# On refuse tout le reste : | # On refuse tout le reste : | ||
-A INPUT -m conntrack --ctstate INVALID -j DROP | -A INPUT -m conntrack --ctstate INVALID -j DROP | ||
-A INPUT -p tcp -m tcp -j REJECT --reject-with tcp-reset | -A INPUT -p tcp -m tcp -j REJECT --reject-with tcp-reset | ||
-A INPUT -j REJECT --reject-with icmp-port-unreachable | -A INPUT -j REJECT --reject-with icmp-port-unreachable | ||
- | |||
# Accepter les connexions établies sur le LAN : | # Accepter les connexions établies sur le LAN : | ||
-A FORWARD -d 192.168.10.0/ | -A FORWARD -d 192.168.10.0/ | ||
- | |||
# Accepter le trafic sortant depuis le LAN : | # Accepter le trafic sortant depuis le LAN : | ||
-A FORWARD -s 192.168.10.0/ | -A FORWARD -s 192.168.10.0/ | ||
- | |||
# Accepter le trafic interne entre les VM : | # Accepter le trafic interne entre les VM : | ||
-A FORWARD -i br2 -o br2 -j ACCEPT | -A FORWARD -i br2 -o br2 -j ACCEPT | ||
- | |||
# Accepter les paquets redirigés vers des ports particuliers pour le Web vers le serveur web : | # Accepter les paquets redirigés vers des ports particuliers pour le Web vers le serveur web : | ||
-A FORWARD -d 192.168.10.5/ | -A FORWARD -d 192.168.10.5/ | ||
- | |||
# Accepter les paquets redirigés vers des ports particuliers pour le mail vers le serveur mail : | # Accepter les paquets redirigés vers des ports particuliers pour le mail vers le serveur mail : | ||
-A FORWARD -d 192.168.10.7/ | -A FORWARD -d 192.168.10.7/ | ||
- | |||
# Accepter les paquets redirigés vers des ports particuliers pour le monitoring vers le serveur de monitoring : | # Accepter les paquets redirigés vers des ports particuliers pour le monitoring vers le serveur de monitoring : | ||
-A FORWARD -d 192.168.10.250/ | -A FORWARD -d 192.168.10.250/ | ||
- | |||
- | # Tests | ||
- | ## Accepter les paquets redirigés vers des ports particuliers vers le serveur web : | ||
- | #-A FORWARD -d 192.168.10.5/ | ||
- | # | ||
- | ## Accepter les paquets redirigés vers des ports particuliers pour funkwhale service 5868 vers le serveur audio : | ||
- | #-A FORWARD -d 192.168.10.9/ | ||
- | |||
# On bloque TOUT le trafic en provenance de Meta/ | # On bloque TOUT le trafic en provenance de Meta/ | ||
-A INPUT -s 102.132.96.0/ | -A INPUT -s 102.132.96.0/ | ||
Ligne 325: | Ligne 288: | ||
-A INPUT -s 74.119.76.0/ | -A INPUT -s 74.119.76.0/ | ||
-A INPUT -s 89.223.68.248/ | -A INPUT -s 89.223.68.248/ | ||
- | |||
# Rejeter tout le reste : | # Rejeter tout le reste : | ||
-A FORWARD -i br2 -j REJECT --reject-with icmp-port-unreachable | -A FORWARD -i br2 -j REJECT --reject-with icmp-port-unreachable | ||
-A FORWARD -o br2 -j REJECT --reject-with icmp-port-unreachable | -A FORWARD -o br2 -j REJECT --reject-with icmp-port-unreachable | ||
- | |||
COMMIT | COMMIT | ||
- | |||
</ | </ | ||
Ligne 337: | Ligne 297: | ||
<code bash> | <code bash> | ||
- | + | # Accepter le trafic basique : ICMP, boucle locale et connexions | |
- | *nat | + | |
- | + | ||
- | # Router le Web vers le serveur web : | + | |
- | -A PREROUTING -d 2a01: | + | |
- | + | ||
- | # Router le mail envoi/ | + | |
- | -A PREROUTING -d 2a01: | + | |
- | + | ||
- | # Tests | + | |
- | ## Router les ports des applications vers le serveur web : | + | |
- | #-A PREROUTING -d 2a01: | + | |
- | # | + | |
- | ## Router le port 5868 pour Funkwhale vers le serveur audio : | + | |
- | #-A PREROUTING -d 2a01: | + | |
- | + | ||
- | ## Router le 8484 pour Zabbix vers le serveur monitoring (inactif, pas d'IPv6 pour l' | + | |
- | #-A PREROUTING -d 2a01: | + | |
- | + | ||
- | # Masquerading sur tous les ports dans le sens sortant (VM -> Internet) | + | |
- | -A POSTROUTING -s :: | + | |
- | -A POSTROUTING -s :: | + | |
- | -A POSTROUTING -s :: | + | |
- | + | ||
- | COMMIT | + | |
- | + | ||
- | *filter | + | |
- | + | ||
- | # Accepter le trafic basique : ICMP, boucle locale et connexionx | + | |
-A INPUT -m conntrack --ctstate RELATED, | -A INPUT -m conntrack --ctstate RELATED, | ||
-A INPUT -i lo -j ACCEPT | -A INPUT -i lo -j ACCEPT | ||
-A INPUT ! -i lo -d ::1/128 -j REJECT | -A INPUT ! -i lo -d ::1/128 -j REJECT | ||
- | |||
# Accepter le SSH : | # 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 22 -j ACCEPT | ||
-A INPUT -p tcp -m tcp --syn -m conntrack --ctstate NEW --dport 1984 -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 : | # 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 | -A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --dport 52365 -j ACCEPT | ||
- | |||
# Accepter les requêtes DNS (port 53) depuis les VM : | # 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 udp -m udp -m multiport --dports 53 -j ACCEPT | ||
-A INPUT -i br2 -p tcp -m tcp -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/ | # Bloquer les requêtes rpcbind/ | ||
-A INPUT -i br2 -p tcp -m multiport --dport 2049 -j ACCEPT | -A INPUT -i br2 -p tcp -m multiport --dport 2049 -j ACCEPT | ||
Ligne 387: | Ligne 315: | ||
-A INPUT -p udp --dport 111 -j DROP | -A INPUT -p udp --dport 111 -j DROP | ||
-A INPUT -p tcp --dport 111 -j DROP | -A INPUT -p tcp --dport 111 -j DROP | ||
- | |||
# Accepter les requêtes Zabbix passives (port 10050) depuis les VM : | # 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 | -A INPUT -i br2 -p tcp -m tcp -m multiport --dports 10050 -j ACCEPT | ||
- | |||
# On accepte l' | # On accepte l' | ||
-A INPUT -p icmpv6 --icmpv6-type parameter-problem -j ACCEPT | -A INPUT -p icmpv6 --icmpv6-type parameter-problem -j ACCEPT | ||
Ligne 399: | Ligne 325: | ||
-A INPUT -p icmpv6 --icmpv6-type neighbour-advertisement -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 | -A INPUT -p icmpv6 --icmpv6-type neighbour-solicitation -m hl --hl-eq 255 -j ACCEPT | ||
- | |||
# On refuse les trop nombreux ping : | # 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 -m conntrack --ctstate NEW -m limit --limit 1/s --limit-burst 1 -j ACCEPT | ||
-A INPUT -p icmpv6 --icmpv6-type echo-request -j DROP | -A INPUT -p icmpv6 --icmpv6-type echo-request -j DROP | ||
- | |||
# On refuse tout le reste en entrée : | # On refuse tout le reste en entrée : | ||
-A INPUT -m conntrack --ctstate INVALID -j DROP | -A INPUT -m conntrack --ctstate INVALID -j DROP | ||
-A INPUT -j REJECT | -A INPUT -j REJECT | ||
- | |||
# Accepter les connexions établies sur le LAN : | # Accepter les connexions établies sur le LAN : | ||
- | -A FORWARD -d ::ffff:c0a8:a00/64 -o br2 -m conntrack --ctstate RELATED, | + | -A FORWARD -d 2a01:4f8:231:aa6::/64 -o br2 -m conntrack --ctstate RELATED, |
# Accepter le trafic sortant depuis le LAN : | # Accepter le trafic sortant depuis le LAN : | ||
- | -A FORWARD -s ::ffff:c0a8:a00/64 -i br2 -j ACCEPT | + | -A FORWARD -s 2a01:4f8:231:aa6::/64 -i br2 -j ACCEPT |
# Accepter le trafic interne entre les VM : | # Accepter le trafic interne entre les VM : | ||
-A FORWARD -i br2 -o br2 -j ACCEPT | -A FORWARD -i br2 -o br2 -j ACCEPT | ||
- | |||
# Accepter les paquets redirigés vers des ports particuliers pour le Web vers le serveur web : | # Accepter les paquets redirigés vers des ports particuliers pour le Web vers le serveur web : | ||
- | -A FORWARD -d ::ffff:c0a8:a05 -o br2 -p tcp -m tcp --syn -m conntrack --ctstate NEW -m multiport --dports 80,443 -j ACCEPT | + | -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 : | # Accepter les paquets redirigés vers des ports particuliers pour le mail vers le serveur mail : | ||
- | -A FORWARD -d ::ffff:c0a8:a05 -o br2 -p tcp -m tcp --syn -m conntrack --ctstate NEW -m multiport --dports 587,993,25 -j ACCEPT | + | -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 : | |
- | # Tests | + | -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 |
- | ## Accepter les paquets redirigés vers des ports particuliers vers le serveur web : | + | |
- | #-A FORWARD -d :: | + | |
- | # | + | |
- | ## Accepter les paquets redirigés vers des ports particuliers pour funkwhale service 5868 vers le serveur audio : | + | |
- | #-A FORWARD -d :: | + | |
- | + | ||
- | # Pas d'IPv6 pour le moment, inactif : | + | |
- | ## Accepter les paquets redirigés vers des ports particuliers pour Zabbix tcp 8484 vers le serveur monitoring : | + | |
- | #-A FORWARD -d ::ffff:c0a8:XYZ -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/ | # On bloque TOUT le trafic en provenance de Meta/ | ||
-A INPUT -s 2620: | -A INPUT -s 2620: | ||
Ligne 469: | Ligne 378: | ||
-A INPUT -s 2c0f: | -A INPUT -s 2c0f: | ||
-A INPUT -s 2c0f: | -A INPUT -s 2c0f: | ||
- | |||
# Rejeter tout le reste : | # Rejeter tout le reste : | ||
-A FORWARD -i br2 -j REJECT | -A FORWARD -i br2 -j REJECT | ||
-A FORWARD -o br2 -j REJECT | -A FORWARD -o br2 -j REJECT | ||
- | |||
COMMIT | COMMIT | ||
- | |||
</ | </ | ||
==== Paquets installés ==== | ==== Paquets installés ==== |