我有一个启用了多个网站的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>