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

由 allendu 在 01-09-2004 13:08 发表:

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

#!/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 ACCE

Published At
Categories with 服务器类
Tagged with
comments powered by Disqus