Рейтинг:0

может fail2ban добавить правила отказа в nginx вместо использования iptables

флаг de

У меня есть один сервер, который находится за обратным прокси-сервером, который я не контролирую. Я хотел бы использовать fail2ban для блокировки трафика nginx при определенных условиях.

обычно fail2ban использует iptables для блокировки трафика, исходящего с IP-адреса злоумышленника.

Однако мой сервер находится за обратным прокси-сервером, и с точки зрения моего сервера весь трафик исходит от обратного прокси-сервера:

Я нашел следующий URL https://forums.freebsd.org/threads/fail2ban-behind-a-proxy.55041/ что предлагает вам использовать iptables с интропспекцией пакета, например:

actionban = iptables -I fail2ban-<имя> 1 -p tcp --dport 80 -m string --algo bm --string 'X-Forwarded-For: <ip>' -j DROP

Однако обратный прокси-сервер, который я не могу контролировать, перенаправляет трафик как https-трафик, а это означает, что я не могу самостоятельно анализировать трафик для X-переадресовано-для заголовки, поскольку они будут зашифрованы.

Таким образом, мой вопрос.

Есть ли у других похожий сценарий и существует ли существующий бан действий = что добавляет Запретить правила в нгинкс?

Или мне нужно вручную создать скрипт, пытаясь сделать это (отредактировать nginx в конфигурации nginx и перезагрузить nginx)

Какое другое решение позволило бы мне динамически сообщать nginx, какие запросы (содержащие определенные X-Переадресовано-Для: заголовки) для блокировки

Рейтинг:2
флаг cn

фейл2бан можно использовать для запуска скрипта. Этот скрипт может делать все, что вы хотите.


Редактирование запрещающих правил

Я не слишком уверен, как все это может работать на полной скорости, но вы можете легко добавить правила Deny в файл.

Файлы конфигурации Nginx могут включать:

включить /etc/nginx/deny-rules.conf

И ваш скрипт генерирует это запрещать-rules.conf, каким-то образом... Вы хотите добавить IP-адреса в файл, а затем использовать этот файл для создания запрещать-rules.conf файл, используя цикл или что-то в этом роде.

Затем вам нужно перезапустить Nginx, чтобы новые правила были учтены. Это плохая часть в этой схеме. Таким образом, перезапуск будет медленным.


Отклонение

Другим решением было бы использование следующего фильтра:

Динамическое запрещение IP-адресов

Я никогда не использовал это, поэтому боюсь, что вам придется читать документы и смотреть, как все настроить и заставить все это происходить... Однако это должно работать на полной скорости. Скрипт в вашей системе fail2ban может позаботиться об обновлении этого динамического списка.

gelonida avatar
флаг de
спасибо за Ваш ответ. Подождем, чтобы узнать, знают ли некоторые пользователи о существующем сценарии actionbab. Если нет, я приму в качестве ответа
Рейтинг:2
флаг il

Вы можете использовать действие fail2ban nginx-блок-карта, видеть nginx-block-map.conf для деталей.

Просто обратите внимание, что путем фильтрации X-переадресовано-для заголовок, злоумышленникам довольно просто манипулировать запросом, чтобы избежать бана (с установкой разных значений для каждого нового запроса в этом заголовке). Вопрос сидит ли злоумышленник за прокси или просто имитирует прокси и просто устанавливает заголовок X-переадресовано-для само по себе не может быть решено просто.

флаг cn
`X-Forwarded-For` должен быть установлен Nginx для прокси-сервера на серверную систему (т.е. систему, к которой прямой клиент не может получить доступ). Так что, если ваша настройка недействительна, это должно работать нормально.
sebres avatar
флаг il
Нет, это не тот заголовок...заголовок `X-Forwarded-For`, значит топикстартер, будет получен от клиента, поэтому на стороне nginx вообще не понятно, что именно его задало на стороне клиента, поэтому nginx, получив этот запрос, не может отличить клиента (настоящего прокси или просто злоумышленника, выдающего себя за прокси). В отличие от заголовка, который вы имеете в виду, который сравним с защитой вашего nginx от вашего бэкэнда, что просто не имеет смысла (зачем вам для этого нужен fail2ban).
флаг cn
Да, конечно, если Nginx получает заголовок X-Forwarded-For, его нужно игнорировать. Поскольку Nginx является прокси-сервером, ожидается, что он **установит** его, а затем перенаправит запрос на серверный компьютер. Затем внутренний компьютер может отправить сообщение «заблокировать _этот_ IP», и это будет IP-адрес клиента (как указано в сокете). И я вижу, что ОП говорит, что в маршрутизации есть еще один прокси-сервер. Так что я думаю, он не может знать, какой IP блокировать.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.