#!/bin/sh
# chain policies
# set default policies
/sbin/iptables -P INPUT DROP
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -P FORWARD DROP
# flush tables
/sbin/iptables -F
/sbin/iptables -F INPUT
/sbin/iptables -F OUTPUT
/sbin/iptables -F FORWARD
# /sbin/iptables -F -t mangle
/sbin/iptables -X
# create DUMP table
/sbin/iptables -N DUMP > /dev/null
/sbin/iptables -F DUMP
/sbin/iptables -A DUMP -p tcp -j LOG
/sbin/iptables -A DUMP -p udp -j LOG
# if you want to disable logs, comment above 2 lines and uncomment below 2 lines
# /sbin/iptables -A DUMP -p tcp
# /sbin/iptables -A DUMP -p udp
/sbin/iptables -A DUMP -p tcp -j REJECT --reject-with tcp-reset
/sbin/iptables -A DUMP -p udp -j REJECT --reject-with icmp-port-unreachable
/sbin/iptables -A DUMP -j DROP
# Stateful table
/sbin/iptables -N STATEFUL > /dev/null
/sbin/iptables -F STATEFUL
/sbin/iptables -I STATEFUL -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A STATEFUL -m state --state NEW -i ! eth0 -j ACCEPT
/sbin/iptables -A STATEFUL -j DUMP
# loopback rules
/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -A OUTPUT -o lo -j ACCEPT
# drop reserved addresses incoming
/sbin/iptables -A INPUT -i eth0 -s 0.0.0.0/8 -j DUMP
/sbin/iptables -A INPUT -i eth0 -s 1.0.0.0/8 -j DUMP
/sbin/iptables -A INPUT -i eth0 -s 5.0.0.0/8 -j DUMP
/sbin/iptables -A INPUT -i eth0 -s 7.0.0.0/8 -j DUMP
/sbin/iptables -A INPUT -i eth0 -s 10.0.0.0/8 -j DUMP
/sbin/iptables -A INPUT -i eth0 -s 23.0.0.0/8 -j DUMP
/sbin/iptables -A INPUT -i eth0 -s 27.0.0.0/8 -j DUMP
/sbin/iptables -A INPUT -i eth0 -s 31.0.0.0/8 -j DUMP
/sbin/iptables -A INPUT -i eth0 -s 36.0.0.0/8 -j DUMP
/sbin/iptables -A INPUT -i eth0 -s 39.0.0.0/8 -j DUMP
/sbin/iptables -A INPUT -i eth0 -s 41.0.0.0/8 -j DUMP
/sbin/iptables -A INPUT -i eth0 -s 42.0.0.0/8 -j DUMP
/sbin/iptables -A INPUT -i eth0 -s 58.0.0.0/8 -j DUMP
/sbin/iptables -A INPUT -i eth0 -s 59.0.0.0/8 -j DUMP
/sbin/iptables -A INPUT -i eth0 -s 60.0.0.0/8 -j DUMP
/sbin/iptables -A INPUT -i eth0 -s 127.0.0.0/8 -j DUMP
/sbin/iptables -A INPUT -i eth0 -s 169.254.0.0/16 -j DUMP
/sbin/iptables -A INPUT -i eth0 -s 172.16.0.0/12 -j DUMP
/sbin/iptables -A INPUT -i eth0 -s 192.168.0.0/16 -j DUMP
/sbin/iptables -A INPUT -i eth0 -s 197.0.0.0/8 -j DUMP
/sbin/iptables -A INPUT -i eth0 -s 224.0.0.0/3 -j DUMP
/sbin/iptables -A INPUT -i eth0 -s 240.0.0.0/8 -j DUMP
# allow certain inbound ICMP types
/sbin/iptables -A INPUT -i eth0 -p icmp --icmp-type destination-unreachable -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p icmp --icmp-type time-exceeded -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p icmp --icmp-type echo-reply -j ACCEPT
# opened ports
/sbin/iptables -A INPUT -p tcp -i eth0 --dport 20 -j ACCEPT
/sbin/iptables -A INPUT -p udp -i eth0 --dport 20 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -i eth0 --dport 21 -j ACCEPT
/sbin/iptables -A INPUT -p udp -i eth0 --dport 21 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -i eth0 --dport 22 -j ACCEPT
/sbin/iptables -A INPUT -p udp -i eth0 --dport 25 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -i eth0 --dport 25 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -i eth0 --dport 53 -j ACCEPT
/sbin/iptables -A INPUT -p udp -i eth0 --dport 53 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -i eth0 --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -i eth0 --dport 110 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -i eth0 --dport 113 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -i eth0 --dport 137:138 -j ACCEPT
/sbin/iptables -A INPUT -p udp -i eth0 --dport 137:138 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -i eth0 --dport 443 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -i eth0 --dport 8443 -j ACCEPT
# added stuff
# wget [url]FTP://[/url] transfers
/sbin/iptables -A INPUT -p tcp -i eth0 --sport 20 -j ACCEPT
# proftpd passive ports
/sbin/iptables -A INPUT -p tcp -i eth0 --dport 32750:33000 -j ACCEPT
# blocked virii
# MS SQL Server
/sbin/iptables -A INPUT -p tcp -i eth0 --dport 1433 -j DROP
# allow me (not required)
# /sbin/iptables -A INPUT -i eth0 -s 1.2.3.4/4 -j ACCEPT
# remote MySQL from my other server
# /sbin/iptables -A INPUT -p tcp -i eth0 -s 1.2.3.4 --dport 3306 -j ACCEPT
# push everything else to state table
/sbin/iptables -A INPUT -j STATEFUL
# personal ban list
# DoS attack Jan 12 2004 - commented...
# /sbin/iptables -A INPUT -i eth0 -s 12.34.56.78/4 -j DUMP