- 论坛徽章:
- 0
|
这是我自己写的IPTABLES,跑起来好象有 222.222.222.11 访问不稳定的情况,是否跟 MASQUERADE 有关系?另外这个脚本,感觉很复杂,是不是有些没必要的可以删除的?
===================================================
# 启动IP转发功能
sysctl -w net.ipv4.conf.all.forwarding=1
# 装载FTP模块
modprobe ip_nat_ftp
#清除预定表filter中,所有规则链中的规则
iptables -F
#清除预定表filter中,使用者自定链中的规则
iptables -X
#清除预定表mangle中,所有规则链中的规则
iptables -F -t mangle
#清除预定表mangle中,使用者自定链中的规则
iptables -X -t mangle
#清除nat表中的规则
iptables -F -t nat
iptables -X -t nat
iptables -Z -t nat
###---------------------------------------------------###
#设定预设规则
###---------------------------------------------------###
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# 对非内网数据包进行伪装
iptables -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j MASQUERADE
iptables -A POSTROUTING -s 10.10.0.0/16 -o eth1 -j MASQUERADE
iptables -A POSTROUTING -s 192.168.1.0/24 -o eth2 -j MASQUERADE
iptables -A POSTROUTING -s 10.10.0.0/16 -o eth2 -j MASQUERADE
# 允许外网机的IP访问内网机,IP转换成网关IP
iptables -A POSTROUTING -p tcp -m tcp -d 192.168.1.5 --dport 80 -j SNAT --to 192.168.1.1
iptables -A POSTROUTING -p tcp -m tcp -d 192.168.1.6 --dport 80 -j SNAT --to 192.168.1.1
iptables -A POSTROUTING -p tcp -m tcp -d 192.168.1.6 --dport 8080 -j SNAT --to 192.168.1.1
# 防止外网用内网ip欺骗
iptables -A POSTROUTING -t nat -s 192.168.1.0/24 -i eth1 -j DROP
iptables -A POSTROUTING -t nat -s 192.168.1.0/24 -i eth2 -j DROP
iptables -A POSTROUTING -t nat -s 10.10.0.0/16 -i eth1 -j DROP
iptables -A POSTROUTING -t nat -s 10.10.0.0/16 -i eth2 -j DROP
# 开放80端口WEB服务
iptables -A POSTROUTING -t nat -p tcp -m tcp -d 222.222.222.10 --dport 80 -j DNAT --to-destination 192.168.1.5:80
iptables -A POSTROUTING -t nat -p tcp -m tcp -d 222.222.222.11 --dport 80 -j DNAT --to-destination 192.168.1.6:80
iptables -A POSTROUTING -t nat -p tcp -m tcp -d 222.222.222.11 --dport 8080 -j DNAT --to-destination 192.168.1.6:8080
# 丢弃坏的TCP包
iptables -A FORWARD -p TCP -m state --state NEW -j DROP ! --syn
# 阻止外部数据包使用 loopback 地址
iptables -A INPUT -s 127.0.0.1 -i eth1 -j DROP
iptables -A FORWARD -s 127.0.0.1 -i eth1 -j DROP
iptables -A INPUT -d 127.0.0.1 -i eth1 -j DROP
iptables -A FORWARD -d 127.0.0.1 -i eth1 -j DROP
iptables -A INPUT -s 127.0.0.1 -i eth2 -j DROP
iptables -A FORWARD -s 127.0.0.1 -i eth2 -j DROP
iptables -A INPUT -d 127.0.0.1 -i eth2 -j DROP
iptables -A FORWARD -d 127.0.0.1 -i eth2 -j DROP
# 防止互联网流入的数据包使用内网IP欺骗
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -j DROP
iptables -A INPUT -s 192.168.1.0/24 -i eth1 -j DROP
iptables -A FORWARD -s 192.168.1.0/24 -i eth2 -j DROP
iptables -A INPUT -s 192.168.1.0/24 -i eth2 -j DROP
iptables -A INPUT -s 10.10.0.0/16 -i eth1 -j DROP
iptables -A FORWARD -s 10.10.0.0/16 -i eth1 -j DROP
iptables -A INPUT -s 10.10.0.0/16 -i eth2 -j DROP
iptables -A FORWARD -s 10.10.0.0/16 -i eth2 -j DROP
# 阻塞 NetBios 数据包流出(如果内网有 windows 机器)。
iptables -A FORWARD -p tcp -o eth1 --sport 134:139 -j DROP
iptables -A FORWARD -p udp -o eth1 --sport 134:139 -j DROP
iptables -A OUTPUT -p tcp -o eth1 --sport 134:139 -j DROP
iptables -A OUTPUT -p udp -o eth1 --sport 134:139 -j DROP
iptables -A FORWARD -p tcp -o eth2 --sport 134:139 -j DROP
iptables -A FORWARD -p udp -o eth2 --sport 134:139 -j DROP
iptables -A OUTPUT -p tcp -o eth2 --sport 134:139 -j DROP
iptables -A OUTPUT -p udp -o eth2 --sport 134:139 -j DROP
# 允许本地 loopback
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# 保持来自本机和内网数据包的连接状态
iptables -A FORWARD -m state -o eth1 --state NEW -j ACCEPT
iptables -A FORWARD -m state -o eth2 --state NEW -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# 对于不管来自哪里的ip碎片都进行控制,允许每秒通过100个碎片
iptables -A FORWARD -m limit -f --limit 100/s --limit-burst 100 -j ACCEPT
# icmp包通过的控制,防止icmp黑客攻击
iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
# 允许来自内网的数据包
iptables -A INPUT -i eth0 -j ACCEPT
iptables -A FORWARD -p tcp -d 192.168.1.5 --dport 80 -j ACCEPT
iptables -A FORWARD -p tcp -d 192.168.1.6 --dport 80 -j ACCEPT
iptables -A FORWARD -p tcp -d 192.168.1.6 --dport 8080 -j ACCEPT
iptables -A FORWARD -s 192.168.1.0/24 -i eth0 -o eth1 -j ACCEPT
iptables -A FORWARD -s 192.168.1.6 -i eth0 -o eth2 -j ACCEPT
[ 本帖最后由 雨猫 于 2006-12-6 18:13 编辑 ] |
|