Here's the iptables script:
echo 1 > /proc/sys/net/ipv4/conf/eth0/rp_filter
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 1 > /proc/sys/net/ipv4/conf/all/log_martians
iptables -F
iptables -X
iptables -Z
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -A INPUT -p icmp -m icmp --icmp-type echo-request -j DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -N TCPIN
iptables -N UDPIN
iptables -N TCPOUT
iptables -N UDPOUT
iptables -N VALIDTCP
iptables -N LOGDROP
iptables -A INPUT -p tcp -j VALIDTCP
iptables -A INPUT -p tcp -j TCPIN
iptables -A INPUT -p udp -j UDPIN
iptables -A OUTPUT -p tcp -j VALIDTCP
iptables -A OUTPUT -p tcp -j TCPOUT
iptables -A OUTPUT -p udp -j UDPOUT
iptables -A TCPIN -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A TCPIN -p tcp -m state --state NEW --dport 2122 -j ACCEPT
iptables -A TCPIN -p tcp -m state --state NEW --dport 80 -j ACCEPT
iptables -A TCPIN -p tcp -m state --state NEW --dport 443 -j ACCEPT
iptables -A UDPIN -p udp --dport 53 -j ACCEPT
iptables -A TCPIN -p tcp -m state --state NEW --dport 53 -j ACCEPT
iptables -A LOGDROP -j LOG --log-ip-options --log-tcp-options --log-level debug --log-prefix IPTABLES:
iptables -A LOGDROP -j DROP
iptables -A VALIDTCP -p tcp --tcp-flags ALL NONE -j LOGDROP
iptables -A VALIDTCP -p tcp --tcp-flags ACK,FIN FIN -j LOGDROP
iptables -A VALIDTCP -p tcp --tcp-flags ACK,PSH PSH -j LOGDROP
iptables -A VALIDTCP -p tcp --tcp-flags ACK,URG URG -j LOGDROP
iptables -A VALIDTCP -p tcp --tcp-flags SYN,RST SYN,RST -j LOGDROP
iptables -A VALIDTCP -p tcp --tcp-flags SYN,FIN SYN,FIN -j LOGDROP
iptables -A VALIDTCP -p tcp --tcp-flags FIN,RST FIN,RST -j LOGDROP
As soon as I apply that, my DNS lookups all fail... What's wrong with it? :/
iptables -nvLbefore and after a name resolve and see if the packet counts tell you where the query went. – yukondude Sep 2 '10 at 15:53