9

I was wondering if someone could help me with the following iptables rule:

We would like to allow ANY and ALL locally originating (as in, on the server running iptables) traffic.

DNS, HTTP, etc... all of it. Any connection initiated by the server running iptables should be allowed.

Currently we are using basically OUTPUT default policy, ACCEPT. Is this correct? Inputs are blocked, so I am assuming this means that the connections (except those we allow) cannot be started because they will be dropped before our side can hit the OUTPUT policy?

Sorry, my iptables skills are weak ;)

Thank you kindly.

24

You need two rules to do that:

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

Some notes.

  • Preexisting rules that you may have may do this already, but look different.
  • This uses -I to force these rules to be first. iptables rules are evaluated top down.
  • The -o and -i flags mean "out" and "in" respectively. Replace eth0 with the proper ethernet interface name.
  • we have both :) i failed to mention the 2nd one because like i said... my iptables skills are weak sauce. thanks for the clarification :) – anonymous-one Sep 18 '12 at 11:43
  • -d 0.0.0.0/0 is redundant and not needed. – zapstar Sep 20 '18 at 10:41
  • Great answer. But now I am able to ping the server, and I don't understand why. Can you explain? – Daniel Feb 22 at 6:07
  • @Daniel Because if you only allow outbound traffic, then the ping reply will get dropped by the packet filter when it reaches your host. To prevent this, you also need to allow incoming traffic that is associated with the same session as, or is related to, any outgoing traffic. In other words, because the ping reply is related to the ping request, it should be permitted. If there is an incoming ping request and no outgoing ping recorded in the session table then the incoming packet would be dropped. Hope that makes sense! – bahamat Feb 25 at 20:02
  • @bahamat: After I tried again, I found I need to allow icmp traffic explicitly. And I was speaking about being able to ping the server, where I implemented the rules above. Cannot reproduce it btw., maybe I made a mistake somewhere. Thanks anyway. – Daniel Feb 27 at 6:44

Your Answer

By clicking "Post Your Answer", you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.