@wtfowned

VestaCP Firewalld за CloudFlare Не блокирует запросы — почему?

Добрый день!

1. Внутри сервера настройка стоит nginx(front)+apache2(back) для доменов.
2. Сайты стоят за Cloudflare.
3. Переключение настроек для домена с nginx или без nginx - ничего не меняет, правила по-прежнему не работают на блокировку.

Если же делаю SUSPEND на правило 0.0.0.0/0 ACCEPT 80,443 (WEB) , то все "ок" - сервер не принимает никаких коннектов :)
Нужно чтобы принимал все, ЗА ИСКЛЮЧЕНИЕМ тех что введены в правилах где стоит DROP.

Пробовал также менять местами правила. Сначала указать ACCEPT правило, а потом все на DROP, и наоборот (так по стандарту в веб-интерфейсе правила добавляются вверх, а в конфиге они идут вниз), но тоже ничего не изменилось.

Если проверяю Netstat, то коннекты вижу только с IP Адресов Cloudflare, хотя в стандартном nginx конфиге вроде как прописано отображение корректного IP.

В самих логах Apache для доменов уже настоящие IP отображаются, то есть Nginx принимает запрос от клауда, и передает в Apache корректный IP. Здесь особенно странно становится что в логах Апача если убрать nginx на фронте при этом отображается корректный IP.

Проблема в том что через веб-интерфейс ввожу правила для блокировки по IP и они не работают. Работают при этом все остальные для других портов mysql / vnc и остальное.

Что можно сделать?
  • Вопрос задан
  • 302 просмотра
Решения вопроса 1
@wtfowned Автор вопроса
Разобрался по совету Владимир нагуглил оптимальное для себя решение через GEO.
https://nginx.org/ru/docs/http/ngx_http_geo_module.html

В основной nginx конфиг в директиву http пишем :
#Cloudflare CIDR IP BAN
	geo $http_x_forwarded_for $allowed {
    	default allow;
		82.118.227.0/24 deny;
		#any ip or CIDR 
	}
	#/Cloudflare CIDR IP BAN


В конфиг под конкретный домен в директиву server > location / добавляем :
#Блокировка по IP#
		if ( $allowed = "deny" ) { 
			return 403; 
		}


Но данная схема не очень удобна тем что надо под каждый домен добавлять, в моем случае такие изыски не удобны и не нужны. Есть ли схема при которой достаточно было бы изменить только основной nginx.conf в директиве http , не залезая в server ?
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@MechanID
Админ хостинг провайдера
Дело в том что в заголовках http cloudflare вам передает реальный адрес - просто для статистики, и nginx или апач его уже пишут в лог, но фактически все запросы идут от cloudflare и фаерволл видит именно их.
Ваши варианты:
1 - блочить ипы прямо на клаудфларе
2 - если у вас нет https - парсить через iptables -m string --string '1.1.1.1' пакеты с нужными ип и тогда их дропать
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы