До сега съм ползвал помощни програми за защитната стена от рода на ufw,shorewall, но сега реших сам да си направя защитна стена. Горе долу се справих но искам да си кажете мнението дали е добре и има ли нужда нещо да се оптимизира. Иначе в този вариант за сега всичко работи.
GeSHi (Bash):
*filter
# Politiki po podrazbirane
-P INPUT DROP
-P OUTPUT ACCEPT
-P FORWARD ACCEPT
# Premahvame vsichki syshtestvuvashti pravila
-F
-X
# Othvyrlyane na tcp s nepravilni flagove
-N bad_tcp_packets
# tcp preminali osnovna proverka
-N allowed
# Vci`ki paketi syotvetno protokoli
-N tcp_packets
-N udp_packets
-N icmp_packets
# Bezuslovno razreshavane na vryzki kym lokalnia interfejs (loopback, 127.0.0.1)
-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
# -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# tuk otivat vsichki tcp-paketi, i shte bydat othvyrleni vsichki imashti status NEW, no nyamashti flagove SYN,ACK
# predpazva ot opredeleni tipove ataki podrobnosti v prilojenie B3 kym Iptables Tutorial
-A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j DROP
# Priemame vsichki paketi, otnasyashti se kym veche ustanovenite syedinenia
-A allowed -p TCP --syn -j ACCEPT
-A allowed -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
# Vsichki ostanali ot tazi veriga othvyrlyame
-A allowed -j DROP
# Otvaryame nyakoi portove, koito sa zatvoreni po podrazbirane
# -A tcp_packets -p TCP -s 0/0 --dport 21 -j allowed
# Priemame vhodyashti с 53-po udp (Domain Name Server)
-A udp_packets -p UDP -s 0/0 --sport 53 -j ACCEPT
# -A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 51413 -j ACCEPT
# ICMP
# razreshavame neobhodimite tipove
# Dest unreachable
-A INPUT -p icmp -m icmp --icmp-type 3 -j ACCEPT
# Time exceeded
-A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT
# Parameter problem
-A INPUT -p icmp -m icmp --icmp-type 12 -j ACCEPT
# Othvyrlyame pinga, kojto po podrazbirane e othvyrlen veche. Move da byde otredaktirano.
# -A INPUT -p icmp -m icmp --icmp-type 8 -j DROP
# Tova pravilo move da zameni gornoto
# Mashinata shte vryshta Host unreachable
-A INPUT -p icmp -m icmp --icmp-type 8 -j REJECT --reject-with icmp-host-unreachable
# Razdelyame paketite po systav vyv verigi
# tcp otiva na dopylnitelna proverka
# -A INPUT -p tcp -j bad_tcp_packets
# Vcichki paketi otnasyashti se kym veche ustanovenite syedinenia (za tcp
# zaradi otdelnata veriga e neobhodimo tova pravilo da se ukaje oshte vednyj)
-A INPUT -p ALL -i ppp0 -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p TCP -i ppp0 -j tcp_packets
-A INPUT -p UDP -i ppp0 -j udp_packets
-A INPUT -p ICMP -i ppp0 -j icmp_packets
# Spodelyane na interneta ot ppp0 kym eth1
-A FORWARD -o ppp0 -i eth1 -s 85.14.0.0/24 -m conntrack --ctstate NEW -j ACCEPT
-A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
COMMIT
*nat
-A POSTROUTING -j MASQUERADE
COMMIT
Един от въпросите ми е кое правило от двете е по-добре да се използва.
-A icmp_packets -p ICMP -s 0/0 --icmp-type 3 -j ACCEPT
или това, което съм плзвал в кода по-горе?