说明:
局域网网关: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