iptables 策略实际应用Word文件下载.docx
《iptables 策略实际应用Word文件下载.docx》由会员分享,可在线阅读,更多相关《iptables 策略实际应用Word文件下载.docx(18页珍藏版)》请在冰豆网上搜索。
函式处理,所以会让来自内部网络的封包无条件放行,来自外部网络的封包则过滤是否为
响应封包,若是则放行。
PREROUTING:
需要转送处理的封包由此函式负责处理,此函式用来做目的地
的转译动作(DNAT)。
所有转送封包都在这里处理,这部分的过滤规则最复杂。
POSTROUTING:
转送封包送出之前,先透过这个函式进行来源
的转译动作(SNAT)。
从本机送出去的封包由这个函式处理,通常会放行所有封包。
都可以自行定义规则群组(rule-set),规则群组被称为规则炼(chains),前面所描述的函式,也都有相对应的规则炼(INPUT、FORWARD、OUTPUT、Prerouting、Postrouting),为了有别于自行定义的规则炼,这些规则炼我们就称为内建规则炼。
不难了解
为什么要叫做
chains,因为它是将所有规则串接成一个序列逐一检查过滤,就像一条铁链一样一个环接一个环,在过滤过程中只要符合其中一条规则就会立即进行处理,如果处理动作是跳到某个规则群组,则继续检查群组内之规则设定,但如果处理动作是
ACCEPT、REJECT、DROP、REDIRECT
或
MASQUERADE,则会中断过滤程序,而不再继续检查后面的规则设定,在这样的结构之下,有时候规则顺序的对调会产生完全相反的结果,这一点在设定防火墙时不能不谨慎。
而
是采用规则堆栈的方式来进行过滤,当一个封包进入网卡,会先检查
Prerouting,然后检查目的
判断是否需要转送出去,接着就会跳到
Forward
进行过滤,如果封包需转送处理则检查
Postrouting,如果是来自本机封包,则检查
OUTPUT
以及
Postrouting。
过程中如果符合某条规则将会进行处理,处理动作除了
MASQUERADE
以外,还多出
LOG、ULOG、DNAT、SNAT、MIRROR、QUEUE、RETURN、TOS、TTL、MARK
等,其中某些处理动作不会中断过滤程序,某些处理动作则会中断同一规则炼的过滤,并依照前述流程继续进行下一个规则炼的过滤(注意:
这一点与
不同),一直到堆栈中的规则检查完毕为止。
透过这种机制所带来的好处是,我们可以进行复杂、多重的封包过滤,简单的说,iptables
可以进行纵横交错式的过滤(tables)而非炼状过滤(chains)。
虽然
为了扩充防火墙功能,而必须采用比较复杂的过滤流程,但在实际应用时,同一规则炼下的规则设定还是有先后顺序的关系,因此在设定规则时还是必须注意其中的逻辑。
四、订定校园网络安全政策
在实际设定防火墙之前,我们必须根据校园网络的安全需求,先拟定一份安全政策,拟定安全政策前必须搜集以下资料:
1.
找出需要过滤保护的服务器
2.
条列出被保护的服务器将提供何种网络服务
3.
一般工作站,需要何种等级的保护
4.
了解网络架构与服务器摆放位置
根据这些数据,我们可以决定安全政策,以石牌国小为例:
校内使用
NAT
虚拟网络,IP
数量需要两组
C,所有
均需作
伪装
校园内安全需求不高,服务器与工作站摆在同一网段,不需采用
DMZ
设计
由于服务器功能经常扩充,所有服务器均采用一对一对应,不使用
port
转送功能
所有工作站均能自由使用网络资源,不限制只能看网页
5.
服务器提供之服务包含:
dns、web、mail、ftp、wam、webmin、ssh、rdp、pcaw,不提供
proxy
及其它网络服务
6.
为增进校园网络之安全性,采用正面表列方式进行封包过滤(定义想放行之封包,其余封包一律阻挡)
还有一些网络安全须注意的事项,则是每所学校都应防范的,没有等差之别,例如:
联机被绑架、阻断式攻击、连接端口扫描......等。
五、iptables
指令
语法:
[-t
table]
command
[match]
[-j
target/jump]
-t
参数用来指定规则表,内建的规则表有三个,分别是:
nat、mangle
filter,当未指定规则表时,则一律视为是
filter。
各个规则表的功能如下:
nat
此规则表拥有
Prerouting
postrouting
两个规则炼,主要功能为进行一对一、一对多、多对多等网址转译工作(SNAT、DNAT),由于转译工作的特性,需进行目的地网址转译的封包,就不需要进行来源网址转译,反之亦然,因此为了提升改写封包的效率,在防火墙运作时,每个封包只会经过这个规则表一次。
如果我们把封包过滤的规则定义在这个数据表里,将会造成无法对同一封包进行多次比对,因此这个规则表除了作网址转译外,请不要做其它用途。
mangle
Prerouting、FORWARD
三个规则炼。
除了进行网址转译工作会改写封包外,在某些特殊应用可能也必须去改写封包(TTL、TOS)或者是设定
MARK(将封包作记号,以便进行后续的过滤),这时就必须将这些工作定义在
规则表中,由于使用率不高,我们不打算在这里讨论
的用法。
filter
这个规则表是预设规则表,拥有
三个规则炼,这个规则表顾名思义是用来进行封包过滤的处理动作(例如:
DROP、
LOG、
ACCEPT
REJECT),我们会将基本规则都建立在此规则表中。
常用命令列表:
命令
-A,
--append
范例
-A
...
说明
新增规则到某个规则炼中,该规则将会成为规则炼中的最后一条规则。
-D,
--delete
-D
--dport
80
-j
DROP
1
从某个规则炼中删除一条规则,可以输入完整规则,或直接指定规则编号加以删除。
-R,
--replace
-R
1
-s
192.168.0.1
取代现行规则,规则被取代后并不会改变顺序。
-I,
--insert
-I
ACCEPT
插入一条规则,原本该位置上的规则将会往后移动一个顺位。
-L,
--list
-L
INPUT
列出某规则炼中的所有规则。
-F,
--flush
-F
删除某规则炼中的所有规则。
-Z,
--zero
-Z
将封包计数器归零。
封包计数器是用来计算同一封包出现次数,是过滤阻断式攻击不可或缺的工具。
-N,
--new-chain
-N
allowed
定义新的规则炼。
-X,
--delete-chain
-X
删除某个规则炼。
-P,
--policy
-P
定义过滤政策。
也就是未符合过滤条件之封包,预设的处理方式。
-E,
--rename-chain
-E
allowed
disallowed
修改某自订规则炼的名称。
常用封包比对参数:
参数
-p,
--protocol
-p
tcp
比对通讯协议类型是否相符,可以使用
!
运算子进行反向比对,例如:
tcp
,意思是指除
以外的其它类型,包含
udp、icmp
...等。
如果要比对所有类型,则可以使用
all
关键词,例如:
all。
-s,
--src,
--source
192.168.1.1
用来比对封包的来源
IP,可以比对单机或网络,比对网络时请用数字来表示屏蔽,例如:
192.168.0.0/24,比对
时也可以使用
192.168.0.0/24。
-d,
--dst,
--destination
-d
用来比对封包的目的地
IP,设定方式同上。
-i,
--in-interface
-i
eth0
用来比对封包是从哪片网卡进入,可以使用通配字符
+
来做大范围比对,例如:
eth+
表示所有的
ethernet
网卡,也可以使用
eth0。
-o,
--out-interface
-o
用来比对封包要从哪片网卡送出,设定方式同上。
--sport,
--source-port
--sport
22
用来比对封包的来源埠号,可以比对单一埠,或是一个范围,例如:
22:
80,表示从
22
到
埠之间都算是符合条件,如果要比对不连续的多个埠,则必须使用
--multiport
参数,详见后文。
比对埠号时,可以使用
运算子进行反向比对。
--dport,
--destination-port
用来比对封包的目的地埠号,设定方式同上。
--tcp-flags
--tcp-flags
SYN,FIN,ACK
SYN
比对
TCP
封包的状态旗号,参数分为两个部分,第一个部分列举出想比对的旗号,第二部分则列举前述旗号中哪些有被设定,未被列举的旗号必须是空的。
状态旗号包括:
SYN(同步)、ACK(应答)、FIN(结束)、RST(重设)、URG(紧急)、PSH(强迫推送)等均可使用于参数中,除此之外还可以使用关键词
ALL
NONE
进行比对。
比对旗号时,可以使用
--syn
用来比对是否为要求联机之
封包,与
SYN
的作用完全相同,如果使用
运算子,可用来比对非要求联机封包。
-m
multiport
--source-port
22,53,80,110
用来比对不连续的多个来源埠号,一次最多可以比对
15
个埠,可以使用
--destination-port
用来比对不连续的多个目的地埠号,设定方式同上。
--port
--port
这个参数比较特殊,用来比对来源埠号和目的埠号相同的封包,设定方式同上。
注意:
在本范例中,如果来源端口号为
但目的地埠号为
110,这种封包并不算符合条件。
--icmp-type
icmp
--icmp-type
8
用来比对
ICMP
的类型编号,可以使用代码或数字编号来进行比对。
请打
--help
来查看有哪些代码可以用。
limit
--limit
--limit
3/hour
用来比对某段时间内封包的平均流量,上面的例子是用来比对:
每小时平均流量是否超过一次
3
个封包。
除了每小时平均一次外,也可以每秒钟、每分钟或每天平均一次,默认值为每小时平均一次,参数如后:
/second、
/minute、/day。
除了进行封包数量的比对外,设定这个参数也会在条件达成时,暂停封包的比对动作,以避免因骇客使用洪水攻击法,导致服务被阻断。
--limit-burst
--limit-burst
5
用来比对瞬间大量封包的数量,上面的例子是用来比对一次同时涌入的封包是否超过
5
个(这是默认值),超过此上限的封包将被直接丢弃。
使用效果同上。
mac
--mac-source
--mac-source
00:
01
用来比对封包来源网络接口的硬件地址,这个参数不能用在
Postrouting
规则炼上,这是因为封包要送出到网卡后,才能由网卡驱动程序透过
ARP
通讯协议查出目的地的
MAC
地址,所以
在进行封包比对时,并不知道封包会送到哪个网络接口去。
--mark
mark
--mark
用来比对封包是否被表示某个号码,当封包被比对成功时,我们可以透过
MARK
处理动作,将该封包标示一个号码,号码最大不可以超过
4294967296。
owner
--uid-owner
--uid-owner
500
用来比对来自本机的封包,是否为某特定使用者所产生的,这样可以避免服务器使用
root
或其它身分将敏感数据传送出去,可以降低系统被骇的损失。
可惜这个功能无法比对出来自其它主机的封包。
--gid-owner
--gid-owner
用来比对来自本机的封包,是否为某特定使用者群组所产生的,使用时机同上。
--pid-owner
--pid-owner
78
用来比对来自本机的封包,是否为某特定行程所产生的,使用时机同上。
--sid-owner
--sid-owner
100
用来比对来自本机的封包,是否为某特定联机(Session
ID)的响应封包,使用时机同上。
state
--state
--state
RELATED,ESTABLISHED
用来比对联机状态,联机状态共有四种:
INVALID、ESTABLISHED、NEW
RELATED。
INVALID
表示该封包的联机编号(Session
ID)无法辨识或编号不正确。
ESTABLISHED
表示该封包属于某个已经建立的联机。
NEW
表示该封包想要起始一个联机(重设联机或将联机重导向)。
RELATED
表示该封包是属于某个已经建立的联机,所建立的新联机。
例如:
FTP-DATA
联机必定是源自某个
FTP
联机。
常用的处理动作:
参数用来指定要进行的处理动作,常用的处理动作包括:
ACCEPT、REJECT、DROP、REDIRECT、MASQUERADE、LOG、DNAT、SNAT、MIRROR、QUEUE、RETURN、MARK,分别说明如下:
将封包放行,进行完此处理动作后,将不再比对其它规则,直接跳往下一个规则炼(nat:
postrouting)。
REJECT
拦阻该封包,并传送封包通知对方,可以传送的封包有几个选择:
port-unreachable、ICMP
echo-reply
或是
tcp-reset(这个封包会要求对方关闭联机),进行完此处理动作后,将不再比对其它规则,直接
中断过滤程序。
范例如下:
--reject-with
tcp-reset
DROP
丢弃封包不予处理,进行完此处理动作后,将不再比对其它规则,直接中断过滤程序。
REDIRECT
将封包重新导向到另一个端口(PNAT),进行完此处理动作后,将
会继续比对其它规则。
这个功能可以用来实作通透式
porxy
或用来保护
web
服务器。
PREROUTING
--to-ports
8080
改写封包来源
为防火墙
NIC
IP,可以指定
对应的范围,进行完此处理动作后,直接跳往下一个规则炼(mangle:
这个功能与
SNAT
略有不同,当进行
伪装时,不需指定要伪装成哪个
IP,IP
会从网卡直接读取,当使用拨接连线时,IP
通常是由
ISP
公司的
DHCP
服务器指派的,这个时候
特别有用。
POSTROUTING
1024-31000
LOG
将封包相关讯息纪录在
/var/log
中,详细位置请查阅
/etc/syslog.conf
组态档,进行完此处理动作后,将会继续比对其它规则。
--log-prefix
packets"
为某特定
范围,可以指定
对应的范围,进行完此处理动作后,将直接跳往下一个规则炼(mangle:
tcp-o
eth0
--to-source
194.236.50.155-194.236.50.160:
1024-32000
DNAT
改写封包目的地
对应的范围,进行完此处理动作后,将会直接跳往下一个规则炼(filter:
input
filter:
forward)。
15.45.23.67
--to-destination
192.168.1.1-192.168.1.10:
80-100
MIRROR
镜射封包,也就是将来源
与目的地
对调后,将封包送回,进行完此处理动作后,将会中断过滤程序。
QUEUE
中断过滤程序,将封包放入队列,交给其它程序处理。
透过自行开发的处理程序,可以进行其它应用,例如:
计算联机费用.......等。
RETURN
结束在目前规则炼中的过滤程序,返回主规则炼继续过滤,如果把自订规则炼看成是一个子程序,那么这个动作,就相当于提早结束子程序并返回到主程序中。
将封包标上某个代号,以便提供作为后续过滤的条件判断依据,进行完此处理动作后,将会继续比对其它规则。
--set-mark
2
六、应用实例
#!
/bin/sh
#
#
石牌国小防火墙设定指令稿
2002/8/27
设定者:
李忠宪(修改自
tutorial
1.1.11
by
Oskar
Andreasson
)
原文件是依
需求设计,已根据校园
网络之需求修改,其余改动部份包括:
新增通讯协议定义区块
新增执行时,自动清除已设定之规则
支援
FTP
修改所有规则,改采
方式以简化规则
原文件仅支持
伪装(多对一对应),已扩充为支持一对一对应及多对多对应
原文件仅支援
DNS
及
WEB,新增
ftp、mail、wam、PCAnywhere、ssh......等多种服务器
修改若干规则设定上的小错误
Copyright
(C)
2001
This
program
is
free
software;
you
can
redistribute
it
and/or
modify
under
the
terms
of
GNU
General
Public
License
as
published
by
Free
Software
Foun