Файрвол ufw: порты
ufw (Uncomplicated Firewall) — упрощённый интерфейс к штатному файрволу ядра Linux (netfilter/iptables): вместо длинных цепочек iptables вы описываете правила простыми командами вроде ufw allow 80/tcp. В этой статье вы установите и включите ufw на VPS mHost, запретите все входящие соединения по умолчанию, откроете нужные порты — SSH, HTTP/HTTPS и свой собственный — и научитесь смотреть список правил и удалять из него лишнее.

Что понадобится
- VPS mHost на Ubuntu 22.04/24.04 или Debian 11/12 — именно в этих системах ufw является файрволом по умолчанию.
- На AlmaLinux/Rocky Linux по умолчанию используется другой инструмент — firewalld, с другими командами; эта статья его не рассматривает.
- Доступ по SSH под
rootили пользователем с правамиsudo. - Доступ к панели VMmanager 6 — как подстраховка на случай, если вы всё же закроете себе доступ по SSH: в панели есть консоль сервера прямо из браузера, без SSH. Если ещё не заходили — начните со статьи «Как войти в VMmanager 6».
Шаг 1. Установите ufw
На Ubuntu ufw обычно уже установлен «из коробки» (но выключен), на Debian его нужно поставить отдельно. Команда ниже безопасна в обоих случаях — на Ubuntu она просто подтвердит, что пакет уже на месте:
sudo apt update
sudo apt install -y ufwПроверьте, что команда доступна:
sudo ufw versionКоманда должна вывести номер версии ufw. Если вместо этого система отвечает command not found — проверьте, что установка пакета выше отработала без ошибок.
Шаг 2. Задайте политику по умолчанию: запретите входящие
Смысл файрвола с запретом «по умолчанию» — запрещено всё, что не разрешено явно отдельным правилом. Задайте это явно:
sudo ufw default deny incoming
sudo ufw default allow outgoingdeny incoming— любое новое входящее соединение блокируется, если для него нет отдельного разрешающего правила.allow outgoing— соединения, инициированные самим сервером наружу (обновления пакетов, запросы к внешним API и т.п.), разрешены.
Это и есть заводские настройки ufw «из коробки», но задать их явно стоит: так политика зафиксирована осознанно, а не оставлена «как получилось». Обе команды ничего не включают и не влияют на текущие соединения — правила применяются только после шага 4.
Шаг 3. Разрешите SSH — обязательно до включения файрвола
Разрешите порт SSH (по умолчанию — 22/tcp):
sudo ufw allow 22/tcpШаг 4. Включите ufw
sudo ufw enableufw предупредит, что операция может разорвать текущие SSH-соединения:
Command may disrupt existing ssh connections. Proceed with operation (y|n)?Раз в шаге 3 вы уже разрешили SSH — подтвердите вводом y. Настройка сохраняется: после перезагрузки сервера ufw включится автоматически в том же состоянии, отдельно настраивать автозапуск через systemd не нужно.
Проверьте статус и, не закрывая текущую SSH-сессию, откройте новое подключение в отдельном окне терминала — закрывайте старую сессию только убедившись, что вход по SSH по-прежнему работает:
sudo ufw statusШаг 5. Откройте HTTP, HTTPS и свой порт
Разрешите стандартные веб-порты:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcpЧтобы открыть произвольный порт своего приложения или сервиса, укажите его номер и протокол:
sudo ufw allow 8080/tcp- Протокол указывайте явно —
/tcpили/udp. Если не указать протокол вовсе, ufw откроет порт сразу для обоих, а обычно нужен только один. - Открывайте порт только тогда, когда на сервере реально что-то его слушает, — иначе это просто лишняя дыра в файрволе без пользы.
Шаг 6. Посмотрите список правил: status numbered
Обычный ufw status показывает правила без номеров. Чтобы получить номер каждого правила — например, перед удалением, — используйте:
sudo ufw status numberedПример вывода после шагов выше (правила автоматически продублированы для IPv6 — это поведение по умолчанию, пока в /etc/default/ufw не отключено IPV6=yes):
Status: active
To Action From
-- ------ ----
[ 1] 22/tcp ALLOW IN Anywhere
[ 2] 80/tcp ALLOW IN Anywhere
[ 3] 443/tcp ALLOW IN Anywhere
[ 4] 8080/tcp ALLOW IN Anywhere
[ 5] 22/tcp (v6) ALLOW IN Anywhere (v6)
[ 6] 80/tcp (v6) ALLOW IN Anywhere (v6)
[ 7] 443/tcp (v6) ALLOW IN Anywhere (v6)
[ 8] 8080/tcp (v6) ALLOW IN Anywhere (v6)Номер в квадратных скобках — это то, что понадобится в следующем шаге.
Шаг 7. Удалите правило
Например, порт 8080 больше не нужен. Посмотрите номер правила (шаг 6) и удалите его:
sudo ufw status numbered
sudo ufw delete 4ufw сначала покажет, какое именно правило будет удалено (Deleting: allow 8080/tcp), а затем спросит подтверждения:
Proceed with operation (y|n)?Подтвердите y.
Чтобы убедиться, что правило удалено, повторите sudo ufw status numbered.
Что дальше
Для более глубокой защиты SSH — смена порта, вход только по ключу — см. статью «Настройка и защита SSH». Автоматическую блокировку IP-адресов за перебор паролей добавляет fail2ban — см. «Fail2ban: защита от перебора паролей». А если нужны возможности netfilter, которых нет в упрощённом синтаксисе ufw, — базовые команды iptables разобраны в статье «Основы iptables».