禁止 IP 地址滥用 Apache HTTP 服务器

禁止 IP 地址滥用 Apache HTTP 服务器

最近有些客户端发出 CONNECT 请求或将我的服务器视为代理服务器,这真的很烦人。我目前使用的方法是定期检查 access.log 以过滤掉此类请求和黑客攻击(尝试访问 /PMA/ 等)。问题是,我如何才能自动执行此过程,以便服务器在检测到此类请求时阻止这些 IP 地址?

答案1

鉴于您的担忧是因使用 CONNECT 方法而引发的,即您通过这种方式确定“不良行为”,为什么不直接使用 CONNECT 方法阻止请求呢?例如,使用<LimitExcept>指示

<Directory />
  <LimitExcept GET HEAD OPTIONS>
    Require all denied
  </LimitExcept>
</Directory>

将阻止 POST、PUT、DELETE、CONNECT 等,同时仅允许指定的方法 GET、HEAD 和 OPTIONS。

您可以使用 Fail2Ban、Mod-Security 等工具来检测和处理不良行为,但请注意这些工具:(1) 需要您检测/确定什么是“不良”行为,(2) 需要您的服务器具备(有时是相当大的)处理能力。对于第一个问题,您可能会无意中阻止您真正想要的流量,而且无论如何,通过追逐 IP 地址,您是在玩“打地鼠”游戏。对于第二个问题,您需要考虑“解决方案”需要多少服务器资源,而不是简单地“点击”您的网页需要多少服务器资源,如果你已经采取措施确保这次撞击是无害的

另一方面,你的服务器不应该行为作为开放代理,尽管坏人总是尝试使用它作为代理,以及许多其他事情。服务器强化是关键。为此,您可以查看互联网安全中心 (CIS) 安全基准计划,它将允许您免费下载有关强化许多 Web 服务器和操作系统的指南。

答案2

尝试 Fail2ban 并配置 Apache 过滤器http://www.fail2ban.org/wiki/index.php/HOWTO_apache_proxy_filter

答案3

除了 Fail2Ban(我总是部署它并且发现它根本不占用太多资源)之外,你还可以考虑 RepSheet:

http://getrepsheet.com/index.html

它有点像 Fail2Ban,你可以用它来表示“这种类型的流量可能是不受欢迎的,而这种类型的流量行为是我所期望的,并且想要优先处理。” 你可以使用它添加的标头在应用程序级别构建逻辑,例如添加 Captcha 之类的挑战,或发送到辅助服务器,而不是直接禁止或只是限制。

相关内容