iptables с Cloudflare
Я использую 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 =
2 ответа
Причина, по которой это не работает (и не собирается работать), заключается в том, что 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, как упоминал Дэймон. Это становится болезненным, если у вас есть много IP-адресов, которые вы хотите заблокировать, или они часто меняются.
- Блокируйте запросы на уровне приложения. Такие инструменты, как мое собственное плохое поведение, могут выполнять подобные вещи.
На самом деле мы должны чтить все, что у вас есть в iptables.
Вы пытались заблокировать этот IP в панели управления угрозами CloudFlare? На самом деле может быть проще блокировать IP-адреса в нашей панели управления угрозами, чем на вашем сервере.