Можно ли добавить правило в 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
на свое драгоценное рабочее время.
dig +short serverfault.com