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

Что понадобится
- VPS ForestsNet Cloud на Ubuntu 22.04/24.04 или Debian 11/12 — именно в этих системах ufw является файрволом по умолчанию.
- На AlmaLinux/Rocky Linux по умолчанию используется другой инструмент — firewalld, с другими командами; эта статья его не рассматривает.
- Доступ по SSH под
rootили пользователем с правамиsudo. - Доступ к панели VMmanager 6 — как подстраховка на случай, если вы всё же закроете себе доступ по SSH: в панели есть консоль сервера прямо из браузера, без SSH. Если ещё не заходили — начните со статьи «Как войти в VMmanager 6».
⚠️ Важно: самая частая ошибка при настройке ufw — включить файрвол, забыв заранее разрешить SSH. Итог — обрыв текущей SSH-сессии и потеря удалённого доступа к серверу. Обязательно выполните шаг 3 (разрешить SSH) до шага 4 (включить ufw) — порядок шагов в этой статье выбран специально.
Шаг 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 — обязательно до включения файрвола
⚠️ Важно: это самый важный шаг статьи. Как только вы включите ufw с политикой «запретить входящие» (шаг 4), любое соединение без явного разрешающего правила будет немедленно заблокировано — включая ваше собственное SSH-подключение. Если не разрешить SSH заранее, вы потеряете удалённый доступ к серверу сразу после команды ufw enable.
Разрешите порт SSH (по умолчанию — 22/tcp):
sudo ufw allow 22/tcpℹ️ Совет: если вы уже сменили порт SSH на нестандартный (см. статью про настройку и защиту SSH), укажите здесь именно его, а не 22. Для стандартного порта тот же результат даёт команда sudo ufw allow ssh (ufw сам найдёт порт 22 по имени сервиса из /etc/services), а на Ubuntu — ещё и sudo ufw allow OpenSSH (профиль приложения, который регистрирует пакет openssh-server; на Debian такого профиля может не быть).
ℹ️ Если всё же потеряли доступ: отключить или поправить правило можно через консоль сервера в VMmanager 6 — она открывается прямо в браузере и не зависит от SSH. Подробнее — в статье «Как войти в VMmanager 6».
Шаг 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✅ Готово: статус — Status: active, новое SSH-подключение открывается без проблем — файрвол включён и не заблокировал вас самих.
Шаг 5. Откройте HTTP, HTTPS и свой порт
Разрешите стандартные веб-порты:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcpℹ️ Совет: несколько портов можно разрешить одной командой через запятую: sudo ufw allow 80,443/tcp.
Чтобы открыть произвольный порт своего приложения или сервиса, укажите его номер и протокол:
sudo ufw allow 8080/tcp- Протокол указывайте явно —
/tcpили/udp. Если не указать протокол вовсе, ufw откроет порт сразу для обоих, а обычно нужен только один. - Открывайте порт только тогда, когда на сервере реально что-то его слушает, — иначе это просто лишняя дыра в файрволе без пользы.
ℹ️ Совет: чтобы разрешить порт только с конкретного IP-адреса, а не для всего интернета, добавьте from: sudo ufw allow from 203.0.113.10 to any port 8080 proto tcp.
⚠️ Важно: если на этот раздел вас отправила другая инструкция ForestsNet Cloud (для конкретного сервиса — например, веб-сервера или приложения), возвращайтесь туда и открывайте именно тот порт, который указан там.
Шаг 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.
⚠️ Важно: после удаления одного правила номера всех остальных сдвигаются. Если нужно удалить несколько правил подряд, удаляйте от большего номера к меньшему и перепроверяйте ufw status numbered перед каждым следующим удалением — иначе легко удалить не то правило.
ℹ️ Совет: для правила, у которого есть и IPv4-, и IPv6-версия (как 8080/tcp в примере выше — номера 4 и 8), проще удалить обе версии одной командой — по содержимому правила, а не по номеру: sudo ufw delete allow 8080/tcp.
Чтобы убедиться, что правило удалено, повторите sudo ufw status numbered.
✅ Готово: правило удалено, список правил обновился — при желании повторите для любого другого правила из списка.
Что дальше
Для более глубокой защиты SSH — смена порта, вход только по ключу — см. статью «Настройка и защита SSH». Автоматическую блокировку IP-адресов за перебор паролей добавляет fail2ban — см. «Fail2ban: защита от перебора паролей». А если нужны возможности netfilter, которых нет в упрощённом синтаксисе ufw, — базовые команды iptables разобраны в статье «Основы iptables».