用UFW进行速率限制:设置限制

UFW的手册页提到它可以为我设置iptables限速

ufw支持连接速率限制,这对防止暴力login攻击非常有用。 如果IP地址在最近30秒内尝试启动6个或更多的连接,ufw将拒绝连接。 有关详细信息,请参阅http://www.debian-administration.org/articles/187 。 典型的用法是:

ufw limit ssh/tcp 

不幸的是,这是我能find的所有文档。 我想坚持UFW,而不是使用更复杂的iptables命令(保持“简单”的东西)。

我如何使用ufw来限制端口80上的所有传入(不传出)stream量到每30秒20个连接? 如何禁用端口30000到30005的速率限制? 是否为所有端口默认启用速率限制?

UFW被devise为“不复杂”,在这种情况下,意味着您不能控制连接限制的速度的细节。 如果你想挖掘UFW的Python源代码,你可以找出如何调整它。 /usr/share/pyshared/ufw/backend_iptables.py的相应信息(在我的Ubuntu 10.04系统上)

因此,把时间问题放在一边,这里是最后一些快速问题的答案。

  1. 假设10.10.10.0/24是您的本地networking,这将默认限制规则应用于端口80 / tcp传入:

     ufw limit proto tcp from any port 80 to 10.10.10.0/24 
  2. 和3.速率限制默认情况下不打开。 要将其添加到除想要的范围之外的每个(目标)端口,请使用此规则。 请注意,规则(即使有范围)是primefaces单位,不能分割。 例如,您不能为任何端口添加规则,然后delete特定范围的(不存在)规则以将其删除。 limit也不是ufw default的可接受的参数。

     ufw limit from any to any port 0:29999,30006:65535 

速度限制可以通过在ufw规则文件中find/lib/ufw/user.rules来改变。 默认情况下没有为所有端口启用限制。 你应该添加每个端口manualy或通过编辑user.rules文件。

正如前一篇文章中提到的,您可以自定义user.rules。 我需要在6秒内连接多达12个连接的smtp连接速率限制。 我首先添加了一条规则,如下所示。 注意:这增加了一个限制规则,允许在默认情况下30秒内6

 ufw limit smtp 

我编辑了/lib/ufw/user.rules(我保留了这个文件的很多其他的调整的自定义副本),如下所示…

 ### tuple ### limit tcp 25 0.0.0.0/0 any 0.0.0.0/0 in -A ufw-user-input -p tcp --dport 25 -m state --state NEW -m recent --set -A ufw-user-input -p tcp --dport 25 -m state --state NEW -m recent --update --seconds 6 --hitcount 12 -j ufw-user-limit -A ufw-user-input -p tcp --dport 25 -j ufw-user-limit-accept