LinuxSir.cn,穿越时空的Linuxsir!

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

请各位看一下我的IPT策略有何问题???

[复制链接]
发表于 2004-1-9 13:08:23 | 显示全部楼层 |阅读模式
#!/bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
IPT=/sbin/iptables
#----------------------------------
#对外的 IP
REALIP="*.*.*.*"
#----------------------------------
# 设定 filter 内的 chain 之 Policy
$IPT -t filter -P INPUT DROP
$IPT -t filter -P OUTPUT ACCEPT
$IPT -t filter -P FORWARD DROP
#-------------------------------------------
# 设定 filter 这个 table 的 chain 之 Policy
$IPT -t nat -P PREROUTING ACCEPT
$IPT -t nat -P OUTPUT ACCEPT
$IPT -t nat -P POSTROUTING ACCEPT
#----------------------------------------------
# 清除所有 chain 的 rule, 删除自行定义的 chain
$IPT -t nat -F
$IPT -t nat -X
#---------------------------------------------------------
# 定义处理 ICMP 封包的 chain: 'icmp_chain'
# 其中 type 0 代表 echo-reply (ping 对方时的响应),
# type 8 为 echo-request (其它机器 ping 我们).
$IPT -t filter -F
$IPT -t filter -X
$IPT -t filter -N icmp_chain
$IPT -t filter -A icmp_chain -p icmp --icmp-type 0 -j ACCEPT
$IPT -t filter -A icmp_chain -p icmp --icmp-type 3 -j ACCEPT
$IPT -t filter -A icmp_chain -p icmp --icmp-type 5 -j ACCEPT
$IPT -t filter -A icmp_chain -p icmp --icmp-type 8 -j ACCEPT
$IPT -t filter -A icmp_chain -p icmp --icmp-type 11 -j ACCEPT
$IPT -t filter -A icmp_chain -p icmp -j DROP
#==================================================================
# PREROUTING (table:nat)
# 1.即使是从内部 NAT 出去的联机, 它传送回来的封包的目的地址也绝对不会是内部IP!
# 2.而 NAT 出去的联机所传回的封包之目的地址在经过 PREROUTING 阶段后
# 才会被转换成内部 IP
$IPT -t nat -A PREROUTING -i eth0 -d 192.168.20.0/24 -j DROP
$IPT -t nat -A PREROUTING -i eth0 -d 127.0.0.0/8 -j DROP
# 3.从外界进来,但宣称是来自内部网络的封包,一律挡掉。
$IPT -t nat -A PREROUTING -i eth0 -s 192.168.20.0/24 -j DROP
$IPT -t nat -A PREROUTING -i eth0 -s 127.0.0.0/8 -j DROP
#===========================================================================
# FORWARD (table:filter)
# 要能顺利让内部网络连到 internet, 也让数据能传回内部,
# 必须允许 FORWARD, 但仅限于
# (1) 从内部网络主动连至 internet 的联机
# (2) 上述联机所传递的数据(因此联机状态必须是ESTABLISHED 或 RELATED 的才行)
#---------------------------------------------------------------------------
$IPT -t filter -A FORWARD -s 192.168.20.0/24 -j ACCEPT
$IPT -t filter -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
#========================================================================
# POSTROUTING (table:nat)
# 要让内部网络能连到 internet, 必须把来自内部网络,
# 且要从 eth0 送出去的封包之来源地址改成真实 IP, 此即为 SNAT(Source NAT)
#------------------------------------------------------------------------
$IPT -t nat -A POSTROUTING -s 192.168.20.0/24 -o eth0 -j SNAT --to-source $REALIP
#========================================================================
# INPUT (table:filter)
# A.信任内部网络(192.168.20.0/24)及 lo 接口(127.0.0.0/8)
# 接受任何来自于这两个界面的封包.
#------------------------------------------------------------------------
$IPT -t filter -A INPUT -p all -s 192.168.20.0/24 -j ACCEPT
$IPT -t filter -A INPUT -p all -s 127.0.0.0/8 -j ACCEPT
#------------------------------------------------------------------------
# 从此处起, 开始处理来自 internet 的封包
#------------------------------------------------------------------------
# B.接受任何属于已建立的联机之封包.
$IPT -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#------------------------------------------------------------------------
# C.来自 internet, 属于 ICMP 的封包, 交由 icmp_chain 处理
$IPT -t filter -A INPUT -p icmp -j icmp_chain
#------------------------------------------------------------------------
# D.只提供给外界 Mail (smtp) 及 Web (www) 联机(TCP),
# 以及 DNS 查询(UDP), 其它一律不提供.
$IPT -t filter -A INPUT -p tcp --dport smtp -m state --state NEW --syn -j ACCEPT
$IPT -t filter -A INPUT -p tcp --dport www -m state --state NEW --syn -j ACCEPT
$IPT -t filter -A INPUT -p udp --dport domain -j ACCEPT
#------------------------------------------------------------------------
#发布内部WEB服务器
$IPT -t nat -A PREROUTING -p tcp -i $REALIP --destination-port 80 \
     -j DNAT --to-destination 192.168.20.1:80
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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