← К вики

[object Object]

Время: 5 мин · Сложность: ★☆☆☆☆

Время: 5 мин · Сложность: ★☆☆☆☆

Подходит: ✓ Ubuntu 22.04 · ✓ Debian 12 · ✓ AlmaLinux 9


Краткое описание

В Linux файрвол реализован на уровне ядра через netfilter. Поверх него существует несколько инструментов управления — с разным синтаксисом и моделью работы. Выбор зависит от дистрибутива и задачи.

Когда пригодится

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

Что понадобится

  • Сервер с Ubuntu 22.04, Debian 12 или AlmaLinux 9
  • Доступ под root или пользователь с sudo

Обзор инструментов

UFW — Ubuntu и Debian

UFW (Uncomplicated Firewall) — упрощённый интерфейс над iptables. Подходит для большинства задач на серверах Ubuntu и Debian.

apt install -y ufw

Основные команды:

ufw allow ssh          # открыть порт 22
ufw allow 80/tcp       # открыть порт 80 по TCP
ufw deny 3306          # закрыть порт MySQL
ufw status             # посмотреть правила
ufw enable             # включить файрвол

Вывод ufw status:

Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere

firewalld — AlmaLinux и RHEL

firewalld использует зональную модель: сетевые интерфейсы назначаются зонам (public, trusted, internal и др.), каждая зона имеет свой набор правил. По умолчанию включён в AlmaLinux 9.

systemctl enable --now firewalld

Основные команды:

firewall-cmd --permanent --add-service=ssh     # открыть SSH
firewall-cmd --permanent --add-port=80/tcp     # открыть порт 80
firewall-cmd --permanent --remove-port=3306/tcp # закрыть порт
firewall-cmd --reload                           # применить изменения
firewall-cmd --list-all                         # посмотреть правила

Флаг --permanent сохраняет правило после перезагрузки. Без него правило действует только до перезапуска firewalld.

nftables — для сложных правил

nftables — низкоуровневый инструмент, заменяющий iptables. Подходит для сложных сетевых конфигураций: NAT, маршрутизация, rate limiting.

apt install -y nftables    # Ubuntu/Debian
dnf install -y nftables    # AlmaLinux
systemctl enable --now nftables

Пример правила:

nft add rule inet filter input tcp dport 80 accept
nft add rule inet filter input tcp dport 443 accept

Просмотр текущих правил:

nft list ruleset

iptables

Старый стандарт, который сегодня работает как бэкенд для UFW и частично для firewalld. Прямое использование iptables для новых конфигураций не рекомендуется — используйте nftables.

Что выбрать

СитуацияИнструмент
Ubuntu или Debian, типичный серверUFW
AlmaLinux или RHELfirewalld
Сложные сетевые правила, NATnftables

Не используйте несколько инструментов одновременно — они будут конфликтовать.

Базовые примеры

Открыть порт 80 на каждом инструменте:

UFW:

ufw allow 80/tcp

firewalld:

firewall-cmd --permanent --add-port=80/tcp && firewall-cmd --reload

nftables:

nft add rule inet filter input tcp dport 80 accept

Возможные ошибки

UFW заблокировал SSH

Если вы включили ufw enable без ufw allow ssh — потеряете доступ. Восстановить можно через VNC-консоль в панели управления Cheesecake Cloud:

ufw allow ssh
ufw reload

firewalld и UFW запущены одновременно

Это создаёт непредсказуемое поведение. Оставьте только один инструмент:

systemctl stop ufw
systemctl disable ufw

Правила firewalld не сохраняются после перезагрузки

Вы забыли флаг --permanent. Добавьте правило снова с --permanent и выполните firewall-cmd --reload.

FAQ

Нужен ли файрвол, если я не открываю лишних портов?

Да. Файрвол — это явное разрешение только нужного трафика, а не надежда, что ничего лишнего не запущено. Если какой-то сервис случайно запустится на 0.0.0.0, файрвол не даст ему быть доступным снаружи.

Можно ли использовать UFW на AlmaLinux?

Технически да, но это нестандартно. firewalld лучше интегрирован с экосистемой RHEL и SELinux.

Как посмотреть, какие порты сейчас открыты?

ss -tlnp

Пример вывода:

State  Recv-Q  Send-Q  Local Address:Port  Peer Address:Port
LISTEN 0       128     0.0.0.0:22          0.0.0.0:*      users:(("sshd",pid=1234))
LISTEN 0       511     0.0.0.0:80          0.0.0.0:*      users:(("nginx",pid=5678))

Полезные ссылки

Следующие статьи

Сейчас работают только те cookie, без которых сайт не откроется. Разрешите ещё аналитические — будем видеть, где интерфейс мешает, и чинить это.