Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1483135
  • 博文数量: 297
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 3082
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 11:36
文章分类

全部博文(297)

文章存档

2011年(1)

2009年(45)

2008年(67)

2007年(184)

我的朋友

分类: LINUX

2007-09-11 13:10:37

iptables 使用时的样板
在设定 iptables
的封包过滤规则时,有几个样板的动作,若先熟悉它们,往后就可自行套用,依此类推,很快地,您就可以进入这个天地之中。


观察目前的设定
作法如下

iptables -L -n
iptablse -t nat -L -n


定义变数
FW_IP="163.26.197.8"


打开核心 forward 功能
作法如下

###-----------------------------------------------------###
#
打开 forward 功能
###-----------------------------------------------------###

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


清除所有的规则
一开始要先清除所有的规则,重新开始,以免旧有的规则影响新的设定。作法如下

###-----------------------------------------------------###
#
清除先前的设定
###-----------------------------------------------------###
#
清除预设表 filter 中,所有规则链中的规则
iptables -F
#
清除预设表 filter 中,使用者自订链中的规则
iptables -X

#
清除mangle表中,所有规则链中的规则
iptables -F -t mangle
#
清除mangle表中,使用者自订链中的规则
iptables -t mangle -X

#
清除nat表中,所有规则链中的规则
iptables -F -t nat
#
清除nat表中,使用者自订链中的规则
iptables -t nat -X


选定预设的政策
接着,要选定各个不同的规则链,预设的政策为何。作法如下

预设全部丢弃

###-----------------------------------------------------###
#
设定 filter table 的预设政策
###-----------------------------------------------------###
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP


或者预设全部接受

###-----------------------------------------------------###
#
设定 filter table 的预设政策
###-----------------------------------------------------###
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT


各个规则链的预设政策可独立自主的设定,不必受其它链的影响。

以下练习,若目标为 DROP,则 policy 请设为 ACCEPT;若目标为 ACCEPT,则 policy
请设为 DROP,如此方可看出效果。

开放某一个介面
作法如下

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

IPFW Netfilter 的封包流向,local process 不会经过 FORWARD Chain
因此 lo 只在 INPUT OUTPUT 二个 chain 作用。

iptables -A INPUT -i eth1 -j ACCEPT
iptables -A OUTPUT -o eth1 -j ACCEPT
iptables -A FORWARD -i eth1 -j ACCEPT
iptables -A FORWARD -o eth1 -j ACCEPT


IP
伪装
使内部网路的封包经过伪装之后,使用对外的 eth0
网卡当作代表号,对外连线。作法如下

###-----------------------------------------------------###
#
启动内部对外转址
###-----------------------------------------------------###

iptables -t nat -A POSTROUTING -o eth0 -s 172.16.0.0/16 -j SNAT --to-source
$FW_IP


上述指令意指 172.16.0.0/16 这个网段,伪装成 $FW_IP 出去。

虚拟主机
利用转址、转 port
的方式,使外部网路的封包,可以到达内部网路中的伺服主机,俗称虚拟主机。这种方式可保护伺服主机大部份的
port
不被外界存取,只开放公开服务的通道( Web Server port
80)
,因此安全性甚高。

作法如下

###-----------------------------------------------------###
#
启动外部对内部转址
###-----------------------------------------------------###
#
凡对 $FW_IP:80 连线者, 则转址至 172.16.255.2:80
iptables -t nat -A PREROUTING -i eth0 -p tcp -d $FW_IP --dport 80 -j DNAT
--to-destination 172.16.255.2:80


开放内部主机可以 telnet 至外部的主机
开放内部网路,可以 telnet 至外部主机。

作法如下(预设 policy DROP)

###-----------------------------------------------------###
# open
外部主机 telnet port 23
###-----------------------------------------------------###

iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0
--dport 23 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 23 -d $FW_IP --dport
1024:65535 -j ACCEPT


开放邮包转递通道
开放任意的邮件主机送信包给你的 Mail Server,而你的 Mail Server
也可以送信包过去。

作法如下(预设 policy DROP)

###-----------------------------------------------------###
# open SMTP port 25
###-----------------------------------------------------###

#
以下是别人可以送信给你
iptables -A INPUT -i eth0 -p tcp -s any/0 --sport 1024:65535 -d $FW_IP --dport
25 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp ! --syn -s $FW_IP --sport 25 -d any/0
--dport 1024:65535 -j ACCEPT

#
以下是你可以送信给别人
iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0
--dport 25 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 25 -d $FW_IP --dport
1024:65525 -j ACCEPT


开放对外离线下载信件的通道
开放内部网路可以对外部网路的 POP3 server 取信件。

作法如下(预设 policy DROP)

###-----------------------------------------------------###
# open
对外部主机的 POP3 port 110
###-----------------------------------------------------###

iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0
--dport 110 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 110 -d $FW_IP
--dport 1024:65535 -j ACCEPT


开放观看网页的通道
开放内部网路可以观看外部网路的网站。

作法如下(预设 policy DROP)

###-----------------------------------------------------###
# open
对外部主机的 HTTP port 80
###-----------------------------------------------------###

iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0
--dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 80 -d $FW_IP --dport
1024:65535 -j ACCEPT


开放查询外部网路的 DNS 主机
开放内部网路,可以查询外部网路任何一台 DNS 主机。

作法如下(预设 policy DROP)

###-----------------------------------------------------###
# open DNS port 53
###-----------------------------------------------------###

#
第一次会用 udp 封包来查询
iptables -A OUTPUT -o eth0 -p udp -s $FW_IP --sport 1024:65535 -d any/0
--dport 53 -j ACCEPT
iptables -A INPUT -i eth0 -p udp -s any/0 --sport 53 -d $FW_IP --dport
1024:65535 -j ACCEPT

#
若有错误,会改用 tcp 封包来查询
iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0
--dport 53 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 53 -d $FW_IP --dport
1024:65535 -j ACCEPT

#
开放这台主机上的 DNS 和外部的 DNS 主机互动查询使用 udp
iptables -A OUTPUT -o eth0 -p udp -s $FW_IP --sport 53 -d any/0 --dport 53 -j
ACCEPT
iptables -A INPUT -i eth0 -p udp -s any/0 --sport 53 -d $FW_IP --dport 53 -j
ACCEPT
#
开放这台主机上的 DNS 和外部的 DNS 主机互动查询使用 tcp
iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 53 -d any/0 --dport 53 -j
ACCEPT
iptables -A INPUT -i eth0 -p tcp ! -y -s any/0 --sport 53 -d $FW_IP --dport 53
-j ACCEPT
阅读(1247) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~