OVH Cloud OVH Cloud

iptables [conf réseau]

1 réponse
Avatar
Guillaume ALLEON
Je reviens abvec mon pb de visibilité de machines
| |
[A]192.168.3.1<->192.168.3.2(eth1)|B|
| |(eth0)192.168.0.1<->192.168.0.2[C]

Je veux faire du scp de C vers A sans rien n'accepter de A vers C.
iptables semble la solution malheureusement:
- je ne sais pas comment fonctionne le protocole en détail,
- je fais mes premiers pas en iptables ;-)

Par ex, quand C vers une requete sur le port 22 vers A, sur quel port
attend-il un retour:

Sur la machine B, je mettrais bien uniquement les règles suivantes:

Pour le retour une règle de type suivante suffit-elle (sans avoir
d'effet de bord):

iptables -A FORWARD -i eth1 -o eth0 -m state --state ESTABLISHED,RELATED
-j ACCEPT

faut-il spécifier le port ?

Pour l'initiation, je proposerais bien:

iptables -A FORWARD -i eth0 -o eth1 --dport 22 -m state --state NEW -j
ACCEPT

Merci
Guillaume

1 réponse

Avatar
Pascal
Salut,

Je reviens abvec mon pb de visibilité de machines
| |
[A]192.168.3.1<->192.168.3.2(eth1)|B|
| |(eth0)192.168.0.1<->192.168.0.2[C]

Je veux faire du scp de C vers A sans rien n'accepter de A vers C.
iptables semble la solution malheureusement:
- je ne sais pas comment fonctionne le protocole en détail,
- je fais mes premiers pas en iptables ;-)

Par ex, quand C vers une requete sur le port 22 vers A, sur quel port
attend-il un retour:


Sur le port que A a utilisé comme port source pour sa requête. Dans les
paquets retour, les ports source et destination sont permutés par
rapport aux paquets aller.

Sur la machine B, je mettrais bien uniquement les règles suivantes:

Pour le retour une règle de type suivante suffit-elle (sans avoir
d'effet de bord):

iptables -A FORWARD -i eth1 -o eth0 -m state --state ESTABLISHED,RELATED
-j ACCEPT


Oui.

faut-il spécifier le port ?


Non, ce n'est pas nécessaire. Il suffit de spécifier les contraintes
dans la règle qui traite les paquets qui sont dans l'état NEW.

Pour l'initiation, je proposerais bien:

iptables -A FORWARD -i eth0 -o eth1 --dport 22 -m state --state NEW -j
ACCEPT


Il manque la correspondance du protocole TCP : -p tcp
Aussi, cette règle accepte le premier paquet aller (NEW) mais pas les
paquets aller suivants. Il faut donc une autre règle pour accepter ces
derniers, similaire à celle qui accepte les paquets retour dans l'autre
sens :

iptables -A FORWARD -i eth0 -o eth1
-m state --state ESTABLISHED,RELATED -j ACCEPT

Tu peux encore durcir la règle en spécifiant les plages d'adresses
source et destination autorisées : -s <ip_B> -d <ip_C>
et en spécifiant que le paquet doit être de type SYN : --syn

Et ne pas oublier :
- de régler la politique par défaut de la chaîne FORWARD à DROP :

iptables -P FORWARD DROP

- les règles pour accepter le ping (ICMP echo request) dans les deux
sens, utile pour le test de la connectivité IP :

iptables -A FORWARD -i eth0 -o eth1 -p icmp --icmp-type echo-request
-j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p icmp --icmp-type echo-request
-j ACCEPT

- l'avant-dernière règle pour rejeter les paquets dans un état valide
mais non autorisés :

iptables -A FORWARD -m state NEW,ESTABLISHED,RELATED -j REJECT

- la dernière règle pour bloquer les paquets dans un état invalide :

iptables -A FORWARD -j DROP