Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

bridge + iptables

14 réponses
Avatar
Pascal
Soit un serveur kvm configuré de la sorte
auto eth0
iface eth0 manual
auto br0
iface br0 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 255.255.255.0
bridge_ports eth0
bridge_stp off
bridge_fd 2
bridge_maxwait 3

je souhaite restreindre l'accès, via iptable, à cette machine aussi bien
au niveau de l'hôte que des différentes machines virtuelles.
comment dois-je m'y prendre ?
j'envisageais de mettre des règles sur br0 pour l'hôte, et ensuite pour
chaques machines virtuelles sur leur ethx respectives.
La question que je me pose, est : en mettant des règles sur br0, ne
vais-je pas bloquer l'accès à mes vm par la même occasion ?

merci pour vos réponses

10 réponses

1 2
Avatar
Eric Belhomme
Le Wed, 11 May 2011 18:19:44 +0200, Pascal a écrit :

Soit un serveur kvm configuré de la sorte auto eth0
iface eth0 manual
auto br0
iface br0 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 255.255.255.0
bridge_ports eth0
bridge_stp off
bridge_fd 2
bridge_maxwait 3

je souhaite restreindre l'accès, via iptable, à cette machine aussi bien
au niveau de l'hôte que des différentes machines virtuelles. comment
dois-je m'y prendre ?
j'envisageais de mettre des règles sur br0 pour l'hôte, et ensuite pour
chaques machines virtuelles sur leur ethx respectives. La question que
je me pose, est : en mettant des règles sur br0, ne vais-je pas bloquer
l'accès à mes vm par la même occasion ?



Si tu veux juste bloquer l'accès à la machine sur laquelle est configurée
le pont, alors c'est cette interface là qu'il faut bloquer :

iptables -p INPUT DROP
iptables -p -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -p INPUT -i lo -j ACCEPT
iptables -p INPUT -i br0 -p tcp --dport 22 -m state --state NEW -j ACCEPT

Avec ceci, tous les paquets entrant sont droppés, sauf si il s'agit de
connexions déjà établies, ou sur l'interface de loopback, ou enfin que
c'est une connexion entrante sur le serveur ssh (port 22)

--
Rico
Je réponds ordinairement a ceux qui me demandent raison de mes voyages :
que je sais bien ce que je fuis, mais non ce que je cherche.
-+- Michel de Montaigne, Essais -+-
Avatar
Pascal
Le 12/05/2011 16:57, Eric Belhomme a écrit :
Le Wed, 11 May 2011 18:19:44 +0200, Pascal a écrit :

Soit un serveur kvm configuré de la sorte auto eth0
iface eth0 manual
auto br0
iface br0 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 255.255.255.0
bridge_ports eth0
bridge_stp off
bridge_fd 2
bridge_maxwait 3

je souhaite restreindre l'accès, via iptable, à cette machine aussi bien
au niveau de l'hôte que des différentes machines virtuelles. comment
dois-je m'y prendre ?
j'envisageais de mettre des règles sur br0 pour l'hôte, et ensuite pour
chaques machines virtuelles sur leur ethx respectives. La question que
je me pose, est : en mettant des règles sur br0, ne vais-je pas bloquer
l'accès à mes vm par la même occasion ?



Si tu veux juste bloquer l'accès à la machine sur laquelle est configurée
le pont, alors c'est cette interface là qu'il faut bloquer :

iptables -p INPUT DROP
iptables -p -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -p INPUT -i lo -j ACCEPT
iptables -p INPUT -i br0 -p tcp --dport 22 -m state --state NEW -j ACCEPT

Avec ceci, tous les paquets entrant sont droppés, sauf si il s'agit de
connexions déjà établies, ou sur l'interface de loopback, ou enfin que
c'est une connexion entrante sur le serveur ssh (port 22)



du coup sur cette machine physique je n'autorise que le ssh.
Maintenant sur une machine virtuelle son interface ethx mappée sur le
bridge sera t'elle impactée ?

merci pour ta réponse
Avatar
Pascal Hambourg
Salut,

Pascal a écrit :

j'envisageais de mettre des règles sur br0 pour l'hôte, et ensuite pour
chaques machines virtuelles sur leur ethx respectives. La question que
je me pose, est : en mettant des règles sur br0, ne vais-je pas bloquer
l'accès à mes vm par la même occasion ?







Ça dépend.
Si /proc/sys/net/bridge/bridge-nf-call-iptables=1 (valeur par défaut
hélas, source de nombreux problèmes), alors les paquets IPv4 pontés
(traversant un pont) traversent les chaînes PREROUTING, FORWARD et
POSTROUTING d'iptables ainsi que le suivi de connexion de netfilter
comme s'ils étaient routés. Et dans ce cas, ça dépend bien sûr aussi des
règles iptables mises en place. Celles suggérées par Eric ne concernent
que les paquets à destination de l'hôte (chaîne INPUT), pas ceux qui
sont pontés entre l'extérieur (eth0) et une machine virtuelle ou entre
deux machines virtuelles.

Si /proc/sys/net/bridge/bridge-nf-call-iptables=0, alors les paquets
IPv4 pontés sont ignorés par iptables et le suivi de connexion.

Maintenant sur une machine virtuelle son interface ethx mappée sur le
bridge sera t'elle impactée ?



Le seul trafic d'une machine virtuelle impacté sera celui à destination
de l'hôte puisqu'il traversera la chaîne INPUT de l'hôte.
Avatar
Pascal
-------- Message original --------

Salut,

Pascal a écrit :

j'envisageais de mettre des règles sur br0 pour l'hôte, et ensuite pour
chaques machines virtuelles sur leur ethx respectives. La question que
je me pose, est : en mettant des règles sur br0, ne vais-je pas bloquer
l'accès à mes vm par la même occasion ?







Ça dépend.
Si /proc/sys/net/bridge/bridge-nf-call-iptables=1 (valeur par défaut
hélas, source de nombreux problèmes), alors les paquets IPv4 pontés
(traversant un pont) traversent les chaînes PREROUTING, FORWARD et
POSTROUTING d'iptables ainsi que le suivi de connexion de netfilter
comme s'ils étaient routés. Et dans ce cas, ça dépend bien sûr aussi des
règles iptables mises en place. Celles suggérées par Eric ne concernent
que les paquets à destination de l'hôte (chaîne INPUT), pas ceux qui
sont pontés entre l'extérieur (eth0) et une machine virtuelle ou entre
deux machines virtuelles.

Si /proc/sys/net/bridge/bridge-nf-call-iptables=0, alors les paquets
IPv4 pontés sont ignorés par iptables et le suivi de connexion.

Maintenant sur une machine virtuelle son interface ethx mappée sur le
bridge sera t'elle impactée ?



Le seul trafic d'une machine virtuelle impacté sera celui à destination
de l'hôte puisqu'il traversera la chaîne INPUT de l'hôte.



Donc pour ma config j'ai tout intéret à mettre
"/proc/sys/net/bridge/bridge-nf-call-iptables=0", du coup j'applique une règle
sur br0 pour l'hôte restreignant ainsi l'accés à celui-ci uniquement en ssh
depuis mon poste.

Ensuite j'applique les règles que je veux sur les ethx de mes vm

Le fait de tout interdir sur br0 à part le traffic ssh , ne se répercutera pas
sur mes vm

Merci pour votre aide
Avatar
Pascal
-------- Message original --------

Salut,

Pascal a écrit :

j'envisageais de mettre des règles sur br0 pour l'hôte, et ensuite pour
chaques machines virtuelles sur leur ethx respectives. La question que
je me pose, est : en mettant des règles sur br0, ne vais-je pas bloquer
l'accès à mes vm par la même occasion ?







Ça dépend.
Si /proc/sys/net/bridge/bridge-nf-call-iptables=1 (valeur par défaut
hélas, source de nombreux problèmes), alors les paquets IPv4 pontés
(traversant un pont) traversent les chaînes PREROUTING, FORWARD et
POSTROUTING d'iptables ainsi que le suivi de connexion de netfilter
comme s'ils étaient routés. Et dans ce cas, ça dépend bien sûr aussi des
règles iptables mises en place. Celles suggérées par Eric ne concernent
que les paquets à destination de l'hôte (chaîne INPUT), pas ceux qui
sont pontés entre l'extérieur (eth0) et une machine virtuelle ou entre
deux machines virtuelles.

Si /proc/sys/net/bridge/bridge-nf-call-iptables=0, alors les paquets
IPv4 pontés sont ignorés par iptables et le suivi de connexion.

Maintenant sur une machine virtuelle son interface ethx mappée sur le
bridge sera t'elle impactée ?



Le seul trafic d'une machine virtuelle impacté sera celui à destination
de l'hôte puisqu'il traversera la chaîne INPUT de l'hôte.


merci pour ton aide ça marche nikel !!!
j'ai fait les tests avec les deux /proc/sys/net/bridge/bridge-nf-call-iptables=0
et /proc/sys/net/bridge/bridge-nf-call-iptables=1
y'a pas photo !!
merci encore
Avatar
Pascal Hambourg
Pascal a écrit :

Donc pour ma config j'ai tout intéret à mettre
"/proc/sys/net/bridge/bridge-nf-call-iptables=0", du coup j'applique une règle
sur br0 pour l'hôte restreignant ainsi l'accés à celui-ci uniquement en ssh
depuis mon poste.



Oui, mais dans ton cas ce n'est pas capital si l'hôte n'a des règles que
dans la chaîne INPUT. bridge-nf (c'est comme ça que ça s'appelle) pose
problème surtout dans le cas où la machine qui a le pont sert aussi de
routeur et/ou NAT car les mêmes chaînes iptables sont traversées par les
paquets routés et pontés, ce qui n'est pas forcément souhaité. iptables
peut faire la distinction avec la correspondance physdev mais ça
alourdit le jeu de règles.
Avatar
Pascal Hambourg
Pascal a écrit :

j'ai fait les tests avec les deux /proc/sys/net/bridge/bridge-nf-call-iptables=0
et /proc/sys/net/bridge/bridge-nf-call-iptables=1
y'a pas photo !!



Ah ? A quel niveau ?
Avatar
Pascal
Le 13/05/2011 19:39, Pascal Hambourg a écrit :
Pascal a écrit :

j'ai fait les tests avec les deux /proc/sys/net/bridge/bridge-nf-call-iptables=0
et /proc/sys/net/bridge/bridge-nf-call-iptables=1
y'a pas photo !!



Ah ? A quel niveau ?


bah avec 1 mes vm ne voient rien passer , tout est bloqué au niveau du
bridge, avec 0 les flux qui leurs sont destinés passent correctement.

hmm c'est clair ce que je dis là ? !!
Avatar
Pascal Hambourg
Pascal a écrit :
Le 13/05/2011 19:39, Pascal Hambourg a écrit :
Pascal a écrit :
j'ai fait les tests avec les deux /proc/sys/net/bridge/bridge-nf-call-iptables=0
et /proc/sys/net/bridge/bridge-nf-call-iptables=1
y'a pas photo !!


Ah ? A quel niveau ?


bah avec 1 mes vm ne voient rien passer , tout est bloqué au niveau du
bridge, avec 0 les flux qui leurs sont destinés passent correctement.



Avec quel jeu de règles iptables ?
Ce serait très surprenant avec du filtrage seulement dans INPUT comme
dans l'exemple proposé par Eric.
Avatar
Pascal
Le 13/05/2011 23:42, Pascal Hambourg a écrit :
Pascal a écrit :
Le 13/05/2011 19:39, Pascal Hambourg a écrit :
Pascal a écrit :
j'ai fait les tests avec les deux /proc/sys/net/bridge/bridge-nf-call-iptables=0
et /proc/sys/net/bridge/bridge-nf-call-iptables=1
y'a pas photo !!


Ah ? A quel niveau ?


bah avec 1 mes vm ne voient rien passer , tout est bloqué au niveau du
bridge, avec 0 les flux qui leurs sont destinés passent correctement.



Avec quel jeu de règles iptables ?
Ce serait très surprenant avec du filtrage seulement dans INPUT comme
dans l'exemple proposé par Eric.



l'exemple proposé à eric, autorise l'accès à la machine hôte uniquement
via ssh.
Ce qui signifie que tout accès à cette machine via un autre protocole
est exclu.
maintenant avec cette seule règle sur la machine hôte, si je souhaite
accéder à mon serveur postgresql, via un client postgresql, situé sur
une de mes vm si /proc/sys/net/bridge/bridge-nf-call-iptables=1, ça
m'est impossible, alors que si
/proc/sys/net/bridge/bridge-nf-call-iptables=0 c'est possible.
c'est le fonctionnement que je souhaitais.
on est d'accord ? ou bien j'ai pas tout compris et le fait que ça marche
est un heureux zazar ?

dans tous les cas merci encore pour vos réponses
1 2