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

Отклонить хост (не ip) с помощью firewalld / firewalld.richlanguage

Можно ли добавить правило в linux firewalld для отклонения всего хоста (не IP или диапазон IP)?

Например, я хочу отклонить все соединения, исходящие с my133y.org.

Используя язык с расширенными возможностями брандмауэра, я могу отбросить IP, но на страницах руководства не указано отклонение хоста.

Пример отклонения ip

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.100.4/24" drop'

при изменении на:

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="my133t.org" drop'

Получил ошибку:

Error: INVALID_ADDR: my133t.org

Страница руководства для firewall-cmd говорит факты:

Исходный адрес или диапазон адресов - это либо IP-адрес, либо сетевой IP-адрес с маской для IPv4 или IPv6, или MAC-адрес, или ipset с префиксом ipset :. Для IPv4 маска может быть сетевой маской или простым числом. Для IPv6 маска представляет собой простое число. Использование имен хостов не поддерживается.

Для этого есть веская причина. Firewalld - это фильтр пакетов. Он сравнивает пакет с имеющимися у него правилами. IP-пакет имеет IP-адрес источника и получателя, но не имя хоста. Следовательно, использование хоста в качестве критерия потребует сбора дополнительной информации из дополнительных источников, а именно из система доменных имен DNS. Такая реализация была бы уязвима для атак типа «отказ в обслуживании», так как ваш сервер легко мог бы генерировать новый трафик, пытаясь фильтровать пакеты.

Кроме того, хотя имя хоста легко преобразовать в IP-адрес, запросив A записей в DNS, определение всех имен хостов для IP-адреса не так просто. Конечно, IP может иметь обратный PTR запись, но это не обязательно и не заслуживает доверия.

Например. некоторые единое управление угрозами (UTM) решения с фильтрами содержимого блокируют трафик HTTPS на основе запрещенных имен узлов без шифрования трафика TLS. Это означает, что он не может использовать URL-адрес, поскольку HTTP-запрос и его Host: Заголовок зашифрован: он видит только IP-адрес, как и ваш брандмауэр. Вместо фильтрации содержимого он блокирует весь трафик HTTPS на этот IP-адрес, используя предварительно выбранный список IP-адресов для этого имени хоста. Это именно то, что вы должны делать.

Если вы действительно хотите использовать имена хостов, вам нужно сначала запросить IP-адреса. Скажем, вы хотите запретить своим сотрудникам пользоваться serverfault.com на свое драгоценное рабочее время.

  1. dig +short serverfault.com
  2. Заблокируйте те место назначения IP-адреса.
  3. Повторяйте это через равные промежутки времени, начиная с удаления устаревших правил.