最近有一些客户端发出 CONNECT 请求或者把我的服务器当作代理服务器,这真的让我很烦。我目前使用的方法是定期检查 access.log 以过滤掉此类请求和黑客攻击(尝试访问 /PMA/ 等)问题是,我怎样才能自动化这个过程,以便服务器阻止这些 IP 地址何时检测到此类请求?
最近有一些客户端发出 CONNECT 请求或者把我的服务器当作代理服务器,这真的让我很烦。我目前使用的方法是定期检查 access.log 以过滤掉此类请求和黑客攻击(尝试访问 /PMA/ 等)问题是,我怎样才能自动化这个过程,以便服务器阻止这些 IP 地址何时检测到此类请求?
鉴于您的担忧是通过使用 CONNECT 方法触发的,也就是说,这就是您确定“不良行为”的方式,为什么不直接使用 CONNECT 方法阻止请求?例如,使用
<LimitExcept>
指令:将阻止 POST、PUT、DELETE、CONNECT 等,同时只允许指定的方法 GET、HEAD 和 OPTIONS。
您可以使用 Fail2Ban、Mod-Security 等工具来检测和处理不良行为,但请注意这些工具:(1) 将要求您检测/确定什么是“不良”行为,并且 (2) 将需要(有时是大量的)服务器上的处理能力。至于第一个问题,您可能会无意中阻止您真正想要的流量,并且无论如何,通过追逐 IP 地址,您正在玩“打地鼠”游戏。至于第二个,您需要考虑“解决方案”需要多少服务器资源,而不是您的网页上的简单“点击”需要多少服务器资源,如果您已采取措施确保点击是无害的。
另一方面,您的服务器不应充当开放代理,即使不良行为者总是会尝试将其用作代理以及许多其他事情。服务器加固是这里的关键。为此,您可以查看Internet 安全中心 (CIS) 安全基准程序,该程序可让您免费下载用于强化许多 Web 服务器和操作系统的指南。
尝试 Fail2ban 并配置 de Apache 过滤器http://www.fail2ban.org/wiki/index.php/HOWTO_apache_proxy_filter
除了我总是部署并且根本没有发现资源密集型的 Fail2Ban 之外,您还可以考虑 RepSheet:
http://getrepsheet.com/index.html
有点像Fail2Ban,你可以用它来表示“这种类型的流量可能是不需要的,这种类型的流量行为是我所期望的,并且想要优先考虑。” 然后,您可以使用它添加的标头在应用程序级别构建逻辑,而不是直接禁止或只是限制,例如添加验证码等挑战,或发送到辅助服务器。