Как открыть порты и настроить фаервол в Linux через UFW, firewalld и iptables
Чтобы понять, как открыть порты и настроить фаервол в Linux, нужно определить дистрибутив: в Ubuntu и Debian используют UFW, в RHEL и CentOS — firewalld, для тонкой настройки — iptables или nftables.
Оглавление
UFW (Uncomplicated Firewall)
UFW — стандартный и наиболее простой фаервол для Ubuntu, Debian и их производных.
Базовые операции
Перед настройкой правил необходимо активировать фаервол:
sudo ufw enable
Для разрешения входящих соединений используется команда allow с указанием порта и протокола:
sudo ufw allow 8080/tcp
Для проверки текущих правил и состояния фаервола:
sudo ufw status verbose
Ограничение доступа по IP
Порт можно открыть только для конкретного адреса:
sudo ufw allow from 203.0.113.1 to any port 8080
Блокировка портов
Для запрета доступа к порту используется ключевое слово deny вместо allow:
sudo ufw deny 8080/tcp
Firewalld
Firewalld используется по умолчанию в RHEL, CentOS, Fedora и ALT Linux. Он оперирует понятием «зон», а все настройки выполняются через утилиту firewall-cmd.
Открытие портов
Чтобы открыть порт навсегда, выполните команду с флагом --permanent, а затем перезагрузите правила:
sudo firewall-cmd --add-port=8080/tcp --permanent
sudo firewall-cmd --reload
Работа с сервисами
Вместо номеров портов можно разрешать предустановленные службы:
sudo firewall-cmd --add-service=http --permanent
Управление зонами
Узнать активные зоны и привязанные к ним интерфейсы можно командой:
firewall-cmd --get-active-zones
Для закрытия порта используется параметр --remove-port вместо --add-port.
Iptables и Nftables
Iptables — классический инструмент для тонкой настройки Netfilter, который постепенно заменяется на nftables в современных дистрибутивах.
Синтаксис iptables
Правила строятся по принципу «критерий + действие». Например, для открытия веб-порта:
-p tcp --dport 80 -j ACCEPT
При работе с iptables важно учитывать порядок правил в цепочке, так как обработка идёт сверху вниз.
Сохранение правил
Изменения в iptables не сохраняются после перезагрузки автоматически. Требуется использование утилит типа iptables-save или специальных сервисов.
Переход на nftables
Nftables является современной заменой iptables с улучшенной производительностью и единым синтаксисом для IPv4 и IPv6. Основной файл конфигурации обычно находится по пути /etc/nftables.conf, а управление осуществляется командой nft.
Общие рекомендации
- Всегда проверяйте список открытых портов после настройки с помощью утилит
ss -pluntилиnetstat. - Никогда не закрывайте порт SSH (обычно 22) до того, как убедитесь, что у вас есть альтернативный доступ к серверу (консоль хостинга), чтобы избежать блокировки.
- Для большинства пользовательских задач рекомендуется использовать высокоуровневые надстройки (UFW или firewalld), а не редактировать правила netfilter напрямую.
Частые ошибки
- Закрытие порта SSH без резервного доступа. Блокировка порта 22 без настроенной консоли хостинга приводит к потере управления сервером.
- Потеря правил iptables после перезагрузки. Изменения не сохраняются автоматически — необходимо использовать
iptables-saveили аналогичные механизмы. - Неправильный порядок правил в iptables. Обработка идёт сверху вниз, поэтому блокирующее правило в конце цепочки может не сработать, если выше есть разрешающее.
- Отсутствие перезагрузки firewalld. Правила с флагом
--permanentтребуют выполненияsudo firewall-cmd --reloadдля применения.
FAQ
Как проверить список открытых портов?
Используйте утилиты ss -plunt или netstat для просмотра активных соединений и слушающих портов.
Чем отличаются UFW и iptables?
UFW — высокоуровневая надстройка, рекомендуемая для большинства задач благодаря простому синтаксису. Iptables применяется для тонкой настройки Netfilter и требует понимания структуры цепочек и правил.
Как открыть порт только для определённого IP в UFW?
Используйте конструкцию sudo ufw allow from <IP-адрес> to any port <номер-порта>.
В чём разница между iptables и nftables?
Nftables — современная замена iptables с улучшенной производительностью и единым синтаксисом для IPv4 и IPv6. Конфигурация хранится в /etc/nftables.conf.