降低

降低

我有一台 apache2 服务器,上面启用了多个网站,包括默认网站 (000default)。默认服务器捕获了大量垃圾请求,这些请求除了消耗带宽和填满日志文件外什么也不做。

什么是最小虚拟主机配置,可以删除所有到达默认站点的请求?

这是我目前使用 mod_security 所做的事情,但它似乎什么也不做,只是对所有请求都响应 403:

<VirtualHost *:80>
    ServerName default.only
    SecRuleEngine On
    SecAction "drop,phase:1"
</VirtualHost>

答案1

mod_security操作deny将产生 403 响应并drop立即关闭连接。 来自手册

降低

描述:立即发起“连接关闭”动作,通过发送FIN数据包来拆除TCP连接。

行动组:颠覆性

例子:以下示例启动 IP 收集以跟踪基本身份验证尝试。如果客户端在 2 分钟内尝试次数超过 25 次,它将丢弃后续连接。

SecAction initcol:ip=%{REMOTE_ADDR},nolog
SecRule ARGS:login "!^$" \
    nolog,phase:1,setvar:ip.auth_attempt=+1,deprecatevar:ip.auth_attempt=20/120
SecRule IP:AUTH_ATTEMPT "@gt 25" \
    log,drop,phase:1,msg:'Possible Brute Force Attack"

笔记

此操作在应对暴力攻击和拒绝服务攻击时非常有用,因为在这两种情况下,您都希望最小化网络带宽和返回到客户端的数据。此操作会导致日志中出现错误消息“(9) 错误的文件描述符:core_output_filter:正在将数据写入网络”

答案2

Apache 必须以某种方式处理请求,不能直接忽略它们。用 进行响应403 Forbidden是最接近的。

答案3

我设法通过以下配置解决了这个问题:

<VirtualHost *:80>
    ServerName default.only

    SecRuleEngine On
    SecRule REMOTE_ADDR "^\d" drop,phase:1
</VirtualHost>

答案4

这对我来说适用于 libapache2-mod-security2 v2.8.0:

<VirtualHost *:80>
  ServerName 1.2.3.4

  CustomLog /dev/null combined

  # https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual
  SecRuleEngine On
  SecAction id:1,phase:1,nolog,drop
</VirtualHost>

相关内容