我怎样才能用Apache实现速率限制? (每秒请求)

什么技术和/或模块可用于实现强大的速率限制(请求|字节/ IP /单位时间)在Apache?

最好的

  • mod_evasive (更多地关注减lessDoS暴露)
  • mod_cband (最好的“普通”带宽控制function)

剩下的

  • mod_limitipconn
  • mod_bw
  • mod_bwshare

正如在这个博客文章中所述,似乎可以使用Apache的mod_security来实现每秒的速率限制。

configuration是这样的:

SecRuleEngine On <LocationMatch "^/somepath"> SecAction initcol:ip=%{REMOTE_ADDR},pass,nolog SecAction "phase:5,deprecatevar:ip.somepathcounter=1/1,pass,nolog" SecRule IP:SOMEPATHCOUNTER "@gt 60" "phase:2,pause:300,deny,status:509,setenv:RATELIMITED,skip:1,nolog" SecAction "phase:2,pass,setvar:ip.somepathcounter=+1,nolog" Header always set Retry-After "10" env=RATELIMITED </LocationMatch> ErrorDocument 509 "Rate Limit Exceeded" 

包括Web应用程序防火墙的方法有很多,但如果使用Apache mod,则最容易实现。

我喜欢推荐的一个这样的mod是mod_qos 。 这是一个免费的模块,非常有效的对付certin DOS,Bruteforce和Slowloristypes的攻击。 这将缓解你的服务器负载相当多。

这是非常强大的

当前版本的mod_qos模块实现了控制机制来pipe理:

  • 对位置/资源(URL)或虚拟主机的最大并发请求数。

  • 带宽的限制,例如每秒对URL的最大允许请求数或者每秒下载的千字节数的最大值/最小值。

  • 限制每秒请求事件的数量(特殊请求条件)。

  • 在定义的时间段内限制请求事件的数量。
  • 它还可以检测可能访问Web服务器的非常重要的人员(VIP),而没有或有更less的限制。
  • 通用请求行和标题filter拒绝未经授权的操作。

  • 请求身体数据限制和过滤(需要mod_parp)。

  • 限制单个客户端(IP)的请求事件的数量。

  • TCP连接级别的限制,例如来自单个IP源地址或dynamic保持活动控制的最大允许连接数。

  • 当服务器没有空闲的TCP连接时,更喜欢已知的IP地址。

这是您可以使用它的示例configuration。 有数百种可能的configuration来满足您的需求。 访问网站了解更多控制信息。

 Sample configuration: # minimum request rate (bytes/sec at request reading): QS_SrvRequestRate 120 # limits the connections for this virtual host: QS_SrvMaxConn 800 # allows keep-alive support till the server reaches 600 connections: QS_SrvMaxConnClose 600 # allows max 50 connections from a single ip address: QS_SrvMaxConnPerIP 50 # disables connection restrictions for certain clients: QS_SrvMaxConnExcludeIP 172.18.3.32 QS_SrvMaxConnExcludeIP 192.168.10. 

http://opensource.adnovum.ch/mod_qos/

在Apache 2.4中,有一个叫做mod_ratelimit的新模块。 为了模拟调制解调器的速度,你可以使用mod_dialup 。 虽然我不明白为什么你不能使用mod_ratelimit的一切。

不幸的是,在非preforkconfiguration中使用mod_evasive将无法按预期工作(最近的apache设置主要是MPM)

还有一个选项 – mod_qos

configuration不简单 – 但function强大。

http://opensource.adnovum.ch/mod_qos/