我在AWS上有许多EC2服务器,在负载均衡器(ELB)后面运行apache。不时有一些IP地址滥用EC2服务器上的API并导致拒绝服务。我没有访问负载均衡器的权限,所以我需要在服务器级别阻止访问。
我更改了apache访问日志,使其基于负载均衡器提供的X转发-For报头显示IP(否则它只显示负载均衡器的IP),这样我就可以识别这些IP并以如下方式阻止它们(同样通过指定X转发-For):
<Directory api_dir>
SetEnvIF X-FORWARDED-FOR "1.1.1.1" DenyIP
Order allow,deny
allow from all
deny from env=DenyIP
</Directory>然而,这仍然意味着我需要手动处理每一次攻击,我的服务器因此会遇到一些停机时间。
推荐的方法是自动阻止重复HTTP调用的攻击,这不是基于IP,而是基于转发-用于来自负载均衡器的报头。
发布于 2013-08-21 17:00:37
发布于 2015-05-07 05:50:45
我编写了一个扩展博客帖子,介绍如何使用Apache2.4使用OSSEC (一个基于FOSS主机的入侵检测系统)。这是TLDR:
Require not ip 1.2.3.4 )的文件。command活动响应的主机拒绝配置块和active-response配置块中复制设置,如果在第6级或更高的位置触发警报,它会阻塞IP地址10分钟。local_rules.xml定义文件中,用于记录到Apache日志中的HTTP请求,当与Y 时间框架中的X 频率匹配时,这些规则将触发上述活动响应(例如,在10秒内超过50次,或者您认为是滥用的)。如果您还没有使用OSSEC (或其他一些HIDS),我会衷心地推荐它--它非常容易设置,并且提供了很多现成的功能。DigitalOcean为Ubuntu14.04提供了一个很好的OSSEC安装教程 (您可以很好地理解它,甚至对于其他linuxes也是如此)。您只需在每个服务器上以“本地”模式安装它即可开始,稍后再重新安排它以使用它的高级客户端服务器架构。
还请注意,每次将IP添加到块列表时,该技术都需要自动重新启动Apache,这对某些人来说可能是不可能的。
https://serverfault.com/questions/532681
复制相似问题