Только для посетителей нашего блога: получите дополнительные 3 месяца бесплатно + скидку 10% на трехгодичный план YSBLOG10
Захватить сделку

Как исправить FirewallD на сервере Linux, не нарушая его работу. SSH О компании

Как исправить FirewallD на сервере LinuxЗапустите и включите службу, просмотрите журналы на наличие ошибок, устраните конфликты с другими межсетевыми экранами (UFW, службами iptables, nftables), исправьте зоны и правила, затем перезагрузите и протестируйте.

Используйте systemctl и команду firewall для диагностики, проверки конфигурации и безопасного внесения постоянных изменений без нарушения работы системы. SSH доступ. Если вы ищете, как исправить FirewallD на сервере Linux, это руководство расскажет вам о быстрых решениях и подробном устранении неполадок.

Мы проверим работу сервиса, изучим журналы, исправим проблемы с зонами/правилами, разрешим конфликты и применим лучшие практики, чтобы ваш брандмауэр Linux защищал сервисы, не блокируя легитимный трафик.


Контрольный список для быстрого устранения неполадок (используйте безопасно). SSH)

Прежде чем предпринимать какие-либо серьезные действия, попробуйте эти безопасные и распространенные решения. Держите консоль открытой или убедитесь, что она не закрыта. SSH Разрешен (порт 22) во избежание блокировок.

Исправление ошибки FirewallD на сервере Linux
  • Проверьте состояние сервиса и запустите его при необходимости.
  • Проверьте журналы на наличие непосредственных признаков ошибок.
  • Отключите конфликтующие межсетевые экраны (UFW, службы iptables, службы nftables).
  • Проверьте и перезагрузите конфигурацию.
  • Убедитесь, что ваш интерфейс находится в правильной зоне и разрешены порты/службы.
# 1) Service status and start
sudo systemctl status firewalld
sudo systemctl start firewalld
sudo systemctl enable firewalld

# 2) Logs
sudo journalctl -u firewalld -b --no-pager

# 3) Conflicts (example fixes)
sudo systemctl stop ufw 2>/dev/null; sudo systemctl disable ufw 2>/dev/null
sudo systemctl stop iptables ip6tables ebtables 2>/dev/null; sudo systemctl disable iptables ip6tables ebtables 2>/dev/null
sudo systemctl stop nftables 2>/dev/null; sudo systemctl disable nftables 2>/dev/null

# 4) Validate and reload rules
sudo firewall-cmd --check-config
sudo firewall-cmd --reload

# 5) Make sure SSH is allowed
sudo firewall-cmd --zone=public --add-service=ssh --permanent
sudo firewall-cmd --reload

Как работает FirewallD (чтобы вы не исправили ошибку)

  • Зоны: Уровни логического доверия (публичный, внутренний, доверенный, DMZ). Ваш интерфейс (eth0, ens3 и т. д.) должен быть привязан к правильной зоне.
  • Временное использование против постоянного использования: Изменения без --permanent Действует до следующей перезагрузки или обновления. Сохранение времени выполнения на диск с помощью --runtime-to-permanent.
  • Бэкенды: В современных дистрибутивах в качестве бэкэнда используется nftables; в более старых может использоваться iptables. Не используйте другие брандмауэры. managers наряду с firewalld.
# Inspect zones and mappings
sudo firewall-cmd --get-default-zone
sudo firewall-cmd --get-active-zones
sudo firewall-cmd --list-all --zone=public

# Make permanent changes persist
sudo firewall-cmd --runtime-to-permanent

Устранение проблемы с запуском FirewallD

Если firewalld не запускается, это обычно происходит из-за конфликта, поврежденной конфигурации или проблем с D-Bus/бэкэндом.

# Check and unmask, then start
sudo systemctl is-enabled firewalld
sudo systemctl is-active firewalld
sudo systemctl unmask firewalld
sudo systemctl daemon-reload
sudo systemctl restart firewalld

# Look for errors (permissions, D-Bus, conflicts)
sudo journalctl -xeu firewalld --no-pager

# Verify D-Bus is healthy (do NOT restart D-Bus on remote production unless you have console access)
systemctl status dbus

Если в логах упоминаются ошибки nft или iptables, остановите и отключите другие межсетевые экраны. managers (UFW, службы iptables, nftables) обеспечивают эксклюзивный контроль firewalld. Если конфигурация выглядит поврежденной, проверьте ее и сбросьте до значений по умолчанию (см. ниже).


Устранить проблемы с зонами и правилами.

1) Разместите интерфейс в соответствующей зоне.

# See interfaces active in zones
sudo firewall-cmd --get-active-zones

# Move your interface (e.g., eth0) to "public"
sudo firewall-cmd --zone=public --change-interface=eth0
sudo firewall-cmd --runtime-to-permanent
sudo firewall-cmd --reload

# NetworkManager users can bind zones to connections:
nmcli connection show
sudo nmcli connection modify <CONNECTION_NAME> connection.zone public
sudo nmcli connection up <CONNECTION_NAME>

2) Откройте нужные порты/службы.

  • Сервисы: Совместимые пакеты протоколов (ssh, http, https, dns, smtp).
  • Порты: Исходный протокол/порт (например, TCP/8080).
# Allow common services
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent

# Or open explicit ports
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent

# Apply
sudo firewall-cmd --reload

# Check
sudo firewall-cmd --zone=public --list-all

3) Устранить путаницу между выполнением программы и перманентным устранением неполадок.

Правила добавлены без --permanent Исчезают после перезагрузки или повторной загрузки. Используйте любой из способов. --permanent с самого начала или сохраните правила выполнения на диск:

sudo firewall-cmd --runtime-to-permanent
sudo firewall-cmd --reload

4) Проверьте и сбросьте конфигурацию.

# Validate
sudo firewall-cmd --check-config

# Reset to distribution defaults (back up first)
sudo cp -a /etc/firewalld /etc/firewalld.backup.$(date +%F)
sudo rm -rf /etc/firewalld
sudo dnf reinstall -y firewalld || sudo apt-get install --reinstall -y firewalld
sudo systemctl restart firewalld

В качестве альтернативы, если служба не запускается, используйте инструмент для работы в автономном режиме:

sudo firewall-offline-cmd --set-default-zone=public
sudo firewall-offline-cmd --add-service=ssh
sudo systemctl restart firewalld

Разрешение конфликтов с другими межсетевыми экранами

  • UFW (Ubuntu/Debian)
  • службы iptables (RHEL/CentOS 7)
  • nftables service (RHEL 8+/Alma/Rocky/Debian/Ubuntu)
# Stop/disable other managers so firewalld is authoritative
sudo systemctl stop ufw nftables iptables ip6tables ebtables
sudo systemctl disable ufw nftables iptables ip6tables ebtables

# Ensure firewalld takes control
sudo systemctl restart firewalld
sudo firewall-cmd --state

Примечание: Группы безопасности облачных сервисов (AWS, Azure, GCP, DigitalOcean) могут блокировать трафик, даже если firewalld настроен правильно. Проверьте правила входящего трафика вашего провайдера.


Расширенный поиск и устранение неисправностей

Проверьте отказы SELinux.

# Look for AVC denials related to firewalld or services
sudo ausearch -m avc -ts recent 2>/dev/null | tail -n 50
sudo journalctl -t setroubleshoot --no-pager | tail -n 50

Если вы видите отказы SELinux для порта службы, используйте утвержденный тип или добавьте его через semanage port (не путем отключения SELinux).

Подтвердите, что служба действительно прослушивает соединение.

# Is the application listening on the expected port?
sudo ss -tulpen | grep -E ':80|:443|:22|:8080'

# Test connectivity from local and remote
curl -I http://127.0.0.1/
nc -vz your.server.ip 80

Временно увеличьте уровень логирования firewalld.

# Run with debug in foreground (for testing sessions)
sudo systemctl stop firewalld
sudo firewalld --debug
# Ctrl+C to stop, then:
sudo systemctl start firewalld

Практические примеры, которые вы можете использовать повторно.

Разрешить доступ веб-серверу (HTTP/HTTPS)

sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --reload

Карантин SSH к доверенному IP-адресу

# Allow SSH only from 203.0.113.10
sudo firewall-cmd --permanent --zone=public \
  --add-rich-rule='rule family="ipv4" source address="203.0.113.10" service name="ssh" accept'
# Drop others (ensure you have console access first!)
sudo firewall-cmd --permanent --zone=public \
  --add-rich-rule='rule family="ipv4" service name="ssh" drop'
sudo firewall-cmd --reload

Переадресация портов и маскировка (NAT)

# Enable masquerade in the public zone
sudo firewall-cmd --permanent --zone=public --add-masquerade

# Forward external 8080 -> internal 10.0.0.5:80
sudo firewall-cmd --permanent --zone=public \
  --add-forward-port=port=8080:proto=tcp:toaddr=10.0.0.5:toport=80

sudo firewall-cmd --reload

Рекомендации по обеспечению стабильности и безопасности

  • Всегда позволяют SSH Перед внесением изменений. Проверьте результаты во время второй сессии.
  • Используйте зоны для разделения интерфейсов, обращенных к глобальной сети, и внутренних интерфейсов.
  • При наличии возможности отдавайте предпочтение сервисам, а не прямым портам; они отслеживают изменения протокола.
  • Внесите необратимые изменения и сделайте резервную копию. /etc/firewalld до обновлений.
  • Избегайте использования нескольких межсетевых экранов одновременно. managers. Firewalld должен быть авторитетным.
  • Документируйте правила и используйте систему контроля версий для /etc/firewalld/*.xml.

Нужна помощь? Вкл. YouStableАвтора manageVPS и выделенные серверыНаша служба поддержки может провести аудит вашего FirewallD, устранить конфликты и согласовать правила с вашей системой безопасности и группами безопасности облака без простоев.

Когда следует связаться с вашим хостингом

  • Firewalld не запускается даже после отключения конфликтов и проверки конфигурации.
  • Вы оказались заперты снаружи или боитесь потерять доступ. SSH доступ.
  • Сложные потребности: Проектирование многосетевых зон, NAT/переадресация или соответствие нормативным требованиям.
  • Вам необходим круглосуточный мониторинг и реагирование на инциденты (рекомендуется для производственной среды).

Если вы размещаете свой сайт через YouStableОткройте заявку, и мы проверим ваши журналы, правила, интерфейсы и межсетевые экраны провайдера от начала до конца. Мы устраняем первопричину, а не только симптомы.


Часто задаваемые вопросы (FAQ)

Почему FirewallD не запускается на моем сервере?

Чаще всего это происходит из-за конфликтов с сервисами UFW/iptables/nftables, поврежденных конфигурационных файлов или ошибок бэкэнда/D-Bus. Проверьте журналы с помощью... journalctl -xeu firewalldотключите другие брандмауэры managers, проверить с помощью firewall-cmd --check-configи перезапустите. Если настройки повреждены, сбросьте их до значений по умолчанию и примените правила заново.

Как мне открыть порт в FirewallD на постоянной основе?

Используйте --permanent Укажите свою зону, затем перезагрузите. Пример: firewall-cmd --zone=public --add-port=8080/tcp --permanent последующей firewall-cmd --reloadОтдавайте предпочтение сервисам (например, http/https), если они доступны.

Как сбросить настройки FirewallD до заводских?

Резервное копирование /etc/firewalldЗатем переустановите или восстановите конфигурацию по умолчанию: cp -a /etc/firewalld /etc/firewalld.backup.$(date +%F)Удалите каталог, переустановите firewalld и перезапустите службу. Тщательно пересоздайте правила и протестируйте. SSH доступа.

В чём разница между правилами, действующими во время выполнения, и постоянными правилами?

Правила, действующие во время выполнения, применяются немедленно, но исчезают после перезагрузки. Постоянные правила сохраняются на диске и загружаются при загрузке системы. Можно использовать любой из этих вариантов. --permanent при добавлении правил или запуске firewall-cmd --runtime-to-permanent чтобы сохранить текущие активные процессы.

Как проверить, какую зону использует мой интерфейс?

Run firewall-cmd --get-active-zones Чтобы просмотреть интерфейсы по зонам. Если интерфейс находится в неправильной зоне, измените его с помощью... firewall-cmd --zone=public --change-interface=eth0 (заменить eth0 (при необходимости), сделайте его постоянным и перезагрузите.

Отправить по:

Санджит Чаухан

Санджит Чаухан — блогер и эксперт по SEO, посвятивший себя помощи веб-сайтам в органическом росте. Он делится практическими стратегиями, полезными советами и идеями для увеличения трафика, улучшения позиций в поисковой выдаче и максимального присутствия в интернете.

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

Ваш электронный адрес не будет опубликован. Обязательные поля помечены * *

Наверх