« Proxmox iptables » : différence entre les versions
Autres actions
| (5 versions intermédiaires par le même utilisateur non affichées) | |||
| Ligne 31 : | Ligne 31 : | ||
* on autorise les messages ICMP (ping) | * on autorise les messages ICMP (ping) | ||
* on autorise le SSH (TCP/22) | * on autorise le SSH (TCP/22) | ||
* on ''drop'' tout le reste | * on ''drop'' tout le reste du trafique entrant | ||
* on ''drop'' tout le trafique traversant | |||
Et on oublie pas d'ajouter aussi le port de PveProxy (l'interface web) qui est le TCP/8006, ce qui nous donne: | Et on oublie pas d'ajouter aussi le port de PveProxy (l'interface web) qui est le TCP/8006, ce qui nous donne: | ||
| Ligne 40 : | Ligne 41 : | ||
iptables -A INPUT -i vmbr0 -p tcp -m state --state NEW -m tcp --dport 8006 -j ACCEPT | iptables -A INPUT -i vmbr0 -p tcp -m state --state NEW -m tcp --dport 8006 -j ACCEPT | ||
iptables -A INPUT -i vmbr0 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT | iptables -A INPUT -i vmbr0 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT | ||
iptables - | iptables -P INPUT DROP | ||
iptables -P FORWARD DROP | |||
</source> | </source> | ||
| Ligne 49 : | Ligne 51 : | ||
ip6tables -P OUTPUT DROP | ip6tables -P OUTPUT DROP | ||
</source> | </source> | ||
= Persistance = | |||
Maintenant que nous avons toutes nos règles, ils faut les faire persister au redémarrage du serveur et pour cela nous allons utiliser le paquetage ''iptables-persistent'': | |||
<source lang=bash> | |||
apt -y install iptables-persistent | |||
</source> | |||
Il vous propose de sauvegarder les règles IPv4 et IPv6 mais pour ceux qui auraient raté le message, vous pouvez toujours faire: | |||
{|align=center | |||
|- | |||
|align=left| | |||
Pour IPv4 | |||
|width=10px| | |||
|align=left| | |||
Pour IPv6 | |||
|- | |||
|valign=top| | |||
<source lang=bash> | |||
iptables-save > /etc/iptables/rules.v4 | |||
</source> | |||
|width=10px| | |||
|valign=top| | |||
<source lang=bash> | |||
ip6tables-save > /etc/iptables/rules.v6 | |||
</source> | |||
|} | |||
On n'oubliera pas d'enregistrer le service au démarrage de la machine: | |||
<source lang=bash> | |||
systemctl enable netfilter-persistent | |||
</source> | |||
= Les autres interfaces = | |||
Si vous avez plusieurs cartes pour connecter vos conteneurs ou VM, vous ne devez avoir normalement qu'une seule interface d'administration. Cela veut dire que sur les autres interfaces il n'y a pas de configuration IP, donc pas de trafique qui circule. | |||
Je vous invite à installer un pare-feu sur chaque conteneurs et VM pour plus de sécurité... | |||
Dernière version du 30 juin 2026 à 17:51
Introduction
Vous n'êtes pas sans savoir qu'iptables est une commande permettant configurer netfilter la partie du noyau chargé du filtrage réseau. Iptables est installé de base sur Proxmox mais, comme Proxmox hérite de Debian, aucune configuration n'est faite et aucun moyen de charger la configuration n'est présent...
Si jamais vous voulez plus d'information à ce sujet, je vous invite à lire le cours sur les pare-feux ou les différents articles traitant du sujet !
Avant d'aller plus loin, veuillez configurer des noms explicite sur vos interfaces réseaux, dans cet article, l'interface que nous allons sécuriser est l'interface de management.
État des lieux
Vous pouvez voir la configuration en tapant la commande suivante:
# iptables -nvL Chain INPUT (policy ACCEPT 8969 packets, 2422K bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 2885 packets, 1041K bytes) pkts bytes target prot opt in out source destination
Vous pouvez constater que les polices sont sur ACCEPT et qu'aucune règle n'est présente dans la chaîne INPUT. C'est ce que les experts appellent une configuration en mode passoire 😂
Application des règles
Nous allons paramétrer quelques règles de bases sur l'interface vmbr0 qui nous sert de management, les mêmes qui sont présentes sur une machine Rocky à l'installation d'iptables, à savoir :
- on autorise tout ce qui fait parti d'une session déjà démarrée
- on autorise tout le trafique sur l'interface de loopback
- on autorise les messages ICMP (ping)
- on autorise le SSH (TCP/22)
- on drop tout le reste du trafique entrant
- on drop tout le trafique traversant
Et on oublie pas d'ajouter aussi le port de PveProxy (l'interface web) qui est le TCP/8006, ce qui nous donne:
iptables -A INPUT -i vmbr0 -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -i vmbr0 -p icmp -j ACCEPT iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -i vmbr0 -p tcp -m state --state NEW -m tcp --dport 8006 -j ACCEPT iptables -A INPUT -i vmbr0 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT iptables -P INPUT DROP iptables -P FORWARD DROP
Si vous n'utilisez pas d'IPv6, autant tout bloquer:
ip6tables -P INPUT DROP ip6tables -P FORWARD DROP ip6tables -P OUTPUT DROP
Persistance
Maintenant que nous avons toutes nos règles, ils faut les faire persister au redémarrage du serveur et pour cela nous allons utiliser le paquetage iptables-persistent:
apt -y install iptables-persistent
Il vous propose de sauvegarder les règles IPv4 et IPv6 mais pour ceux qui auraient raté le message, vous pouvez toujours faire:
|
Pour IPv4 |
Pour IPv6 | |
iptables-save > /etc/iptables/rules.v4 |
ip6tables-save > /etc/iptables/rules.v6 |
On n'oubliera pas d'enregistrer le service au démarrage de la machine:
systemctl enable netfilter-persistent
Les autres interfaces
Si vous avez plusieurs cartes pour connecter vos conteneurs ou VM, vous ne devez avoir normalement qu'une seule interface d'administration. Cela veut dire que sur les autres interfaces il n'y a pas de configuration IP, donc pas de trafique qui circule.
Je vous invite à installer un pare-feu sur chaque conteneurs et VM pour plus de sécurité...