On Thursday 09 March 2006 02:19, Vladimir Vitkov wrote: > # populating invalid/broken/shit > $IPT -A bad_packets -p ALL -i $INET_IFACE -s $LOCAL_NET -j DROP > $IPT -A bad_packets -p ALL -m state --state INVALID -j DROP > $IPT -A bad_packets -p tcp -j bad_tcp_packets > $IPT -A bad_packets -p ALL -j RETURN > > # Portscans mbuahahahah > $IPT -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j REJECT > --reject-with icmp-host-unreachable > $IPT -A bad_tcp_packets -p tcp --tcp-flags ALL NONE -j REJECT > $IPT -A bad_tcp_packets -p tcp --tcp-flags ALL ALL -j REJECT > $IPT -A bad_tcp_packets -p tcp --tcp-flags ALL FIN,URG,PSH -j REJECT > $IPT -A bad_tcp_packets -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j > REJECT $IPT -A bad_tcp_packets -p tcp --tcp-flags SYN,RST SYN,RST -j REJECT > $IPT -A bad_tcp_packets -p tcp --tcp-flags SYN,FIN SYN,FIN -j REJECT $IPT > -A bad_tcp_packets -p tcp -j protections > $IPT -A bad_tcp_packets -p tcp -j RETURN > > # Protections from rusty russel > $IPT -A protections -p tcp --syn -m limit --limit 5/s -j ACCEPT > $IPT -A protections -p icmp --icmp-type echo-request -m limit --limit 5/s > -j ACCEPT $IPT -A protections -p ALL -j RETURN > # efg > $IPT -A protections --fragment -p ICMP -j REJECT > $IPT -A protections -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT > $IPT -A protections -j RETURN > > # incoming udp services > for PORT in $EXTERN_PORTS ; do > $IPT -A udp_inbound -p UDP -s 0/0 --dport $PORT -j ACCEPT > done > $IPT -A udp_inbound -p UDP -j RETURN > > $IPT -A udp_outbound -p UDP -s 0/0 -j ACCEPT > > # incoming tcp services > for PORT in $EXTERN_PORTS ; do > $IPT -A tcp_inbound -p TCP -s 0/0 --destination-port $PORT -j > ACCEPT done > $IPT -A tcp_inbound -p TCP -j RETURN > > # outgoing tcp services > $IPT -A tcp_outbound -p TCP -s 0/0 -j ACCEPT > > echo "Process INPUT chain ..." > # Start feeding the pig > $IPT -A INPUT -p ALL -i $LO_IFACE -j ACCEPT > $IPT -A INPUT -p ALL -j bad_packets > # local access > $IPT -A INPUT -p ALL -i $LOCAL_IFACE -s $LOCAL_NET -j > ACCEPT $IPT -A INPUT -p ALL -i $LOCAL_IFACE -d $LOCAL_BCAST > -j ACCEPT > > $IPT -A INPUT -p ALL -i $INET_IFACE -m state --state ESTABLISHED,RELATED -j > ACCEPT > > $IPT -A INPUT -p TCP -i $INET_IFACE -j tcp_inbound > $IPT -A INPUT -p UDP -i $INET_IFACE -j udp_inbound > > $IPT -A INPUT -m pkttype --pkt-type broadcast -j DROP > > echo "Process FORWARD chain ..." > $IPT -A FORWARD -p ALL -j bad_packets > $IPT -A FORWARD -p tcp -i $LOCAL_IFACE -j tcp_outbound > $IPT -A FORWARD -p udp -i $LOCAL_IFACE -j udp_outbound > $IPT -A FORWARD -p ALL -i $LOCAL_IFACE -j ACCEPT > $IPT -A FORWARD -i $INET_IFACE -m state --state ESTABLISHED,RELATED -j > ACCEPT > > echo "Process OUTPUT chain ..." > $IPT -A OUTPUT -m state -p icmp --state INVALID -j DROP > $IPT -A OUTPUT -p ALL -s $LO_IP -j ACCEPT > $IPT -A OUTPUT -p ALL -o $LO_IFACE -j ACCEPT > $IPT -A OUTPUT -p ALL -s $LOCAL_IP -j ACCEPT > $IPT -A OUTPUT -p ALL -o $LOCAL_IFACE -j ACCEPT > $IPT -A OUTPUT -p ALL -o $INET_IFACE -j ACCEPT > > echo "Load rules for nat table ..." > ## DNAT's > $IPT -t nat -A PREROUTING -p tcp -i $INET_IFACE --dport <port> -j DNAT --to > <ip>:<port> > > ## MASQ & SNAT > $IPT -t nat -A POSTROUTING -s <IP> -o $INET_IFACE -j SNAT --to-source > $INET_ADDRESS $IPT -t nat -A POSTROUTING -s <IP2> -o $INET_IFACE -j > MASQUERADE > > echo "Load rules for mangle table ..." > $IPT -t mangle -A PREROUTING -i $LOCAL_IFACE -j TTL --ttl-inc 1 > $IPT -t mangle -A POSTROUTING -o $LOCAL_IFACE -j TTL --ttl-inc 1 > > $IPT -t mangle -A PREROUTING -i $INET_IFACE -j TTL --ttl-inc 1 > $IPT -t mangle -A POSTROUTING -o $INET_IFACE -j TTL --ttl-set 128 > > # mangle MAC protection > $IPT -t mangle -A PREROUTING -i $LOCAL_IFACE -s <IP> -m mac --mac-source ! > <mac> -j DROP > > $IPT -P INPUT DROP > $IPT -P OUTPUT DROP > $IPT -P FORWARD DROP > ======== FW END ========= > > Моля за за съвети/забележки и т.н. > Да знам че е селско да разчитам ня някакви скриптове за такова нещо но > самият FW е сглобяван преди толкова време и толкова пъти е надграждан на > парче че не ми се мисли. Конкретно в случая търся помощ по следните > въпроси: > 1) Защо по дяволите порт който би трябвали да е брутално затворен не е? > 2) как конекция в състояние NEW минава пре firewall който няма правило от > типа "-m state NEW -j ACCEPT"?? Като попрегледах набързо, без да се задълбочавам, струва ми се че всички нормални TCP конекции, независимо от порта, минават по следния път: [bad_packets] => [bad_tcp_packets] => [protections] => ACCEPT(още с първото правило модул limit) В действителност рутера ти е отворен, а не затворен за света!
Георги Акабалиев