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

UFW (брандмауэр) не блокирует UDP сразу

У меня АТС (телефонная система называется Астерсик), который работает с udp и tcp. Иногда я получаю недействительный запрос с некоторых IP-адресов, которые хочу заблокировать. Я не могу заблокировать эти запросы, пока не перезагрузу компьютер. Я думаю, причина в том, что UFW не блокирует установленные соединения..

Представим, что я получаю вредоносный запрос с IP-адреса 1.2.3.4. Затем мне нужно заблокировать этот запрос, выполнив команду:

sudo ufw insert 1 deny from 1.2.3.4 to any

мне нужно insert 1 так что правило выполняется раньше других.

В любом случае, хотя я выполняю эту команду, я все равно вижу, что мой компьютер отвечает на 1.2.3.4. Проблема в том, что соединение уже установлено, поэтому ufw не будет отбрасывать эти пакеты, пока эти соединения не будут закрыты.

Нашел временное решение:

1) открываю nano /etc/ufw/before.rules

2) Прокомментируйте строки:

(На картинке строки не комментируются. Но прокомментируйте все, что находится внутри красного кружка)

3) Перезагрузите брандмауэр ufw disable затем ufw enable

Если я прокомментирую эти строки, мой брандмауэр будет работать так, как я хочу. Он сразу же заблокирует соединения!

Проблема в том, что комментирование этих строк приводит к тому, что мой DNS перестает работать Другими словами, когда я выполняю ping google.com я вижу uknown host google.com

Почему dns перестает работать, когда я комментирую эти строки? Короче, мне это нужно, когда я выполняю sudo ufw insert 1 deny from 1.2.3.4 to any Я больше не получаю запросов с этого IP !. Я не могу позволить себе перезагружать компьютер каждый раз, когда хочу заблокировать IP-адрес.

Тоно,

ufw - это интерфейс для iptables. По сути, вы спрашиваете, почему DNS перестает работать, когда вы перестаете принимать связанные, установленные соединения. conntrack отслеживает ваши соединения. Если трафик соответствует записи в conntrack, то он установлен. Если установленное соединение создает новое соединение, оно становится связанным. Если трафик новый и не установлен или не связан, то он новый.

Если соединение уже установлено, вам нужно вставить инструкцию отбрасывания в начало цепочки. Отредактируйте /etc/ufw/before.rules, чтобы у вас был раздел блокировки перед правилами, которые вы прокомментировали. Добавить запись -A ufw-before-input -s 1.2.3.4 -j DROP там. Затем используйте sudo ufw reload.

Если у вас все еще есть проблемы с этим, подумайте об использовании iptables вместо ufw, потому что ufw является интерфейсом для iptables и не включает все его варианты.

https://www.cyberciti.biz/faq/how-to-block-an-ip-address-with-ufw-on-ubuntu-linux-server/

https://help.ubuntu.com/community/UFW

https://askubuntu.com/questions/602176/configure-ufw-to-allow-only-established-and-related-conections-on-ipv4

введите описание ссылки здесь

UDP - это протокол без отслеживания состояния, но ядро ​​Linux по-прежнему отслеживает IP и номера портов для него в течение 30 секунд, чтобы определить установленный и связанный трафик. (30 секунд или значение в /proc/sys/net/netfilter/nf_conntrack_udp_timeout) - Ссылка ServerFault: Iptables: "-p udp --state ESTABLISHED"

DNS работает через UDP, поэтому, если вы отправляете DNS-запрос и закомментировали правило, разрешающее связанный обратный трафик, вы не получите никакого ответа -> сломанный DNS.

Поскольку «состояние» UDP отслеживается в течение 30 секунд, ваша попытка вставить новое правило блокировки в начало INPUT не имеет никакого эффекта. "ufw-before-input" происходит первым и разрешает УСТАНОВЛЕННЫЙ трафик, прежде чем ваше правило INPUT увидит его и ОТКЛЮЧИТЕ.

Чтобы исправить это, вам необходимо:

  • Используйте что-то вроде conntrack, чтобы удалить отслеживаемую запись UDP для хоста, который вы хотите заблокировать, затем добавьте правило блокировки в брандмауэр. Установленного или связанного соединения не будет, поэтому блокировка вступит в силу немедленно. например Удалить определенные записи conntrack?

  • Измените правила брандмауэра так, чтобы вы выполняли УСТАНОВЛЕННОЕ, СВЯЗАННОЕ правило в правилах INPUT после ваших DROP, вместо того, чтобы делать это сначала.

Я не могу позволить себе перезагружать компьютер каждый раз, когда хочу заблокировать IP-адрес

Но вы можете позволить себе фильтровать 4 миллиарда IP-адресов по одному, блокируя их вручную? Это кажется неразумным. Используйте устройство IPS, используйте fail2ban.