#!/bin/bash #First we flush our current rules iptables -F iptables -t nat -F #Setup default policies to handle unmatched traffic iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP export LAN=venet0 #export LAN=pdummy0 #export LAN=vif1.0 #export LAN=dummy0 export WAN=eth0 #Then we lock our services so they only work from the LAN iptables -I INPUT 1 -i ${LAN} -j ACCEPT iptables -I INPUT 1 -i lo -j ACCEPT iptables -A INPUT -p UDP --dport bootps -i ! ${LAN} -j REJECT iptables -A INPUT -p UDP --dport domain -i ! ${LAN} -j REJECT #(Optional) Allow access to our ssh server from the WAN iptables -A INPUT -p TCP --dport ssh -i ${WAN} -j ACCEPT #Allow access to our vmware server from the WAN iptables -A INPUT -p TCP --dport 902 -i ${WAN} -j ACCEPT iptables -A INPUT -p TCP --dport 903 -i ${WAN} -j ACCEPT #Drop TCP / UDP packets to privileged ports iptables -A INPUT -p TCP -i ! ${LAN} -d 0/0 --dport 0:1023 -j DROP iptables -A INPUT -p UDP -i ! ${LAN} -d 0/0 --dport 0:1023 -j DROP #Finally we add the rules for NAT iptables -I FORWARD -i ${LAN} -d 192.168.2.0/255.255.255.0 -j DROP iptables -A FORWARD -i ${LAN} -s 192.168.2.0/255.255.255.0 -j ACCEPT iptables -A FORWARD -i ${WAN} -d 192.168.2.0/255.255.255.0 -j ACCEPT iptables -t nat -A POSTROUTING -o ${WAN} -j MASQUERADE #Tell the kernel that ip forwarding is OK echo 1 > /proc/sys/net/ipv4/ip_forward for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done #This is so when we boot we don't have to run the rules by hand /etc/init.d/iptables save