如何使用mod_security删除所有请求

我有一个启用了多个网站的apache2服务器,包括默认的一个(000default)。 默认服务器正在捕获很多垃圾请求,这些请求除了占用带宽并填满日志文件之外什么也不做。

什么将是一个最小的虚拟主机configuration,将放弃所有的命中默认网站?

这是我迄今为止使用mod_security,但它似乎什么也没做,只是响应一个403的所有请求:

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

mod_security动作deny会产生一个403响应,而drop会立即closures连接。 从手册 :

下降

说明:立即发起一个“连接closures”操作,通过发送一个FIN数据包来拆除TCP连接。

行动组:破坏性

示例:以下示例启动一个IP收集以跟踪基本身份validation尝试。 如果客户端在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" 

注意

当对Brute Force和Denial of Service攻击做出响应时,这个操作是非常有用的,在这两种情况下,你都希望最小化networking带宽和返回给客户端的数据。 此操作会导致错误消息出现在日志中“(9)错误的文件描述符:core_output_filter:将数据写入networking”

Apache必须以某种方式处理请求,它不能忽略它们。 回应403 Forbidden是尽可能接近你。

我设法解决这个与以下configuration:

 <VirtualHost *:80> ServerName default.only SecRuleEngine On SecRule REMOTE_ADDR "^\d" drop,phase:1 </VirtualHost> 

这适用于我与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>