Я просто запускаю экземпляр для тестирования, но я подозреваю, что это потому, что вы также не разрешаете связанные/установленные исходящие правила, поэтому ядро убивает ваши существующие соединения.
Обновление: я уверен, что это проблема. Я только что проверил это, загрузив 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-именами, потому что сервер не сможет их разрешить...