# czyścimy dotychczasowe reguły
iptables -F

# zezwalamy na ruch na loopbacku (ważne!)
iptables -A INPUT -i lo -j ACCEPT

# zezwalamy na wszystkie polaczenia juz nawiazane
iptables -A INPUT -p tcp -j ACCEPT -m state --state ESTABLISHED
iptables -A INPUT -p tcp -j ACCEPT -m state --state RELATED
iptables -A INPUT -p udp -j ACCEPT -m state --state ESTABLISHED
iptables -A INPUT -p udp -j ACCEPT -m state --state RELATED
iptables -A INPUT -p icmp -j ACCEPT -m state --state ESTABLISHED
iptables -A INPUT -p icmp -j ACCEPT -m state --state RELATED
iptables -A FORWARD -p tcp -j ACCEPT -m state --state ESTABLISHED
iptables -A FORWARD -p tcp -j ACCEPT -m state --state RELATED
iptables -A FORWARD -p udp -j ACCEPT -m state --state ESTABLISHED
iptables -A FORWARD -p udp -j ACCEPT -m state --state RELATED
iptables -A FORWARD -p icmp -j ACCEPT -m state --state ESTABLISHED
iptables -A FORWARD -p icmp -j ACCEPT -m state --state RELATED

# zamknięcie wykrytej ostatnio luki w iptables
iptables -A OUTPUT -m state -p icmp --state INVALID -j DROP

# logujemy reszte (w ten sposób dowiemy się kto i kiedy próbował się do nas dostać)
iptables -A INPUT -j LOG -m limit --limit 10/hour --log-prefix "PODEJRZANY INPUT: "
iptables -A FORWARD -j LOG -m limit --limit 10/hour --log-prefix "PODEJRZANY FORWARD: "

# wycinamy cala reszte
iptables -A INPUT -j DROP
iptables -A FORWARD -j DROP