基于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。


猜你喜欢
- 最近在学习 python,使用 flask 实现了个个人博客程序,完了想部署到服务器上。因为是新手,一路磕磕绊绊最终把它基本搞定。网上资料对
- vmware是一款主流的虚拟机软件,可以真正“同时”运行多个操作系统在主系统的平台上,就像标准Win
- 我们终于进入了这个社会。从此结束了被学校老师看管的生涯,结束了做父母乖宝贝的日子,也结束从父母兄长那里拿钱的幸福时光。我们从家里搬了出来,提
- 本地提升权限:是远程提升权限:是使用前提条件:对Serv-U配置文件有修改权限声明:这只是一个提升权限的思路和方法。一、受影响的软件Serv
- Linux使用 iftop 实时监控网卡的流量,,具体内容如下所示:iftop可以用来监控网卡的实时流量(可以指定网段)、反向解析IP、显示
- Docker简介Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Li
- 与以往版本相比,Discuz! 7.0.0 正式版的亮点之一是增加了任务系统。任务系统常见于各种计算机软件程序和大型网游。对于网游来说,游戏
- 就在今天早上,微软收购yahoo案终于有了阶段性结果。尽管微软此前将报价提高到每股33美元,yahoo方面依然坚持每股37美元不让步。由于价
- 网络广告是主要的网络营销方法之一,在网络营销方法体系中具有举足轻重的地位,事实上多种网络营销方法也都可以理解为网络广告的具体表现形式,并不仅
- 我先谈一下我的就爱车(www.9aiche.com),这个站是我的站兼职做宣传和优化,我不太懂程序优化也不是很懂所以就边学边用了,我自已的站
- 大学生卖肉让人佩服,当“破烂王”能否被市民接受?说起“破烂王”,很多人立刻就会联想到那些蹬着破旧的三轮车,在社区的街巷里弄大声吆喝 “收破烂
- 你可以使用一个.htaccess文档来配置你的MIME类型。当你在.htaccess 文档里配置MIME类型时,你是把文档类型与某个具体的应
- 通常,微软IE工作过程描述如下:作为网页挂马的散布者,其目的是将木马下载到用户本地,并进一步执行,当木马获得执行之后,就意味着会有更多的木马
- 11月6日消息,科技业市场研究机构IDC周四公布调查,今年第3季全球手机市场龙头宝座,依旧由挪威大厂诺基亚稳坐;但在智能手机战场厮杀中,黑莓
- 1、ARP协议概述IP数据包常通过以太网发送。以太网设备并不识别32位IP地址:它们是以48位以太网地址传输以太网数据包的。因此,IP驱动器
- 一、安装 uwsgiuWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议,旨在提供专业的 Python web应用
- 老谢作为软文写作中的先行者,相信在我之后还有更多的站长投身到软文写作的浪潮中来,站长的路是坎坷的,但前途是光明的,相信会飞得更高,更远!1、
- Denis不愧是个WPfans,今天教我这个菜鸟如何一次安装多个wordpress blog所谓知易行难,看了他的文章,我照葫芦画瓢搞了半天
- 实现方法: 第一步:channelunit.func.php中添加如下函数 //参数说明:第1个参数是从信息表里读取出来的类别ID,第2个参
- site是多数搜索引擎支持的高级语法。它的作用是缩写搜索范围,只在指定的网域中查找。网域可分为下面三种:1、特定的域名类型: 如cn、uk、