实现有价值的IT服务
全部博文(709)
分类: IT职场
2005-07-17 00:00:37
一.基于路由器的包过滤防火墙
1.一般概念:
1)什么是包过滤:
包过滤就是用软件查看所经过的数据包的包头,并对整个数据包采取处理如:Drop、Accept等。
一个防火墙规则指定包的格式和目标。当一个包进来时, 核心使用input链来决定它的命运。 如果它通过了, 那么核心将决定包下一步该发往何处(这一步叫路由)。假如它是送往另一台机器的, 核心就运用forward链。
如果不匹配,进入目标值所指定的下一条链,那有可能是一条user defined链,或者是一个特定值: ACCEPT, DENY,REJECT,MASQ,REDIRECT,RETURN。
ACCEPT意味着允许包通过,DENY 扔掉包就象没有受到过一样,REJECT也把包扔掉,但(假如它不是 ICMP 包) 产生一个 ICMP 回复来告诉发包者,目的地址无法到达(请注意DENY和REJECT对于ICMP包是一样的)。
MASQ 告诉核心伪装此包,它只对forward 链和user defined链起作用,想让它起作用, 编译核心时必需让 IP Masquerading 起作用。
REDIRECT只对input链和user defined链起作用。它告诉核心把无论应送到何处的包改送到一个本地端口. 只有 TCP 和 UDP 协议可以使用此指定. 任意用 '-j REDIRECT' 指定一个端口(名字或编号)可以使送往此的包被重定向到某个特殊的端口, 即使它被标记为送到其它端口。想让它起作用,编译内核时,必须让CONFIG_IP_TRANSPARENT_PROXY起作用。
最后的一个目标指定是 RETURN, 它跳过它下面的所有规则, 直到链的末尾。
任何其它的目标指定表示一个用户自定义的链。包将在那个链中通过. 假如那个链没有决定此包的命运, 那么在那个链中的传输就完成了,包将通过当前链的下一个规则。
2)包过滤防火墙的工作层次:
包过滤防火墙工作于网络层
3)包过滤防火墙的工作原理:
A)数据包过滤是通过对数据包的ip头和tcp或者udp头的检查来实现的,主要信息有:
IP源地址:
-s [!] 219.136.252.168
-s [!] 192.168.0.0/24
IP 目标地址:
-d [!] 219.136.252.168
-d [!] 192.168.0.0/24
协议:
-p tcp
-p udp
-p icmp
TCP、UDP包的源端口:
-sport 21
--source-port 80
-m multiport –source-port 20,53,80,1433
ICMP消息类型:
TCP包中的ACK位:
数据包到达的端口:
-dport 21
-destination-port 21
-m multiport –dprot 20,21,23,
数据包出去的端口:
-dport
-destination-port
-m multiport –dprot 20,21,23,
B)过滤器策略:
拒绝来自某主机或某网段的所有请求
允许来自某主机或某网段的所有连接
拒绝来自某主机或某网段的指定端口连接
允许来自某主机或某网段的指定端口连接
拒绝来自其他主机或本地网络与其他主机或其他网络的所有连接
允许来自其他主机或本地网络与其他主机或其他网络的所有连接
拒绝来自其他主机或本地网络与其他主机或其他网络的指定端口连接
允许来自其他主机或本地网络与其他主机或其他网络的的指定端口连接
4)包过滤防火墙的基本流程:
包过滤规则被存储起来。
当包到达端口时,对包报头决心语法分析。
包过滤规则以特殊的方式存储。运用与包的规则的顺序与包过滤器规则存储顺序必须相同。
若有一条规则阻止包传输或者收发,则此包便不被允许。
若有一条规则允许包传输或者收发,则此包会被继续处理。
所有执行过规则都不满足的包提交给内置链策略。
若包满足任何一条规则和内置链策略,则此包被阻塞。
2.Netfilter/iptables架构
1)包过滤防火墙管理工具
kerl2.0:ipfwadm
kerl2.2:ipchains
kerl2.4:iptables
2)Netfilter/iptables系统优点:
配置有状态的防火墙:
ESTABLISHED
INVALID
NEW
RELATED
3)Netfilter/iptables的内核空间和用户空间
A)内核空间:
netfilter组件也称为内核空间,是内核的一部分,有一些表(table)组成
每个表由若干链(chains)组成
每条链可以有一条或者数条规则(rule)
B) 用户空间
iptables组件的一种工具,也称为用户空间,他使插入、修改、和出去信息包过滤表中的规则变得简单
| |--
| |-- | -- rul1
|--tables1 -- |--ipchains1 | --rul2
| |--ipchains2 - -|
netfilter -- |
|
|
|
|
|
C)Netfilter/iptables过滤系统如何工作:
根据规则所处理的信息包的类型,可以将规则分组到链中
处理入站信息包的规则被添加到Input链中。
处理出站信息包的规则被添加到Output链中
处理正在转发的信息包的规则被添加到Forward链中
每个链都可以有一个策略,他定义默认目标,也就是要执行的默认操作,当信息包与链的任何规则都不匹配时候,他执行此操作
D)包过滤工作要经过如下的步骤:
a)路由
当信息包到达防火墙时,内核先检查信息包的头信息,尤其是信息包的目的地址。
b)根据情况将数据包发往包过滤表的不同链
c)规则检查
将信息包的头信息与它所传输到链中的规则进行比较,看它是否与某条规则匹配;如果配置的包信息目标为Accept,则允许该信息通过,并将该包发给相应的进程处理;如果配置的包信息目标为DROP或者REJECT,则不允许该信息包通过,并将该包阻塞杀死。
如果信息包与这条规则不匹配,那么它将与链中的下一条规则进行比较。