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-адреса в нашей панели управления угрозами, чем на вашем сервере.

Другие вопросы по тегам