match之-m limit,-m state,--icmp-type参数匹配

-m limit

这个匹配操作必须由-m limit明确指定才能使用。有了它的帮助,就可以对指定 的规则的日志数量加以限制,以免你被信息的洪流淹没哦。比如,你可以事先设定一个限定值,当符合条件 的包的数量不超过它时,就记录;超过了,就不记录了。我们可以控制某条规则在一段时间内的匹配次数 (也就是可以匹配的包的数量),这样就能够减少DoS syn flood攻击的影响。这 是它的主要作用,当然,还有很多其他作用(译者注:比如,对于某些不常用的服务可以限制连接数量,以 免影响其他服务)。limit match也可以用英文感叹号取反,如:-m limit ! --limit 5/s表示在数量超过限定值后,所有的包都会被匹配。

(译者注:为了更好地理解这个匹配操作,我们通过一个比喻来解释一下。原文也做了类似地比喻,但 我觉得对于初学者不易理解,故未采用。)limit match的工作方式就像一个单位大门口的保安,当有人要 进入时,需要找他办理通行证。早上上班时,保安手里有一定数量的通行证,来一个人,就签发一个,当通 行证用完后,再来人就进不去了,但他们不会等,而是到别的地方去(在iptables里,这相当于一个包不符 合某条规则,就会由后面的规则来处理,如果都不符合,就由缺省的策略处理)。但有个规定,每隔一段时 间保安就要签发一个新的通行证。这样,后面来的人如果恰巧赶上,也就可以进去了。如果没有人来,那通 行证就保留下来,以备来的人用。如果一直没人来,可用的通行证的数量就增加了,但不是无限增大的,最 多也就是刚开始时保安手里有的那个数量。也就是说,刚开始时,通行证的数量是有限的,但每隔一段时间 就有新的通行证可用。limit match有两个参数就对应这种情况,--limit-burst指 定刚开始时有多少通行证可用,--limit指定要隔多长时间才能签发一个新的通行 证。要注意的是,我这里强调的是“签发一个新的通行证”,这是以iptables的角度考虑的。在你自己写规 则时,就要从这个角度考虑。比如,你指定了--limit 3/minute --limit-burst 5 ,意思是开始时有5个通行证,用完之后每20秒增加一个(这就是从iptables的角度看的,要是以用户 的角度看,说法就是每一分钟增加三个或者每分钟只能过三个)。你要是想每20分钟过一个,只能写成--limit 3/hour --limit-burst 5,也就是说你要把时间单位凑成整的。

Table 6-8. Limit match options

Match--limit
Exampleiptables -A INPUT -m limit --limit 3/hour
Explanationlimit match设置最大平均匹配速 率,也就是单位时间内limit match可以匹配几个包。它的形式是一个数值加一个时 间单位,可以是/second /minute /hour/day 。默认值是每小时3次(用户角度),即3/hour ,也就是每20分钟一次(iptables角度)。
Match--limit-burst
Exampleiptables -A INPUT -m limit --limit-burst 5
Explanation这里定义的是limit match的峰值, 就是在单位时间(这个时间由上面的--limit指定)内最多可匹配几个包(由此可 见,--limit-burst的值要比--limit的大)。默认值是5。 为了观察它是如何工作的,你可以启动“只有一条规则的脚本”Limit- match.txt,然后用不同的时间间隔、发送不同数量的ping数据包。这样,通过返回的 echo replies就可以看出其工作方式了。

应用实例

syn_flood attack:
    iptables -A DOS -i %s -p tcp --tcp-flags SYN,RST,ACK SYN -m limit --limit 10/s --limit-burst 30 -j RETURN
    iptables -A DOS -i %s -p tcp --tcp-flags SYN,RST,ACK SYN -j LOG --log-level emerg --log-prefix "idslog syn_flood"
    iptables -A DOS -i %s -p tcp --tcp-flags SYN,RST,ACK SYN -j DROP

-m state

状态匹配扩展要有内核里的连接跟踪代码的协助,因为它是从连接跟踪机制中得到包的状态的。这样我 们就可以了解连接所处的状态。它几乎适用于所有的协议,包括那些无状态的协议,如ICMP和UDP。针对每 个连接都有一个缺省的超时值,如果连接的时间超过了这个值,那么这个连接的记录就被会从连接跟踪的记 录数据库中删除,也就是说连接就不再存在了。这个match必须有-m state作为前提 才能使用。状态机制的详细内容在章节状态机制 中。

Table 6-13. State matches

Match--state
Exampleiptables -A INPUT -m state --state RELATED,ESTABLISHED
Explanation指定要匹配包的的状态,当前有4种状态可用:INVALIDESTABLISHEDNEWRELATED。 INVALID意味着这个包没有已知的流或连接与之关 联,也可能是它包含的数据或包头有问题。ESTABLISHED意思是包是完全有效的,而 且属于一个已建立的连接,这个连接的两端都已经有数据发送。NEW表示包将要或已 经开始建立一个新的连接,或者是这个包和一个还没有在两端都有数据发送的连接有关。RELATED说明包正在建立一个新的连接,这个连接是和一个已建立的连接相关的。比 如,FTP data transferICMP error 和一个TCP或UDP连接相关。注意NEW状态并不在试图建立新连接的TCP包里寻找SYN标 记,因此它不应该不加修改地用在只有一个防火墙或在不同的防火墙之间没有启用负载平衡的地方。具体如 何使用,你就再看看章节状态机制吧:)

--icmp-type

ICMP协议也是无连接协议,ICMP包更是短命鬼,比UDP的还短。ICMP协议不是IP协议的下属协议,而是它 的辅助者,其主要作用是报告错误和连接控制。ICMP包的头和IP的很相似,但又有很多不同。这个协议最主 要的特点是它有很多类型,以应对不同的情况。比如,我们想访问一个无法访问的地址,就会收到一个ICMP host unreachable信息,它的意思是主机无法到达。在附录ICMP类型里有完整的ICMP类型列表。虽然有这么多类型,但只有一个 ICMP matche,这就足够对付它们了。这个matche是在指定--protocol ICMP时自动 装入的。注意所有的通用匹配都可以使用,这样我们就可以匹配ICMP包的源、目地址。

Table 6-7. ICMP matches

Match--icmp-type
Exampleiptables -A INPUT -p icmp --icmp-type 8
Explanation根据ICMP类型匹配包,类型的指定可以使用十进制数值或相 应的名字,数值在RFC792中有定义,名字可以用iptables --protocol icmp --help 查看,或者在附录ICMP类型中查找。这个匹配也可用英文感叹号取 反,如:--icmp-type ! 8就表示匹配除类型8之外的所有ICMP包。要注意有些ICMP 类型已经废弃不用了,还有一些可能会对无防护的主机带来“危险”,因为它们可能把包重定向到错误的地 方。

dos_ping  attack:
    iptables -A DOS -i %s -p icmp --icmp-type echo-request -m state --state NEW -m limit --limit 10/s -j RETURN
    iptables -A DOS -i %s -p icmp --icmp-type echo-request -m state --state NEW -j LOG --log-level emerg --log-prefix "idslog dos_ping"
    iptables -A DOS -i %s -p icmp --icmp-type echo-request -m state --state NEW -j DROP

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值