Рейтинг:1

firewalld: блокировка исходящих соединений также блокирует входящие соединения

флаг in

log4shell заставил нас улучшить безопасность некоторых серверов. Теперь мы хотим также заблокировать исходящий трафик (насколько это возможно). Текущие правила брандмауэра:

/> firewall-cmd --list-all
публичный (активный)
  цель: по умолчанию
  icmp-инверсия блока: нет
  интерфейсы: eth0
  источники: 
  службы: dhcpv6-клиент https smtp ssh
  порты: 143/TCP 3000/TCP 4949/TCP 8080/TCP 12999/TCP 25/TCP 1194/TCP
  протоколы: 
  маскарад: нет
  форвард-порты: 
  исходные порты: 
  icmp-блоки: 
  богатые правила: 

Так что, например, в настоящее время возможны подключения к серверу через ssh (и должны быть возможны в будущем). Теперь мы хотим запретить все исходящие подключения, кроме подключений через https (443). Для этого мы добавили несколько правил firewalld (см. также https://serverfault.com/a/624474/145652):

/> firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 0 -p tcp -m tcp --dport=443 -j ACCEPT
успех
/> firewall-cmd --permanent --direct --add-rule ipv4 filter ВЫВОД 1 -j DROP
успех
/> брандмауэр-cmd --reload

Но после этих команд мы потеряем все подключения к серверу: ни пинга, ни ssh, сервер не принимает никаких подключений. Возможно, что firewall-cmd --permanent --direct --add-rule фильтр ipv4 ВЫВОД 1 -j DROP блокирует все исходящий трафик, включая ответы серверов на входящие (ssh-) запросы? Отсутствует ли правило, позволяющее отправлять данные ответов на входящие запросы?

A.B avatar
флаг cl
A.B
Использование прямых правил едва ли можно назвать использованием firewalld. Это скорее обход его (с низкими значениями приоритета), чем его использование.
Рейтинг:2
флаг cn

Я просто запускаю экземпляр для тестирования, но я подозреваю, что это потому, что вы также не разрешаете связанные/установленные исходящие правила, поэтому ядро ​​убивает ваши существующие соединения.

Обновление: я уверен, что это проблема. Я только что проверил это, загрузив Centos 7 на экземпляре EC2, установив FirewallD, а затем вставив свое первое правило без постоянный флаг. Все нормально работает.

Как только я вставил в УРОНИТЬ правило, меня отключили.

В предоставленной вами ссылке первое правило, которое они добавляют, - это УСТАНОВЛЕННЫЙ, СВЯЗАННЫЙ правило. Это означает, что разрешенные входящие соединения разрешены исходящим (поэтому брандмауэр сохраняет состояние). Без этого правила у вас нет правил с отслеживанием состояния, и ваше SSH-соединение не может быть установлено.

Таким образом, ваш фактический список правил должен быть:

# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 0 -m state --state ESTABLISHED, RELATED -j ACCEPT
# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -p tcp -m tcp --dport 80 -j ACCEPT
# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -p tcp -m tcp --dport 443 -j ACCEPT
# 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 ВЫВОД 1 -p udp --dport 53 -j ПРИНЯТЬ
# firewall-cmd --permanent --direct --add-rule фильтр ipv4 ВЫВОД 2 -j DROP

Обратите внимание, что я также включил HTTP, HTTPS и DNS, иначе соединения не будут устанавливаться с DNS-именами, потому что сервер не сможет их разрешить...

флаг in
В ссылке, которую я предоставляю, я только прочитал принятый ответ. Но иногда полезно читать больше как только принятый ответ или ответ с наибольшим количеством голосов - лол. Спасибо!

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.