*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]

# allow established connections
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

# allow traffic from private LAN
-A INPUT -i eth1 -j ACCEPT
-A FORWARD -i eth1 -j ACCEPT

# allow ICMP (ping)
-A INPUT -p icmp -j ACCEPT

# allow loopback
-A INPUT -i lo -j ACCEPT

# uni subnets
:uni - [0:0]
-A INPUT -s 141.30.0.0/16 -j uni 
-A INPUT -s 141.76.0.0/16 -j uni

# public internet
:public - [0:0]
-A INPUT -j public

# all traffic from here on is being logged
:logging - [0:0]
-A INPUT -j logging
-A FORWARD -j logging

# reject unknown traffic with nice errors
-A INPUT -p tcp -j REJECT --reject-with tcp-reset
-A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
-A INPUT -j REJECT --reject-with icmp-proto-unreachable

# sshguard chain
:sshguard - [0:0]

# uni internal traffic
-A uni -p tcp --dport 22 -j sshguard
-A uni -p tcp --dport 22 -j ACCEPT

# public traffic ---------------------------------------------------------------

# traffic logging
-A logging -m limit --limit 2/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4

COMMIT

*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]

# masquerading (NAT)
-A POSTROUTING -o eth0 -j MASQUERADE

COMMIT
