LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 816|回复: 2

无法上网,请帮我看一下iptables脚本

[复制链接]
发表于 2005-4-12 14:41:34 | 显示全部楼层 |阅读模式
请帮我看看:



#!/bin/sh


echo "Starting iptables rules..."


#
# 1. configuration options
#

INET_IP="162.111.44.199"
INET_IFACE="eth0"


LAN_IP_RANGE="192.169.10.0/24"
LAN_IP="192.169.10.1"
LAN_BROADCAST_ADDRESS="192.169.10.255"
LAN_IFACE="eth1"


LO_IP="127.0.0.1"
LO_IFACE="lo"


IPTABLES="/sbin/iptables"


#
# 2. Load all required IPTables modules
#

#
# Needed to initially load modules
#

/sbin/depmod -a


#
# adds some iptables targets like LOG, REJECT and MASQUARADE.
#

/sbin/modprobe ipt_LOG
/sbin/modprobe ipt_MASQUERADE
/sbin/modprobe ip_tables
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ip_conntrack_ftp


# CRITICAL: Enable IP forwarding since it is disables by default.
#

echo "1" > /proc/sys/net/ipv4/ip_forward


#
# 3. Reset the defult policies in the nat table.
#

$IPTABLES -F
$IPTABLES -F -t nat

$IPTABLES -X
$IPTABLES -X -t nat

$IPTABLES -t nat -F PREROUTING

$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT

$IPTABLES -t nat -P PREROUTING ACCEPT
$IPTABLES -t nat -P POSTROUTING ACCEPT
$IPTABLES -t nat -P OUTPUT ACCEPT


#
# 定义安全策略为正面表列
#

$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP



#
# 4. Create content in userspecified chains
#

#
# 4.1 新增自定义的规则链:bad_tcp_packets, allowed, icmp_packets
#

$IPTABLES -N bad_tcp_packets
$IPTABLES -N allowed
$IPTABLES -N icmp_packets


#
# 4.1.1 bad_tcp_packets chain
# bad_tcp_packets 规则链的功能是:将要求重导向的联机记录起来,然后将封包丢弃(防止联机被绑架,
# 但会阻挡需要三方交谈的服务,如M$ Media Server)
#

$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j LOG --log-level 6 --log-prefix "New not syn:"
$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j REJECT --reject-with tcp-reset


#
# 4.1.2 allowed chain
# allowed 规则链的功能是:允许要求联机封包或响应封包进入,将其余封包丢弃
#

$IPTABLES -A allowed -p tcp --syn -j ACCEPT
$IPTABLES -A allowed -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A allowed -p tcp -j REJECT --reject-with tcp-reset


#
# 4.1.3 icmp chain
# icmp_packets 规则链的功能是:允许ping封包进入,将其余封包丢弃
#

$IPTABLES -A icmp_packets -p icmp -s 0/0 --icmp-type 8 -j ACCEPT
$IPTABLES -A icmp_packets -p icmp -s 0/0 --icmp-type 11 -j ACCEPT


#
# 4.2 INPUT Chain(过滤要到达防火墙的封包)
#
#

#
# 进入防火墙的TCP封包必须先进行bad_tcp_packets过滤
#

$IPTABLES -A INPUT -p tcp -j bad_tcp_packets


#
# 从WAN进入防火墙的ICMP封包必须先进行icmp_packets过滤,这是为了避免骇客传送不完整的IP封包,系统
# 会响应ICMP封包通知对方,导致主机位置被侦测出来
#

$IPTABLES -A INPUT -p icmp -i $INET_IFACE -j icmp_packets


#
# 从LAN进入防火墙的全部unicast和broadcast封包,通通放行;额外检查目的地IP可以将multicast封包过滤
#

$IPTABLES -A INPUT -p all -i $LAN_IFACE -d $LAN_IP -j ACCEPT
$IPTABLES -A INPUT -p all -i $LAN_IFACE -d $LAN_BROADCAST_ADDRESS -j ACCEPT


#
# 从Loopback接口进入防火墙的所有封包,检查是否来自本机,若是则放行;此规则去检查来源IP,似乎有些画蛇添足,
# 因为只有来自本机的封包才有可能进入Loopback接口
#

$IPTABLES -A INPUT -p all -i $LO_IFACE -s $LO_IP -j ACCEPT
$IPTABLES -A INPUT -p all -i $LO_IFACE -s $LAN_IP -j ACCEPT
$IPTABLES -A INPUT -p all -i $LO_IFACE -s $INET_IP -j ACCEPT


#
# 从LAN进入防火墙的DHCP封包,予以放行(只有当防火墙担任DHCP时才使用)
#

# $IPTABLES -A INPUT -p udp -i $LAN_IFACE --dport 67 --sport 68 -j ACCEPT


#
# 从WAN进入防火墙的所有封包,检查是否为响应封包,若是则予以放行
#

$IPTABLES -A INPUT -p all -d $INET_IP -m state --state ESTABLISHED,RELATED -j ACCEPT


#
# 限制过滤规则的比对频率为每分钟平均流量3个封包(超过上限的封包将暂停比对),并将瞬间流量设定为一次最多
# 处理3个封包(超过上限的封包将丢弃不予处理),这类封包通常用来进行阻断式攻击
#

$IPTABLES -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level 6 --log-prefix "IPT INPUT packet died:"


#
# 4.3 FORWARD Chain(过滤要通过防火墙的封包)
#


#
# 通过防火墙的TCP封包必须先进行bad_tcp_packets过滤
#

$IPTABLES -A FORWARD -p tcp -j bad_tcp_packets


#
# 从LAN要到WAN的封包通通放行
#

$IPTABLES -A FORWARD -i $LAN_IFACE -o $INET_IFACE -j ACCEPT


#
# 从wan要到LAN的封包仅放行回应封包
#

$IPTABLES -A FORWARD -i $INET_IFACE -o $LAN_IFACE -m state --state ESTABLISHED,RELATED -j ACCEPT


#
# 限制过滤规则的比对频率为每分钟平均流量3个封包(超过上限的封包将暂停比对),并将瞬间流量设定为一次最多
# 处理3个封包(超过上限的封包将丢弃不予处理),这类封包通常用来进行阻断式攻击
#

$IPTABLES -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level 7 --log-prefix "IPT FORWARD packet died:"


#
# 4.4 OUTPUT Chain(过滤从防火墙送出的封包)
#

#
# 从防火墙送出的封包必须先进行bad_tcp_packets过滤
#

$IPTABLES -A OUTPUT -p tcp -j bad_tcp_packets


#
# 从防火墙送出的所有封包,通通放行
#

$IPTABLES -A OUTPUT -p all -s $LO_IP -j ACCEPT
$IPTABLES -A OUTPUT -p all -s $LAN_IP -j ACCEPT
$IPTABLES -A OUTPUT -p all -s $INET_IP -j ACCEPT


#
# 限制过滤规则的比对频率为每分钟平均流量3个封包(超过上限的封包将暂停比对),并将瞬间流量设定为一次最多
# 处理3个封包(超过上限的封包将丢弃不予处理),这类封包通常用来进行阻断式攻击
#

$IPTABLES -A OUTPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level 7 --log-prefix "IPT OUTPUT packet died:"



#
# 5. Enable simple IP Forwarding and Masquerading , MASQ to INET_IFACE
#

$IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -s $LAN_IP_RANGE -j MASQUERADE
#$IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j MASQUERADE



#
# 6. 阻断下述网段的数据包
#

$IPTABLES -t nat -A PREROUTING -s 192.168.0.0/16 -j REJECT --reject-with tcp-reset
$IPTABLES -t nat -A PREROUTING -s 10.0.0.0/8 -j REJECT --reject-with tcp-reset
$IPTABLES -t nat -A PREROUTING -s 172.16.0.0/12 -j REJECT --reject-with tcp-reset



#
# 7. Delete old POSTROUTING chain
#

$IPTABLES -t nat -F POSTROUTING



#
# 8. set SNAT
#

$IPTABLES -t nat -A POSTROUTING -s $LAN_IP_RANGE -j SNAT --to $INET_IP



#
# 9. Delete old INPUT chain
#

$IPTABLES -F INPUT



#
# 10. Set port
#


#
# 10.1 Drop ports in PREROUTING
#

$IPTABLES -A INPUT -p tcp -i $INET_IFACE -d $INET_IP --dport 80 -j RETURN
$IPTABLES -A INPUT -p tcp -i $INET_IFACE -d $INET_IP --dport 100 -j RETURN
$IPTABLES -A INPUT -p tcp -i $INET_IFACE -d $INET_IP --dport 1021 -j RETURN
$IPTABLES -A INPUT -p tcp -i $INET_IFACE -d $INET_IP --dport 1080 -j RETURN
$IPTABLES -A INPUT -p tcp -i $INET_IFACE -d $INET_IP --dport 1130 -j RETURN
$IPTABLES -A INPUT -p tcp -i $INET_IFACE -d $INET_IP --dport 2121 -j RETURN
$IPTABLES -A INPUT -p tcp -i $INET_IFACE -d $INET_IP --dport 3389 -j RETURN
$IPTABLES -A INPUT -p tcp -i $INET_IFACE -d $INET_IP --dport 3391 -j RETURN
$IPTABLES -A INPUT -p tcp -i $INET_IFACE -d $INET_IP --dport 3392 -j RETURN
$IPTABLES -A INPUT -p tcp -i $INET_IFACE -d $INET_IP --dport 4321 -j RETURN
$IPTABLES -A INPUT -p tcp -i $INET_IFACE -d $INET_IP --dport 10021 -j RETURN



#
# 10.2 设置管理端口为22
# port:22
#

# 可管理服务器的IP分别限定设置为192.169.10.5和162.111.44.200

$IPTABLES -A INPUT -p tcp -i $INET_IFACE -s 162.111.44.200/32 -d $INET_IP --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp -i $LAN_IFACE -s 192.169.10.3/32 -d $INET_IP --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 22 -j REJECT --reject-with tcp-reset


#
# 10.3 disable port 1 to 1024
#

$IPTABLES -A INPUT -p tcp --dport 1:1024 -j RETURN
$IPTABLES -A INPUT -p udp --dport 1:1024 -j RETURN


#
# Delete old Forward chain
#

$IPTABLES -F FORWARD


#
# 10.4 封禁以下端口,主要是为了防范病毒、各种恶意攻击和端口扫描
#
# Drop 69,113,135,136,137,138,139,389,445,593,636,1029,1434,3067,3268,3269
# 4444,5554,5631,5800,5900,6346,6667,9393,20168,45576   ports

#
# 采用多端口比对的方法进行封禁
#
$IPTABLES -A FORWARD -p tcp -m multiport --port 69,113,135,136,137,138,139,389,445,593,636,1029,1434,1503,3067 -j DROP
$IPTABLES -A FORWARD -p tcp -m multiport --port 1720,3268,3269,4444,5554,5631,5800,5900,6346,6667,9393,20168,45576 -j DROP
$IPTABLES -A FORWARD -p udp -m multiport --port 69,113,135,136,137,138,139,389,445,593,636,1029,1434,1503,3067 -j DROP
$IPTABLES -A FORWARD -p udp -m multiport --port 1720,3268,3269,4444,5554,5631,5800,5900,6346,6667,9393,20168,45576 -j DROP


#
# 11. set natlog train
#

$IPTABLES -N natlog
$IPTABLES -A natlog -p tcp --syn -m state --state NEW -j LOG --log-prefix "nat_tcp: " --log-ip-options --log-level 6
$IPTABLES -A natlog -p udp -m state --state NEW -j LOG --log-prefix "nat_udp: " --log-ip-options --log-level 6


#
# Log all forward
#

$IPTABLES -A FORWARD -j natlog



#
# 12. save settings
#

/etc/init.d/iptables save


echo "End..."
发表于 2005-4-12 17:17:58 | 显示全部楼层
好精彩的脚本,建议好好消化一下。
从简单的开始,先用这个,在第5节
$IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j MASQUERADE

能上网后再进一步限制。
回复 支持 反对

使用道具 举报

发表于 2005-4-13 07:47:44 | 显示全部楼层
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
.
.
.
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP

到底是的策略是DROP还是ACCEPT?参考别人的你还是要自己了解下啊。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表