règle iptables pour autoriser tout le trafic sortant localement?

11

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

Nous aimerions autoriser TOUT et TOUT trafic d'origine locale (comme sur le serveur exécutant iptables).

DNS, HTTP, etc ... tout cela. Toute connexion initiée par le serveur exécutant iptables doit être autorisée.

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

Désolé, mes compétences iptables sont faibles;)

Merci de bien vouloir.

anonyme-un
la source

Réponses:

26

Pour ce faire, vous avez besoin de 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 pouvez avoir peuvent déjà le faire, mais elles sont différentes.
  • Cela permet -Ide forcer ces règles à être les premières. iptablesles règles sont évaluées de haut en bas.
  • Les drapeaux -oet -isignifient respectivement "out" et "in". Remplacez-le eth0par le nom d'interface Ethernet approprié.
bahamat
la source
nous avons les deux :) j'ai omis de mentionner le 2ème parce que comme je l'ai dit ... mes compétences iptables sont une sauce faible. merci pour la clarification :)
anonyme-one
2
-d 0.0.0.0/0est redondant et non nécessaire.
zapstar
Très bonne réponse. Mais maintenant, je suis en mesure d'envoyer une requête ping au serveur et je ne comprends pas pourquoi. Peux-tu expliquer?
Daniel
@Daniel Parce que si vous autorisez uniquement le trafic sortant, la réponse ping sera supprimée par le filtre de paquets lorsqu'elle atteindra votre hôte. Pour éviter cela, vous devez également autoriser le trafic entrant associé à la même session que le trafic sortant ou lié à celui-ci. En d'autres termes, étant donné que la réponse ping est liée à la demande ping, elle doit être autorisée. S'il y a une demande de ping entrante et aucun ping sortant enregistré dans la table de session, le paquet entrant serait abandonné. J'espère que cela a du sens!
bahamat
@bahamat: Après avoir réessayé, j'ai trouvé que je devais autoriser explicitement le trafic icmp. Et je parlais de pouvoir cingler le serveur, où j'ai implémenté les règles ci-dessus. Je ne peux pas le reproduire btw., J'ai peut-être fait une erreur quelque part. Merci quand même.
Daniel
0

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

Cela suffit 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 selon la politique de " refus par défaut ", vous pouvez le faire en basculant la INPUTchaîne sur DROP:iptables -P INPUT DROP

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

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

Faites attention à la règle autorisant le trafic d'entrée sur l'interface de bouclage - comme je l'ai souligné dans mon blog " Pare-feu minimal pour l'utilisateur final ", sauf autorisation explicite, le trafic de bouclage ne sera pas géré par la vérification d'état "établie", par rapport au retour le trafic sur, disons, eth0.

Pour vous assurer que cet ensemble minimal de règles est chargé " tel quel" sans interférer avec les règles qui pourraient déjà exister, il est pratique de l'utiliser iptables-restoredans SHELL-session:

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

Avant de faire cela, assurez-vous de ne pas couper votre propre connexion réseau 1 , bien que les sessions SSH déjà ouvertes devraient continuer à fonctionner normalement, les tentatives pour en ouvrir de nouvelles ne fonctionneront pas.

__

  1. Bien sûr, vous pouvez ajouter d'autres règles pour autoriser de telles connexions. Cela peut être aussi simple que juste -A INPUT -j ACCEPT -p tcp --dport 22- pas besoin de bricoler -m stateici. N'oubliez pas non plus de vous y lptables-restoreremettre iptables-restoreavant de l'essayer;)
poige
la source