我希望在我们的was服务器上更新iptable,这将在一定程度上防止DoS攻击。
1)与网络流量有关,下面是我发现的iptable规则。
iptables -I INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 10 -j DROP
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m limit --limit 50/minute --limit-burst 200 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -m limit --limit 50/second --limit-burst 50 -j ACCEPT我能够理解前2条规则。有人能澄清过去的2条规则吗?考虑到最后两个规则,第一个规则是否意味着每分钟只接受50个新连接?极限爆破是做什么的?我试着读到它。但不确定我是否理解得很清楚。这是否意味着一旦有200个新的连接立即被接受,那么它的限制是每分钟只有50个新的连接。任何新的连接请求都将被删除。什么时候又会允许200次新的请求再次出现?
现在,最后一个规则意味着什么?每秒只有50个用户可以连接到我的per服务器?为什么这里的爆裂数又是一样的50?有了这两条规则,是否有可能有一些合法的流量会被丢弃?
2)我遇到了下面的一组规则,这些规则在很多地方都是用来阻止端口扫描的。看上去对吗?有人能解释一下这是怎么回事吗?我不太清楚逻辑,以及为什么dport在最近的4条规则中是139。
# Attempt to block portscans
# Anyone who tried to portscan us is locked out for an entire day.
iptables -A INPUT -m recent --name portscan --rcheck --seconds 86400 -j DROP
iptables -A FORWARD -m recent --name portscan --rcheck --seconds 86400 -j DROP
# Once the day has passed, remove them from the portscan list
iptables -A INPUT -m recent --name portscan --remove
iptables -A FORWARD -m recent --name portscan --remove
# These rules add scanners to the portscan list, and log the attempt.
iptables -A INPUT -p tcp -m tcp --dport 139 -m recent --name portscan --set -j LOG --log-prefix "Portscan:"
iptables -A INPUT -p tcp -m tcp --dport 139 -m recent --name portscan --set -j DROP
iptables -A FORWARD -p tcp -m tcp --dport 139 -m recent --name portscan --set -j LOG --log-prefix "Portscan:"
iptables -A FORWARD -p tcp -m tcp --dport 139 -m recent --name portscan --set -j DROP发布于 2016-02-28 19:56:57
limit扩展实现了令牌桶机制。通常,当规则匹配时,netfilter跳转到提供的目标,在本例中为ACCEPT。当插入limit扩展时,netfilter必须在允许跳转之前从该规则的“桶”中移除一个“令牌”。如果桶中没有任何标记,则这个扩展可以防止netfilter跳转,即使规则是匹配的。
--limit 50/minute #tells netfilter to add 50 tokens per minute to the bucket
--limit-burst 200 #tells netfilter to use a bucket which holds up to 200 tokens如果每分钟(或更多)有50个连接请求,您的服务器将允许每分钟有50个新连接。如果现在只有不到50个请求,桶就会被填满(实际上它已经满了)。这意味着,如果一分钟内只有几个请求,服务器将在下一分钟内接受50多个新请求。为了防止这种情况失控,对桶能容纳多少令牌有一个上限。在这个案子里是200。当桶满时,您的服务器将接受下一个传入的200个连接,即使它们同时访问了您的服务器。由于这是超过50,我们称之为突发,在那里接受连接的数量激增到超过我们想要的50在平均。
第二条规则意味着,只要属于流网络过滤器,此机器将第二次接受50个IP数据包,而无需进一步研究。要衡量这个规则的效果,我们需要看到整个链(以及它引用的每一个链以及它所引用的每个链)。然而,我可以告诉你们一些在这里排队的事情:
RELATED数据包,以完成握手。成功地建立了每分钟50次的连接,完全满足了你遇到困难的第二条规则。如果最后一个规则是50/minute,那么这四个规则可能是一个非常酷的DoS保护框架的一部分。由于它缺少--dport 80过滤器,而且是50/second,所以我只能猜测:
( a)你完全断章取义,这与前三条没有直接关系。
( b)这是减缓交通的一般上限。
c)这是个错误,应该是50/minute。
( d)在保护服务器免受DoS攻击和在DoS攻击期间和之后保持服务可访问性之间是一种权衡。
要理解第二个片段,首先必须深入到您的头脑中,recent扩展使用并维护有关源IP地址的知识。
recent扩展在列表中管理其知识。默认列表名为DEFAULT,如果没有提供其他列表,则使用它。其中一个使用--name提供另一个列表。
因此,前两条规则意味着“如果源IP在最后86400秒内被放到列表portscan中,则丢弃该数据包”。
第二条规则意味着“从列表portscan中删除此IP地址”。请不要只在上一条规则不匹配时才对此规则进行评估。此规则的存在是为了使列表portscan保持简短。更长的列表需要更长的搜索时间。
最后四个规则将源it放在portscan列表中,记录它并DROP数据包。--dport 139之所以存在,是因为只有在这种情况下才需要这种行为。我非常确信,在上下文中,这些规则更有意义,因为这不是防止端口扫描的完整规则集。
https://unix.stackexchange.com/questions/266343
复制相似问题