免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 898 | 回复: 5
打印 上一主题 下一主题

李忠宪的文章这里是不是有错? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-07-09 07:26 |只看该作者 |倒序浏览
《使用iptables建置linux防火墙》
$IPTABLES -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level INFO --log-prefix "IPT INPUT packet died:"

这样岂不是成了流量不到3/m、瞬间峰值不到一次3个的封包用LOG给记录下来,超过流量限制的反而不记录?

因为他文中有这样的例子:
$IPTABLES -t nat -N syn_flood
$IPTABLES -t nat -A syn_flood -m limit --limit 3/m --limit-burst 3 -j RETURN
$IPTABLES -t nat -A syn_flood -j \
LOG --log-level INFO --log-prefix "IPTABLES SYN-FLOOD:"
$IPTABLES -t nat -A syn_flood -j DROP
$IPTABLES -t nat -A PREROUTING -p TCP --syn -j syn_flood

这两个例子一比较,让人迷糊,到底是超过了limit的限制才进行limit后面跟的-j 动作,
还是流量在limit的限制之内时进行limit 后面的 -j 动作。

论坛徽章:
0
2 [报告]
发表于 2005-07-09 08:45 |只看该作者

李忠宪的文章这里是不是有错?

《使用iptables建置linux防火墙》
$IPTABLES -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level INFO --log-prefix "IPT INPUT packet died:"

这样岂不是成了流量不到3/m、瞬间峰值不到一次3个的封包用LOG给记录下来,超过流量限制的反而不记录?

是啊,一小时只抓 3 个来记录,否则你的 log。。。。。


因为他文中有这样的例子:
$IPTABLES -t nat -N syn_flood
$IPTABLES -t nat -A syn_flood -m limit --limit 3/m --limit-burst 3 -j RETURN
$IPTABLES -t nat -A syn_flood -j \
LOG --log-level INFO --log-prefix "IPTABLES SYN-FLOOD:"
$IPTABLES -t nat -A syn_flood -j DROP
$IPTABLES -t nat -A PREROUTING -p TCP --syn -j syn_flood

这两个例子一比较,让人迷糊,到底是超过了limit的限制才进行limit后面跟的-j 动作,
还是流量在limit的限制之内时进行limit 后面的 -j 动作。

哈,这是一个简单的逻辑关系了
limit 模块只负责按照一定的频率去匹配数据包,其他未匹配到的包还会继续向下遍历
如果先 limit、然后 LOG,那么 LOG 的肯定是没经过 limit 匹配的

你再想想,其实就是一个简单的逻辑问题

论坛徽章:
0
3 [报告]
发表于 2005-07-09 09:23 |只看该作者

李忠宪的文章这里是不是有错?

大概我没说清楚,麻烦再看看:
李忠宪的文章:
参数 -m limit --limit
范例 iptables -A INPUT -m limit --limit 3/hour
说明 用来比对某段时间内封包的平均流量(单位时间为秒),上面的例子是用来比对:每小时平均流量是否超过一次 3 个封包。除了每小时平均一次外,也可以每秒钟、每分钟或每天平均一次,默认值为每小时平均一次,参数如后: /second、 /minute、/day。除了进行封包数量的比对外,设定这个参数也会在条件达成时,暂停封包的比对动作,以避免因骇客使用洪水攻击法,导致服务被阻断。
参数 --limit-burst
范例 iptables -A INPUT -m limit --limit-burst 5
说明 用来比对瞬间大量封包的数量,上面的例子是用来比对一次同时涌入的封包是否超过 5 个(这是默认值),超过此上限的封包将被直接丢弃,其余封包放入缓冲区等待处理。
举实例来说明:假设现在同时涌入10个封包,前5 个封包进入缓冲区(--limit-burst 5),其余封包丢弃,这5个封包由于iptables每秒只处理一个1个(--limit 1/s),所以共需要5秒钟,在这5秒内将不再接受任何封包。

看这段红字的意思是,大量超过limit限制的封包涌入时,只处理前5 个,其余丢弃。
可是台湾“天蓝工作室”的资料却是这样写的:
iptables -A INPUT -p icmp -s 11.22.33.44 -m limit --limit 6/m -j ACCEPT
那 麼這道規則只會每分鐘核對六次,過了六次後,這個標頭不算符合。可是這個封包不符合該規則,便會往下層繼續與其他規則核對,到最後這個封包並不能與任何一道規則相符合,而這道 chain的預設處理為ACCEPT,那麼這個封包還是會進入您的網絡,即是說剛才這道過濾規則還不足以把這類濾掉。
於是,我們需要在這道過濾規則下面加上:
iptables -A INPUT -p icmp -s 11.22.33.44 -j DROP

那麼當上面的規則已因超越六次後,已經變成不符合時,該封包會立刻與下面這道規則核對,並且被消滅。

而且李忠宪的文章中有这样的例子:
$IPTABLES -t nat -N syn_flood
$IPTABLES -t nat -A syn_flood -m limit --limit 3/m --limit-burst 3 -j RETURN
$IPTABLES -t nat -A syn_flood -j \
LOG --log-level INFO --log-prefix "IPTABLES SYN-FLOOD:"
$IPTABLES -t nat -A syn_flood -j DROP
$IPTABLES -t nat -A PREROUTING -p TCP --syn -j syn_flood

按“天蓝工作室”的资料,从这个例子来理解,应该是流量在limit的数值之内时(流量小,安全)进行RETURN动作,如果流量超过limit的数值,就不符合该规则了,就不能再RETURN了,而是只抓出三个包用LOG记录下来,最后再把这三个包DROP掉。
可是这样的理解与上面的红字那一段相矛盾了,按红字的意思看刚才这个例子,似乎是即使超过limit的限制了,也只是把多余的包丢弃,而把那三个包继续可以RETURN动作。


我现在就是不明白,在坛子里经常有这样的句子:
-m limit --limit 100/s --limit-burst 100 -j ACCEPT
我觉得应该是流量小于等于limit限制时进行ACCEPT,问题是如果大于limit了,是仍然ACCEPT其中的100个,把其它丢弃呢,还是所有的都不能ACCEPT了,只能继续下面的后续规则呢?

论坛徽章:
0
4 [报告]
发表于 2005-07-09 10:59 |只看该作者

李忠宪的文章这里是不是有错?

自顶一下。

论坛徽章:
0
5 [报告]
发表于 2005-07-09 11:45 |只看该作者

李忠宪的文章这里是不是有错?

好文章

论坛徽章:
0
6 [报告]
发表于 2005-07-09 14:38 |只看该作者

李忠宪的文章这里是不是有错?

终于明白了!文章都没错。

谢谢!!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP