[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 или RHEL | firewalld |
| Сложные сетевые правила, NAT | nftables |
Не используйте несколько инструментов одновременно — они будут конфликтовать.
Базовые примеры
Открыть порт 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))