My Iptables Script
Sunday, January 15, 2012
Add a comment
The following is a quick and simple /etc/init.d/iptables Bash script that I use often. With it you can quickly setup and save local firewall rules on your Linux server; a good point of reference.
#!/bin/bash
syntax () {
echo "$0 {start|stop|status|restart|save}"
}
stop () {
# flush all chains.
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
}
start () {
##### default policy drop all input.
iptables -P INPUT DROP
##### allow all localhost and icmp.
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
##### allow new ssh connections.
iptables -A INPUT -p tcp -m state --state NEW -s 0/0 --dport 22 -j ACCEPT
##### allow new web server connections.
iptables -A INPUT -p tcp -m state --state NEW -s 0/0 --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -s 0/0 --dport 443 -j ACCEPT
##### allow new ftp connections.
#iptables -A INPUT -p tcp -m state --state NEW -s 0/0 --dport 21 -j ACCEPT
##### allow new samba connections from private intranet.
#iptables -A INPUT -p udp -s 192.168.1.0/24 --dport 137 -j ACCEPT
#iptables -A INPUT -p udp -s 192.168.1.0/24 --dport 138 -j ACCEPT
#iptables -A INPUT -p tcp -m state --state NEW -s 192.168.1.0/24 --dport 139 -j ACCEPT
#iptables -A INPUT -p tcp -m state --state NEW -s 192.168.1.0/24 --dport 445 -j ACCEPT
##### allow already established connections.
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
##### drop all connections not matched above.
iptables -A INPUT -s 0/0 -j REJECT
}
case $1 in
start) start ;;
stop) stop ;;
status) iptables -L ;;
restart) $0 stop ; $0 start ;;
save) iptables-save ;;
*) syntax ; exit 1 ;;
esac





