基于Linux系统的包过滤防火墙(5)

来源:asp之家 时间:2009-09-19 20:21:00 

#iptables -N custom

#iptables -A custom -s 0/0 -d 0/0 -p icmp -j DROP

#iptables -A INPUT -s 0/0 -d 0/0 -j custom

首先使用带-N参数的iptables命令新建了一个名为custom的用户逢定义链。然后使用带-A参数的命令添加了一条用户自定义的堵截规则,该规则丢弃全部的ICMP包。最后向默认的INPUT链加入一条规则,使所有的包都由custom自定义链处理。结果全部的ICMP包都将被丢弃。

2.3.2 设置基本的规则匹配

下面举例说明iptables的基本规则匹配(忽略目标动作):

(1)指定协议匹配

1)匹配指定的协议

#iptables -A INPUT -p tcp

2)匹配指定协议之外的所有协议

#iptables -A INPUT -p !tcp

(2)指定地址匹配

1)指定匹配的主机

#iptables -A INPUT -s 192.168.1.1

2)指定匹配的网络

#iptables -A INPUT -s 192.168.1.0/24

3)匹配指定主机之外的地址。

#iptables -A FORWARD -s ! 192.168.0.1

4)匹配指定网络之外的网络

#iptables -A FORWARD -s ! 192.168.0.0/24

(3)指定网络接口匹配。

1)指定单一的网络接口匹配。

#iptables -A INPUT -i eth0

#iptables -A FORWARD -o eth0

2)指定同类型的网络接口匹配

#iptables -A FORWARD -o ppp+

(4)指定端口匹配

1)指定单一的端口匹配。

#iptables -A INPUT -p tcp-sport www

#iptables -A INPUT -p tcp-sport 80

#iptables -A INPUT -p tcp-sport 53

#iptables -A INPUT -p udp-dport 53

2)匹配指定端口之外的端口。

#iptables -A INPUT -p tcp-dport ! 22

3)匹配指定端口的范围。

#iptables -A INPUT -p tcp-soprt 22:80

4)匹配ICMP端口和ICMP类型。

#iptables -A INPUT -p icmp --icmp-type 8

5)指定ip碎片

在TCP/IP通信过程中,每一个网络接口都有一个最大的传输单元(MTU),这个参数定义了可以通过的数据包的最大尺寸。如果一个数据包大于这个参数值时,系统会将其划分成更小的数个数据包(称之为ip碎片)来传输,而接收方则对这些ip碎片再进行重组以还原整个包。

但是在进行包过滤的时候,ip碎片会导致这样一个问题:当系统将大数据包划分成ip碎片传送时,第一个碎片含有完整的包头信息(IP+TCP、UDP和ICMP),但是后续的碎片只有包头的部分信息(如源地址、目的地址)。因此,检查后面的ip碎片的头部(就像有TCP、UDP和ICMP一样)是不可能的。假如有这样一条规则:

#iptables -A FORWARD -p tcp -s 192.168.1.0/24 -d192.168.2.100--dport 80 -j ACCEPT

并且这时的FORWARD的策略(policy)为DROP时,系统只会让第一个ip碎片通过,而丢掉其余的ip碎片,因为第一个碎片含有完整的包头信息,可以满足该规则的条件,而余下的碎片因为包头信息不完整而无法满足规则定义的条件,因而无法通过。

可以通过-fragment/-f选项来指定第二个及其以后的ip碎片,以上面的例子为例,我们可以再加上这样一条规则来解决这个问题:

#iptables -A FORWARD -f -s 192.168.1.0/24 -d 192.168.2.100-jACCEPT

但是需要注意的是,现在已经有许多进行ip碎片攻击的实例(例如向Win98NT4SP5,6Win2K发送大量的ip碎片进行DoS攻击),因此允许ip碎片通过是有安全隐患的,对于这一点可以采用iptables的匹配扩展来进行限制。

2.3.3 设置扩展的规则匹配

要获得匹配的简要说明,可以使用如下的命令:

#iptables -m name_of_match -help

下面举例说明iptables的扩展规则匹配(忽略目标动作):

(1)多端口匹配扩展。

1)匹配多个源端口。

#iptables -A INPUT -p tcp -mmultiport-source-port22,53,80,110

2)匹配多个目的端口

#iptables -A INPUT -p tcp -mmultiport-destionation-port22,53,80,110

3)匹配多个端口(无论源源端口还是目的端口)。

#iptables -A INPUT -p tcp -m multiport -port 22,53,80,110

(2)指定TCP匹配扩展

通过使用-tcp-flags选项可以根据tcp包的标志位进行过滤,该选项后接两个参数:第一个参数为要检查的标志位,可以是SYN、ACK、FIN、URG、PSH的组合,可以用ALL指定所有标志位:第二个参数是标志位值为1的标志。

#iptables -A INPUT -p tcp-tcp-flags SYN,FIN,ACK SYN

表示SYN、ACK、FIN的标志都要被检查,但是只有设置了SYN的才匹配。

#iptables -A INPUT -p tcp-tcp-flags ALL SYN,ACK

表示ALL(SYN,ACK,FIN,RST,URG,PSH)的标志都要被检查,但是只有设置了SYN和ACK的才匹配。

选项-syn是以上的一种特殊情况,相当于“--tcp-flags SYN,RST,ACK SYN“的简写。

#iptables -p tc-syn

(3)limit速率匹配扩展。

1)指定单位时间内允许通过的数据包的个数。

单位时间可以是/second、/minute、/hour、/day或使用第一个字母。例如:

#iptables -A INPUT -m limit-limit 300/hour

表示限制每小时允许通过300个数据包。

2)指定触发事件的阀值。

使用-limit-burst指定触发事件的阀值(默认是5),用来比对瞬间大量数据包的数量。

#iptables -A INPUT -m limit-limit-burst 10

上面的例子是用来比对一次同时涌入的封包是否超过10个,超过此上限的包将被直接丢弃。

3)同时指定速率限制和触发阀值。

#iptables -A INPUT -p icmp -m limit-limit 3/m-limit-burst 3

假设均匀通过,平均每分钟3个,那么触发阀值burst保持为3个,如果每分钟通过的包的数目小于3,那么触发阀值burst将在每个周期(若每分钟允许通过3个,则周期数为20秒)后加1,但最大值为3。每分钟要通过的包的数量如果超过3,那么触发阀值burst将减掉超出的数值,例如第二分钟有4个包,那么触发阀值burst变成2,同时4个包都可以通过,第三分钟有6个包,则只能通过5个,触发阀值burst将变成0。之后,每分钟如果包数小于等于3,则触发阀值burst将加1,如果每分钟包数大于3,触发阀值burst将逐渐减小最终维持为0。

标签:防火墙,linux
0
投稿

猜你喜欢

  • 剖析:Hishop成为网络创业首选的缘由

    2009-11-19 08:34:00
  • linux环境下卸载oracle 11g的过程

    2023-09-02 16:36:22
  • 人人网也开始自建贴吧 趁机抢百度校园用户

    2009-10-09 13:59:00
  • SEO核心竞争力:数据分析和行业渗透能力

    2008-12-25 10:08:00
  • 教你如何提高自身网站权重 网站形象推广

    2009-05-24 21:58:00
  • 如何留住网站的回头客

    2008-07-17 13:31:00
  • 网络营销无难事:区分虚假和无效点击

    2009-03-02 10:19:00
  • 新手站长快速通过网站备案注意细节

    2010-03-17 04:53:00
  • 完美企业网站最后优化:搜索引擎优化规则

    2009-01-04 09:00:00
  • 吴广庚:SEOer的三大境界

    2008-12-19 03:06:00
  • 知己知彼 分析竞争对手的网站来赢得胜利

    2008-11-28 09:48:00
  • IIS部署asp.net报404错误的解决方法

    2023-11-03 08:04:53
  • 老谢:网站推广之增加反向链接的7种方法

    2009-04-29 05:22:00
  • 如何寻找适合自己的盈利方式

    2009-06-12 13:22:00
  • Webmail攻防实战(6)

    2007-11-01 14:09:00
  • 分辨外链质量及增加高质量外链的几种方法

    2008-12-31 13:05:00
  • 谈谈百度收录那点破事

    2009-02-02 10:21:00
  • 详解IIS服务器状态代码的含

    2008-10-13 12:48:00
  • 新手做网站失败的十个原因

    2008-09-02 11:54:00
  • 盛大游戏宣布最新网游《通灵王》即将上市

    2009-11-18 11:44:00
  • asp之家 网站运营 m.aspxhome.com