14 votes

iptables pour autoriser tout le trafic sortant d'origine locale ?

Je me demandais si quelqu'un pouvait m'aider avec la règle iptables suivante :

Nous aimerions autoriser TOUT le trafic d'origine locale (c'est-à-dire sur le serveur qui exécute iptables).

DNS, HTTP, etc... tout cela. Toute connexion initiée par le serveur utilisant iptables devrait être autorisée.

Actuellement, nous utilisons la politique par défaut de OUTPUT, ACCEPT. Est-ce correct ? Les entrées sont bloquées, je suppose donc que cela signifie que les connexions (à l'exception de celles que nous autorisons) ne peuvent pas être démarrées parce qu'elles seront abandonnées avant que notre côté ne puisse appliquer la politique OUTPUT ?

Désolé, mes compétences en matière d'iptables sont faibles ;)

Je vous remercie de votre attention.

30voto

Paul Ratazzi Points 949

Pour ce faire, il faut deux règles :

iptables -I OUTPUT -o eth0 -d 0.0.0.0/0 -j ACCEPT
iptables -I INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

Quelques notes.

  • Les règles préexistantes que vous avez peut-être déjà appliquées le font déjà, mais sous une forme différente.
  • Il s'agit d'utiliser -I pour obliger ces règles à être les premières. iptables Les règles sont évaluées de haut en bas.
  • En -o y -i signifient respectivement "out" et "in". Remplacer eth0 avec le nom de l'interface Ethernet appropriée.

0voto

cyphun Points 53

Actuellement, nous utilisons la politique par défaut de OUTPUT, ACCEPT.

C'est suffisant pour OUTPUT car Netfilter n'a pas besoin de règles spéciales pour démarrer le suivi des connexions avec état.

Mais si vous souhaitez filtrer le trafic entrant en fonction de " refus par défaut "Il est possible de le faire en changeant de politique INPUT -chaîne à DROP : iptables -P INPUT DROP

Ensuite, tout sera réglé avec seulement 2 règles :

iptables -A INPUT -j ACCEPT -i lo
iptables -A INPUT -j ACCEPT -m state --state RELATED,ESTABLISHED

Prêtez attention à la règle autorisant le trafic d'entrée sur l'interface loopback - comme je l'ai souligné dans mon billet " Pare-feu minimal pour l'utilisateur final "Sauf autorisation explicite, le trafic de bouclage ne sera pas traité par la vérification de l'état "établi", contrairement au trafic de retour, par exemple, eth0 .

Veiller à ce que cet ensemble minimal de règles est chargé " en l'état "sans interférer avec les règles qui existent déjà, il est pratique d'utiliser l'outil iptables-restore dans la session Shell :

lptables-restore <<__EOF__
-P INPUT DROP
-A INPUT -j ACCEPT -i lo
-A INPUT -j ACCEPT -m state --state RELATED,ESTABLISHED
__EOF__

Avant cela assurez-vous que vous ne couperez pas votre propre connexion au réseau 1 Bien que les sessions SSH déjà ouvertes continuent à fonctionner normalement, les tentatives d'ouverture de nouvelles sessions ne fonctionneront pas.

__

  1. Bien entendu, vous pouvez ajouter d'autres règles pour autoriser de telles connexions. Cela peut être aussi simple que -A INPUT -j ACCEPT -p tcp --dport 22 - il n'est pas nécessaire de bricoler -m state ici. N'oubliez pas non plus de fixer lptables-restore retour à iptables-restore avant de l'essayer ;)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X