My Iptables Script

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

Google Translate


Calendar

  • December 2011
    SatSunMonTueWedThuFri
     1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031 

Admin area