我正在使用 fail2ban 来阻止 Web 漏洞扫描程序。如果绕过 CloudFlare,它在访问网站时可以正常工作,但如果通过 CloudFlare,用户仍然可以访问它。我有mod_cloudflare已安装。
使用 Cloudflare 时可以使用 IPtables 阻止用户吗?
Ubuntu Server 12.04 32 位
访问日志:
112.64.89.231 - - [29/Aug/2012:19:16:01 -0500] "GET /muieblackcat HTTP/1.1" 404 469 "-" "-"
监狱配置文件
[apache-probe]
enabled = true
port = http,https
filter = apache-probe
logpath = /var/log/apache2/access.log
action = iptables-multiport[name=apache-probe, port="http,https", protocol=tcp]
maxretry = 1
bantime = 30 # Test
Apache-probe.conf
[Definition]
failregex = ^<HOST>.*"GET \/muieblackcat HTTP\/1\.1".*
ignoreregex =
答案1
这种方法不起作用(并且不会起作用)的原因是 iptables 操作的是直接连接到您的计算机的 IP 地址。如果您使用 CloudFlare,这意味着您接收来自 CloudFlare 的连接,而不是直接从最终用户接收连接。
以下是取自我的 CloudFlare 站点之一的示例:
::ffff:108.162.221.19 www.yes-www.org - [05/Sep/2012:21:50:50 +0000] "GET / HTTP/1.1" 200 9585 "http://no-www.org/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.8 (KHTML, like Gecko) Chrome/23.0.1251.2 Safari/537.8" "64.244.153.130"
这里我们看到连接来自 108.162.221.19,这是 CloudFlare 的服务器之一。如果在 iptables 中阻止了此地址,则 CloudFlare 将无法访问我们(从该地址;幸运的是,他们还有许多其他地址)。与 CloudFlare 的连接实际上来自 64.244.153.130,这是 X-Forwarded-For 和 CF-Connecting-IP 标头中显示的内容。
不幸的是,在这种设置下,您无法真正使用 iptables 来阻止访问者。不过,您确实有几个选择:
- 使用 CloudFlare 的威胁控制面板,正如 Damon 所说。如果您有很多要阻止的 IP 地址,或者它们经常更改,这会很麻烦。
- 在应用程序级别阻止请求。我自己的工具不良行为可以完成这样的事。
答案2
我们实际上应该尊重您在 iptables 中拥有的一切。
您是否尝试过在 CloudFlare 威胁控制面板中阻止该 IP?实际上,在我们的威胁控制面板中阻止 IP 可能比在您的服务器上阻止 IP 更容易。