On Mon, 9 Apr 2012, =?ISO-8859-1?Q?Terry_N?= wrote:
Hi,
after so many attempts of unsuccessfully restricted and allowed specified
domain from accessing my vhost, I tried the firewall. Firewall did not
work. Not sure where I messed it up. See below, port 80, REJECT ip_address
wasn't working. That IP address was my laptop:
<snip apache bits...>
FIREWALL:
*nat
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o eth+ -j MASQUERADE
COMMIT
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
So far so good...
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth+ -j ACCEPT
These rule will accept all traffic from lo or any interface with a name
starting with eth...
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -s 192.168.1.xyz --dport 80 -j REJECT
This attempt to reject the traffic from 192.168.1.xyz to tcp port 80 will
have no effect if the traffic came from lo or eth+ ... For this to have
an effect you probably want to move it above the accepts on eth+ !
-A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -p icmp -j ACCEPT
-A FORWARD -i lo -j ACCEPT
-A FORWARD -i eth+ -j ACCEPT
-A FORWARD -o eth+ -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
This INPUT rule is out of the *usual* order but quite valid, it will
reject inbound traffic, but not for anything which has already been dealt
with, ie anything on an interface not matching lo or eth+ (pppN or bridges
for example).
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
If you run iptables-save after loading your rules you will see the current
rules in a format you can easily/quickly load back in.
Using:
iptables -nvL INPUT
will show usage counts for each rule, which can help catch some errors
(e.g a rule having 0 uses probably means that all traffic it would match
is already handled by a rule earlier in the chains)...
-- Jon