SSD Nodes Learn Hosting plans →
Руководства Matt ConnorАвтор: Matt Connor · Обновлено 2026-08-27

Настройка UFW на VPS: пошаговое руководство

Узнайте, как настроить UFW на сервере с Ubuntu или Debian. Мы разберем установку политики default deny, открытие портов и сохранение доступа по SSH без риска блокировки.

Что такое UFW и зачем он нужен

UFW расшифровывается как Uncomplicated Firewall, и название полностью соответствует действительности. Это удобный интерфейс для управления межсетевым экраном, встроенным в ядро Linux. Вместо написания сложных правил вы используете короткие команды, такие как ufw allow 22/tcp. На свежем VPS любой сервис, ожидающий соединений, по умолчанию доступен из Интернета. Межсетевой экран меняет ситуацию: вы запрещаете всё, а затем разрешаете только те порты, которые действительно используете. Это изменение устраняет большую часть угроз всего за 4 команды. UFW — стандартный инструмент для Ubuntu и Debian. Если на вашем VPS установлены Rocky или AlmaLinux, вам потребуется firewalld, который организует правила по зонам.

Прежде чем приступать к настройке, выясните, какие порты открыты, так как именно от них зависит работа межсетевого экрана. Проверка активных соединений с помощью ss -tlnp — правильный первый шаг.

Единственное правило, которое убережет вас от потери доступа

Вот ошибка, из-за которой многие боятся настраивать межсетевые экраны. Вы включаете UFW с политикой запрета по умолчанию, но не разрешаете SSH. В момент активации экрана ваше текущее соединение разрывается, и вы теряете доступ к серверу. Чтобы этого избежать, всегда разрешайте SSH до включения UFW. Это и есть весь секрет, а приведенные ниже шаги выполняют настройку в безопасном порядке.

Если это все же произошло, вы не заблокированы навсегда: веб-консоль вашего провайдера, работающая через VNC или последовательный порт, не использует SSH. Вы можете войти через нее и выполнить ufw disable или добавить недостающее правило. Блокировка межсетевым экраном имеет характерный признак: отброшенный пакет заставляет SSH-клиент «зависнуть» до истечения времени ожидания, тогда как остановленный SSH-демон мгновенно отклоняет соединение. В этом заключается разница между ошибками connection refused и connection timed out.

Шаг 1: Установка политик по умолчанию

Начните с настройки UFW: запретите все входящие соединения и разрешите все исходящие:

sudo ufw default deny incoming
sudo ufw default allow outgoing

deny incoming — это важная часть. Она означает, что любой порт без явного правила разрешения будет закрыт для внешних подключений, даже если на нем ожидает запросы какой-либо сервис. allow outgoing позволяет вашему серверу нормально обращаться к интернету для получения обновлений и других задач. Эти две команды меняют только политику; правила не вступают в силу, пока вы не включите UFW на шаге 3.

Шаг 2: Откройте только необходимые порты

Перед включением брандмауэра откройте порт SSH, чтобы не потерять соединение:

sudo ufw allow 22/tcp

UFW также может ограничивать частоту подключений по SSH: команда sudo ufw limit 22/tcp открывает порт, но блокирует любой адрес, который выполняет шесть или более попыток подключения за тридцать секунд. Это позволяет нейтрализовать скрипты для перебора паролей без установки дополнительного ПО.

Если вы используете веб-сервер, откройте порты HTTP и HTTPS:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

Открывайте доступ только к тем сервисам, которые должны быть публичными. База данных, например Postgres на порту 5432, почти никогда не должна иметь разрешающего правила. Вместо этого привяжите её к 127.0.0.1, чтобы она была доступна только локально на машине. Каждый открытый порт — это потенциальная точка входа, которую вам придётся защищать, поэтому держите список открытых портов минимальным.

Вы также можете составить полную последовательность команд ufw для вашего сервера здесь, а затем выполнить их по порядку:

ToolUFW rule generator

Шаг 3: Включение и проверка статуса

sudo ufw enable

Система предупреждает, что эта команда может прервать текущие SSH-соединения. Поскольку на шаге 2 вы разрешили 22/tcp, ваша сессия останется активной. Проверьте результат:

sudo ufw status verbose
Status: active
Default: deny (incoming), allow (outgoing)

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW IN    Anywhere
22/tcp (v6)                ALLOW IN    Anywhere (v6)
80/tcp                     ALLOW IN    Anywhere

Здесь нужно обратить внимание на два момента. Status: active означает, что межсетевой экран запущен. Каждое правило отображается дважды: один раз для IPv4 и один раз с пометкой (v6), что подтверждает работу UFW как для IPv6, так и для IPv4. Если строки (v6) отсутствуют, значит, IPv6-трафик не фильтруется, что является отдельной проблемой, описанной в статье о настройке IPv6-файрвола.

Управление правилами в дальнейшем

Чтобы увидеть правила с номерами для последующего удаления одного из них:

sudo ufw status numbered
sudo ufw delete 3

Чтобы разрешить доступ к порту только с одного адреса (это эффективный способ открыть административный сервис только для вашего IP):

sudo ufw allow from 10.0.0.24 to any port 5432 proto tcp

Такой подход перестаёт работать, если ваш адрес меняется или доступ требуется нескольким машинам. Обычно проблему решают так: порт вообще не открывают в публичной сети, а подключаются к сервису через частную сеть. Для этого и нужно объявить частную подсеть сервера в tailnet.

Межсетевой экран — это лишь один уровень защиты. Он контролирует доступ к порту, но не ограничивает попытки перебора для портов, которые вы оставили открытыми, например SSH. Для этого добавьте Fail2ban перед SSH, чтобы блокировать нарушителей. Эшелонированная оборона подразумевает, что каждый уровень закрывает те уязвимости, с которыми не справляются остальные.

Межсетевой экран полезен только тогда, когда вы понимаете, что такое порты и как сервисы ожидают соединений, а его настройка — это один из этапов первых 10 минут работы с новым VPS.

FAQ

Разорвёт ли включение UFW моё SSH-соединение?

Нет, если вы сначала разрешите SSH. Выполните sudo ufw allow 22/tcp перед sudo ufw enable, и соединение сохранится, так как межсетевой экран начнёт пропускать трафик через порт 22. Опасность заключается во включении политики запрета по умолчанию без правила, разрешающего SSH: это приведёт к потере доступа. Если это произошло, войдите в систему через VNC или последовательную консоль вашего провайдера и выполните ufw disable.

Какие порты следует открыть на VPS?

Только те, которые вы предоставляете для публичного доступа. SSH (22/tcp) для управления сервером, а также HTTP и HTTPS (80/tcp, 443/tcp), если вы запускаете веб-сайт. Все остальные порты должны быть закрыты. Внутренние сервисы, такие как базы данных, должны привязываться к 127.0.0.1 и не иметь правил в межсетевом экране, чтобы оставаться недоступными из сети.

Работает ли UFW с IPv6?

В современных версиях Ubuntu — да: IPV6=yes установлено в /etc/default/ufw, поэтому каждое правило применяется к обоим стекам, а ufw status отображает правила IPv6 с суффиксом (v6). Случаи, когда это может не сработать, описаны в ловушке межсетевого экрана IPv6.

Как удалить правило UFW?

Выполните sudo ufw status numbered, чтобы вывести список правил с порядковыми номерами, затем sudo ufw delete N, где N — номер правила, которое нужно удалить. Вы также можете удалять правила по их описанию, например sudo ufw delete allow 80/tcp.

Как разрешить доступ к порту только с одного IP-адреса?

Используйте правило from вместо обычного allow. Чтобы разрешить доступ к PostgreSQL только с адреса вашего офиса, выполните sudo ufw allow from 10.0.0.10 to any port 5432 proto tcp. При политике запрета по умолчанию порт закрыт для всех, пока правило не откроет его, поэтому данное правило from является единственным способом доступа: весь интернет остаётся заблокированным, и проходит только указанный адрес. Не добавляйте дополнительно обычное правило allow 5432/tcp, так как оно откроет порт для всех. Это самый безопасный способ предоставить доступ к базе данных или панели управления. Проверьте результат с помощью sudo ufw status verbose, где рядом с портом будет указан разрешённый адрес источника.