Я использую fail2ban для блокировки сканеров веб-уязвимостей. Он работает правильно при посещении сайта, если CloudFlare обойден, но пользователь все еще может получить к нему доступ, если проходит через него. у меня есть mod_cloudflare установлены.
Можно ли блокировать пользователей с помощью IPtables при использовании Cloudflare?
Ubuntu Server 12.04 32-разрядная.
Access.log:
112.64.89.231 - - [29/Aug/2012:19:16:01 -0500] "GET /muieblackcat HTTP/1.1" 404 469 "-" "-"
Jail.conf
[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? На самом деле, может быть проще заблокировать IP-адреса в нашей панели управления угрозами, чем на вашем сервере.
Причина, по которой это не работает (и не будет работать), заключается в том, что 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 для блокировки посетителей. Однако у вас есть несколько вариантов: