什么样的技术和/或模块,可用于实现强劲速度限制(请求|字节/ip/单位时间)在阿帕奇?

有帮助吗?

解决方案

最好的

其余的

其他提示

此博客中所述帖子似乎可以使用 mod_security 来实现每秒的速率限制。

配置如下:

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"

有许多方式,包括网络应用程序防火墙但是最简单的事情,以实现如果使用Apache国防部。

一个这样的国防部,我想建议的是 mod_qos.这是一个免费的模块,该模块是veryf有效地对国家计量院DOS、强制性和Slowloris类型的攻击。这会减轻你的服务器的负载。

这是很强大的.

电流释放 mod_qos 模块实现了控制机制以管理:

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

  • 限制带宽等的 最大允许数量的要求,每秒一个网址或最大/最小的下载千字节/秒。

  • 数限制的要求活动每第二(特殊请求 条件)。

  • 限制的数量的请求的活动在限定的一段时间。
  • 它还可以检测非常重要者(贵宾),它可以访问 网络服务器没有或较少的限制。
  • 一般请求线和标题过滤器,拒绝未经授权的 操作。

  • 要求体数据的限制和过滤(需要mod_parp).

  • 限制的数量的请求的活动为个人客户(IP)。

  • 限制TCP连接的水平,例如,最大号的 允许的连接从一个单一的源IP地址或动态 保持活动的控制。

  • 更喜欢被称IP地址的服务器运行的自由TCP 连接。

这是一种样品配置什么的你可以用它。有数以百计的可能配置,以满足你的需要。访问该网站的更多信息的控制。

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用于所有事情。

可悲的是, mod_evasive 在非prefork配置中使用时不会按预期工作(最近的apache设置主要是MPM)

还有一个选项 - mod_qos

配置起来并不简单 - 但功能强大。

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

取决于您为什么要限价。

如果要防止服务器过载,将NGINX置于其前面实际上是有意义的,并配置限速。这是有道理的,因为NGINX使用的资源要少得多,就像每万个连接几MB一样。因此,如果服务器被泛洪,NGINX将进行速率限制(使用少量资源)并仅将允许的流量传递给Apache。

如果你所追求的只是简单,那就使用类似mod_evasive的东西。

像往常一样,如果要防范DDoS或DoS攻击,请使用像Cloudflare这样也具有速率限制的服务。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top