RHEL7 / CentOS7 имеет новый firewalld
сервис межсетевого экрана, который заменяет iptables service
(оба используют iptables
инструмент для взаимодействия с Netfilter ядра внизу).
firewalld
можно легко настроить на блокировку входящего трафика, но как отметил Томас Вернер 1,5 года назад «ограничить исходящий трафик простым способом с помощью firewalld сейчас невозможно». И, насколько я понимаю, с тех пор ситуация не изменилась. Или есть? Есть ли способ заблокировать исходящий трафик с помощью firewalld
? Если нет, то есть другие «стандартные» способы (в дистрибутиве RHEL7) блокировки исходящего трафика, кроме ручного добавления правил через iptables
инструмент?
Я не нашел ни одной опции в этом красивом графическом интерфейсе, но это возможно через прямой интерфейс
Чтобы включить только исходящий порт 80:
firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 0 -p tcp -m tcp --dport=80 -j ACCEPT
firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -j DROP
Это добавит его к постоянным правилам, а не к правилам времени выполнения.
Вам нужно будет перезагрузить постоянные правила, чтобы они стали правилами времени выполнения.
firewall-cmd --reload
отображать постоянные правила
firewall-cmd --permanent --direct --get-all-rules
для отображения правил времени выполнения
firewall-cmd --direct --get-all-rules
После того, как я сам задал тот же вопрос и немного поработал, я собрал несколько хороших правил для ограничения исходящего трафика запросами HTTP / HTTPS и DNS:
Разрешить установленные соединения:
# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 0 -m state --state ESTABLISHED,RELATED -j ACCEPT
Разрешить HTTP:
# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -p tcp -m tcp --dport 80 -j ACCEPT
Разрешить HTTPS:
# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -p tcp -m tcp --dport 443 -j ACCEPT
Разрешить DNS-запросы:
# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -p tcp -m tcp --dport 53 -j ACCEPT
# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -p udp --dport 53 -j ACCEPT
Отрицай все остальное:
# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 2 -j DROP
Было бы неплохо сначала протестировать, опуская аргумент --permanent.
Я ни в коем случае не эксперт, но мне кажется, что это нормально работает :)
Что касается графического интерфейса пользователя; Я думаю, вы найдете это под "Прямая конфигурация". Чтобы получить к нему доступ, вы должны выбрать его в"Посмотреть". Я могу ошибаться.
Примечание
Удалить правила; вы должны выйти, а затем снова войти.