Как настроить простой фаервол (UFW для Debian/Ubuntu, firewalld для CentOS/RHEL) на VPS?

В статье разберём:

  • как проверить, установлен ли фаервол;
  • как включить UFW в Ubuntu/Debian и открыть нужные порты;
  • как работать с firewalld на CentOS/RHEL;
  • как проверить активные правила и статус;
  • типичные ошибки и как их исправить.

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

  • Ubuntu/Debian (пример в статье) или CentOS/RHEL (альтернативные команды).

  • Доступ по SSH (root или sudo).

  • Уже настроенный новый SSH-порт (если вы его меняли).

Подключение к серверу по SSH

Проверяем и устанавливаем UFW (Ubuntu/Debian)

UFW (Uncomplicated Firewall) — это удобная оболочка для iptables. В большинстве образов Ubuntu он уже предустановлен, но может быть выключен.

Проверка наличия и статуса

sudo ufw status verbose

Если вывод похож на:

Status: inactive

— значит, UFW есть, но он пока выключен.

Установка (если не установлен)

sudo apt update
sudo apt install -y ufw

Важно: перед включением UFW убедитесь, что порт SSH открыт. Иначе вы потеряете доступ к серверу.

Проверка статуса UFW в Ubuntu

Разрешаем SSH и включаем UFW (чтобы не потерять доступ)

Перед включением фаервола обязательно разрешите SSH. Если меняли стандартный порт (22 → например, 22222), откройте оба порта, а после проверки — старый можно удалить.

1) Разрешаем подключение по SSH

# Если SSH на стандартном порту 22
sudo ufw allow OpenSSH

# Либо явно портом
sudo ufw allow 22/tcp

# Если у вас нестандартный порт, например 22222:
sudo ufw allow 22222/tcp

2) Включаем UFW

sudo ufw enable

UFW спросит подтверждение. Нажмите y и Enter. Сразу после этого проверьте статус:

sudo ufw status verbose
Разрешение SSH и включение UFW в Ubuntu

Частые ситуации

  • Ошибка «Could not load logging rules» при enable — обычно лечится перезапуском UFW:

    sudo ufw disable
    sudo ufw --force enable
  • Подключение пропало после enable. Если вы в другой сессии всё ещё в системе — срочно откройте нужный порт:

    sudo ufw allow 22/tcp
    sudo ufw status

    На крайний случай используйте веб-консоль (VNC/Web Console) в панели хостинга и поправьте правила.

Открываем нужные порты и настраиваем правила

После включения UFW можно добавлять правила для сервисов (HTTP, HTTPS, базы данных и т.д.). Открывайте только те порты, которые реально нужны для работы приложений.

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

# HTTP и HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# FTP
sudo ufw allow 21/tcp

# MySQL (доступ только локально)
sudo ufw allow from 127.0.0.1 to any port 3306

# PostgreSQL (пример для доступа с определённого IP)
sudo ufw allow from 203.0.113.15 to any port 5432 proto tcp

Блокировка и удаление правил:

# Удалить разрешение порта 21
sudo ufw delete allow 21/tcp

# Запретить весь входящий трафик к порту 3306
sudo ufw deny 3306/tcp

Проверка состояния

sudo ufw status numbered

Флаг numbered показывает список правил с номерами, что удобно для удаления:

sudo ufw delete 3
Примеры открытия портов в UFW

Использование firewalld (CentOS, Rocky, AlmaLinux)

В системах на базе RHEL (CentOS Stream, Rocky, AlmaLinux) стандартным фаерволом является firewalld. Он работает через зоны и службы.

Проверка и установка

# Проверяем, установлен ли firewalld
rpm -q firewalld

# Устанавливаем при необходимости
sudo dnf install -y firewalld

# Включаем и запускаем
sudo systemctl enable --now firewalld

# Проверяем статус
sudo systemctl status firewalld

Базовые команды

# Список активных правил
sudo firewall-cmd --list-all

# Разрешить HTTP и HTTPS
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https

# Разрешить SSH на порту 22
sudo firewall-cmd --permanent --add-service=ssh

# Если SSH на нестандартном порту (например, 22222)
sudo firewall-cmd --permanent --add-port=22222/tcp

# Применить изменения
sudo firewall-cmd --reload

Удаление правил

# Удалить доступ к порту
sudo firewall-cmd --permanent --remove-port=22222/tcp
sudo firewall-cmd --reload

Типичные ошибки

  • «FirewallD is not running» — служба не запущена.

    sudo systemctl start firewalld
    sudo systemctl enable firewalld
  • Изменения не применились — забыли --permanent или --reload.

  • Потеряли доступ по SSH — используйте консоль в панели хостинга и добавьте правило:

    sudo firewall-cmd --permanent --add-service=ssh
    sudo firewall-cmd --reload

Итоги

  • Проверили наличие и статус UFW в Ubuntu/Debian, при необходимости установили.

  • Безопасно включили UFW: заранее открыли SSH (включая нестандартный порт), активировали и проверили правила.

  • Открыли необходимые сервисы (HTTP/HTTPS, БД с ограничением по IP), научились удалять и запрещать правила.

  • Для CentOS/RHEL разобрали базовые команды firewalld: добавление сервисов/портов, --permanent, --reload, типичные ошибки.

Что дальше: настройте ограничения по IP для административных портов, включите логирование и периодически проверяйте активные правила, чтобы не держать лишние открытые порты.