Назад | Перейти на главную страницу

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 =

На самом деле мы должны уважать все, что есть в 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 для блокировки посетителей. Однако у вас есть несколько вариантов:

  • Используйте панель управления угрозами CloudFlare, как упоминал Деймон. Это становится болезненным, если у вас есть много IP-адресов, которые вы хотите заблокировать, или они часто меняются.
  • Заблокируйте запросы на уровне приложения. Такие инструменты, как мой собственный Плохое поведение может делать такие вещи.