Моя сеть полностью заблокирована, за исключением нескольких сайтов, занесенных в белый список. Все это делается через iptables, который выглядит примерно так:
# Allow traffic to google.com
iptables -A zone_lan_forward -p tcp -d 1.2.3.0/24 -j ACCEPT
iptables -A zone_lan_forward -p udp -d 1.2.3.0/24 -j ACCEPT
iptables -A zone_lan_forward -p tcp -d 11.12.13.0/24 -j ACCEPT
iptables -A zone_lan_forward -p udp -d 11.12.13.0/24 -j ACCEPT
iptables -A zone_lan_forward -p tcp -d 101.102.103.0/24 -j ACCEPT
iptables -A zone_lan_forward -p udp -d 101.102.103.0/24 -j ACCEPT
...
Очевидно, что эти адреса являются гипотетическими, но вы поняли идею. Мой брандмауэр становится огромным. Было бы гораздо проще поддерживать, если бы я мог просто сделать это:
# Allow traffic to google.com
iptables -A zone_lan_forward -p tcp -d google.com -j ACCEPT
iptables -A zone_lan_forward -p udp -d google.com -j ACCEPT
Я считаю, что это возможно, так как man iptables
говорит:
Адрес может быть либо сетевым именем, либо именем хоста (обратите внимание, что указание любого имени для разрешения с помощью удаленного запроса, такого как DNS - это очень плохая идея), сетевым IP-адресом (с / mask) или простым IP-адресом.
Но что меня беспокоит, так это то, что «указание любого имени, которое должно быть разрешено ... DNS - это действительно плохая идея». Почему это плохая идея? Это просто все замедляет?
Если я действительно не должен использовать имена хостов в правилах iptables, то что мне следует сделать, чтобы упростить мой брандмауэр?
источник
Ответы:
Если ваша цель - заблокировать HTTP-доступ, то вам лучше настроить программное обеспечение, предназначенное для фильтрации на этом уровне (например, squid + squidquard).
источник
Если вы используете имена хостов в брандмауэре, ваш брандмауэр теперь зависит от DNS. Это открывает брандмауэр для ряда проблем:
Если вы используете имена хостов и не контролируете DNS, тогда кто-то другой эффективно контролирует ваши правила IPtables. Ошибки, ошибки или проблемы безопасности с их стороны становятся проблемами для вас.
Единственный раз, когда я видел хорошо используемые имена хостов, это для внутренних операций. Я работал в офисе, где IP-адреса и имена хостов были назначены через DHCP. Брандмауэры использовали имена хостов для установления барьеров между различными группами. Поскольку все это контролировалось внутренне, это работало хорошо.
источник
Вы можете использовать обертку вокруг iptables, например shorewall, чтобы упростить ваши правила.
источник
Как уже говорили другие, вы не должны использовать разрешаемые имена DNS в правилах iptables. Они неточны, контролируются третьей стороной и, как правило, являются плохой вещью (тм). Я бы также добавил, что ваш DNS может не работать или может быть недоступен во время запуска службы iptables. В этом случае правило не будет добавлено вообще, и могут возникнуть совершенно новые проблемы (например, потеря доступа к ssh после перезапуска).
Что вы можете сделать, это:
ipset
s, чтобы адреса были сгруппированы и отделены от правилТакже никто не сказал ничего плохого об именах хостов, которые не разрешены DNS (то есть указаны в
hosts
. Вы можете использовать их, если вам действительно нужно.источник
ipset
это ответ. С помощью скрипта, запускаемого из crontab для обновления ipset.Я лично назначаю имя хоста ip вручную в / etc / hosts и затем использую его в iptables.
Таким образом, вы
источник