Обеспечение безопасности сервера с помощью UFW на Ubuntu

UFW (Uncomplicated Firewall) – обёртка над netfilter для Ubuntu: правила allow/deny без ручной сборки цепочек iptables. Удобно для VPS, где нужно быстро закрыть лишнее и оставить SSH, HTTP/HTTPS и пару служебных портов. Ниже установка, безопасный порядок включения, типовые правила и логирование.

Что такое UFW

UFW переводит понятные команды в правила firewall backend (iptables/nftables в зависимости от версии системы). Плюс – низкий порог входа: open/close портов, allow from подсети, limit для rate-limit. Минус – сложные сценарии (DNAT, тонкая политика по интерфейсам) всё равно уводят в «сырой» netfilter. Для типичного веб-сервера или панели UFW обычно достаточно.

Установка

На многих образах Ubuntu UFW уже есть. Если нет:

sudo apt update
sudo apt install ufw
sudo ufw status

Статус inactive значит, что сервис установлен, но правила ещё не применяются. Не включайте firewall, пока не открыли SSH (или ваш порт удалённого доступа).

Политика по умолчанию

Разумный старт для публичного сервера: входящее запретить, исходящее разрешить.

sudo ufw default deny incoming
sudo ufw default allow outgoing

Дальше явно открываете только нужное. Без allow на SSH после ufw enable легко потерять доступ.

SSH до enable

Стандартный порт:

sudo ufw allow ssh

Или нестандартный (пример 2222):

sudo ufw allow 2222/tcp

Опционально rate-limit вместо простого allow (снижает частоту новых подключений с одного IP):

sudo ufw limit ssh

Затем включение:

sudo ufw enable
sudo ufw status verbose

UFW предупредит о возможном разрыве SSH-сессий. Если allow/limit на ваш порт уже добавлен, текущая сессия обычно переживает enable. На проде удобно держать второе окно консоли (VNC/IPMI/console провайдера) на случай ошибки.

Типовые правила

Веб: HTTP и HTTPS

sudo ufw allow http
sudo ufw allow https

Если установлен профиль application для Nginx:

sudo ufw app list
sudo ufw allow 'Nginx Full'

Диапазон портов

sudo ufw allow 1000:2000/tcp

Только с одного IP

Админка или служебный порт только с доверенного адреса:

sudo ufw allow from 192.168.1.100 to any port 8080

Подсеть (VPN и т.п.)

sudo ufw allow from 10.8.0.0/24 to any port 1194

Блок IP

sudo ufw deny from 203.0.113.0

Для целой сети укажите префикс, например 203.0.113.0/24. Порядок правил важен: UFW применяет их по номеру; при конфликтах смотрите ufw status numbered и удаляйте лишнее через ufw delete N.

Логирование

sudo ufw logging on

Записи обычно идут в /var/log/ufw.log (и/или syslog). Уровень можно повысить (low, medium, high, full), но на оживлённом хосте high/full быстро раздувают диск – следите за ротацией.

Практические замечания

  • Сначала политика и allow SSH, потом enable.
  • Открывайте минимум: веб 80/443, SSH (или свой порт), остальное по необходимости.
  • limit ssh не заменяет Fail2Ban и ключи, но режет простые flood-сценарии.
  • Docker и часть панелей пишут свои iptables-правила – после включения UFW проверьте доступ к контейнерам и published ports.
  • UFW – один слой. Обновления, SSH-ключи, отключение password auth и мониторинг логов по-прежнему нужны.

Для типового Ubuntu VPS цепочка «default deny incoming → allow SSH/HTTP/HTTPS → enable → status verbose» даёт предсказуемый baseline без ручной правки iptables.

Источники и ссылки


Комментарии загружаются…