说明:

局域网网关:192.168.1.1

eth0 192.168.1.110 (intel 10、100M自适应网卡,仅局域网特定主机192.168.1.11可访问)

eth1 192.168.1.100  (intel 千兆网卡,仅供互联网用户访问,即来自192.168.1.1的访问)

centos 5.5主机运行vsftpd、sshd服务(tcp 2222供互联网用户访问,tcp 22仅供局域网192.168.1.11访问),同时要能在centos主机上从eth0上实现yum install功能。

#############以下部分为iptables的脚本##########################

IPTABLES=/sbin/iptables

MODPROBE=/sbin/modprobe

#####flush existing rules and chain policy setting to DROP########

echo "[+]Flushing existing iptables rules……"


$IPTABLES -F

$IPTABLES -F -t nat

$IPTABLES -X

$IPTABLES -P INPUT DROP

$IPTABLES -P OUTPUT DROP

$IPTABLES -P FORWARD DROP

#####load ftp connection modules###

$MODPROBE ip_conntrack

$MODPROBE ip_nat_ftp

$MODPROBE ip_conntrack_ftp

########INPUT chain############

echo "[+]Seting up INPUT chain……"

####state tracking rules

$IPTABLES -A INPUT -m state --state INVALID -j LOG --log-prefix "DROP INVALID" --log-ip-options --log-tcp-options

$IPTABLES -A INPUT -m state --state INVALID -j DROP

$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

####anti-spoofing rules

$IPTABLES -A INPUT -i eth0 -s ! 192.168.1.11 -j LOG --log-prefix "SPOOFED PKT"

$IPTABLES -A INPUT -i eth0 -s ! 192.168.1.11 -j DROP

$IPTABLES -A INPUT -i eth1 -s ! 192.168.1.1 -j LOG --log-prefix "SPOOFED PKT"

$IPTABLES -A INPUT -i eth1 -s ! 192.168.1.1 -j DROP

####ACCPET rules

$IPTABLES -A INPUT -i eth0 -p tcp -s 192.168.1.11 -m multiport --dport 20,22,2121 --syn -m state --state NEW -j ACCEPT

$IPTABLES -A INPUT -i eth1 -p tcp -s 192.168.1.1 -m multiport --dport  20,2222,2121 --syn -m state --state NEW -j ACCEPT

$IPTABLES -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

######default INPUT LOG rule####

$IPTABLES -A INPUT -i ! lo -j LOG --log-prefix "drop" --log-ip-options --log-tcp-options

######OUTPUT chain#######

echo "[+]Seting up OUTPUT chain……"

####state tracking rules

$IPTABLES -A OUTPUT -m state --state INVALID -j LOG --log-prefix "DROP INVALID" --log-ip-options --log-tcp-options

$IPTABLES -A OUTPUT -m state --state INVALID -j DROP

$IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

####ACCEPT rules for allowing connectios out

$IPTABLES -A OUTPUT -o eth0 -p tcp --dport 21 --syn -m state --state NEW -j ACCEPT

$IPTABLES -A OUTPUT -o eth0 -p udp --dport 53  -m state --state NEW -j ACCEPT

$IPTABLES -A OUTPUT -o eth0 -p tcp --dport 80 --syn -m state --state NEW -j ACCEPT

$IPTABLES -A OUTPUT -o eth0 -p tcp --dport 443 --syn -m state --state NEW -j ACCEPT

$IPTABLES -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT

####default OUTPUT LOG rule

$IPTABLES -A OUTPUT -o ! lo -j LOG --log-prefix "DROP" --log-ip-options --log-tcp-options