Apache-2.2

帶有 Cloudflare 的 iptables

  • September 5, 2012

我正在使用 fail2ban 來阻止 Web 漏洞掃描程序。如果繞過 CloudFlare,它在訪問該站點時可以正常工作,但是如果使用者通過它仍然可以訪問它。我安裝了mod_cloudflare

使用 Cloudflare 時是否可以使用 IPtables 阻止使用者?

Ubuntu 伺服器 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 =

這不起作用(並且不會起作用)的原因是 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"

在這裡,我們看到連接是從 CloudFlare 的伺服器之一 108.162.221.19 接收的。如果這在 iptables 中被阻止,那麼 CloudFlare 將無法聯繫到我們(從那個地址;幸運的是他們還有很多其他地址)。與 CloudFlare 的連接實際上來自 64.244.153.130,它出現在 X-Forwarded-For 和 CF-Connecting-IP 標頭中。

不幸的是,在這種設置中,這意味著您不能真正使用 iptables 來阻止訪問者。不過,您確實有幾個選擇:

  • 正如 Damon 所說,使用 CloudFlare 的威脅控制面板。如果您有很多要阻止的 IP 地址,或者它們經常更改,這會很痛苦。
  • 在應用程序級別阻止請求。諸如我自己的Bad Behavior之類的工具可以完成這類事情。

引用自:https://serverfault.com/questions/422923