Настройка брандмауэра Ubuntu с помощью UFW (Uncomplicated Firewall) помогает защитить ваш VPS: разрешить необходимые соединения и заблокировать ненужный входящий трафик. Для настройки требуется всего несколько команд, но порядок их выполнения важен: разрешите SSH до включения брандмауэра, иначе вы можете потерять удалённый доступ.
В этом руководстве показано, как установить UFW, настроить безопасные правила по умолчанию, открыть порты для сайта, включить брандмауэр и затем управлять его правилами.
Основные моменты
- UFW позволяет управлять брандмауэром Ubuntu с помощью простых команд.
- Прежде чем включать UFW на удалённом VPS, разрешите доступ к фактически используемому порту SSH.
- По умолчанию блокируйте незапрошенный входящий трафик и открывайте только те порты, которые нужны вашим службам.
- Проверьте доступ через второе соединение и пересматривайте правила при добавлении или удалении приложений.
Что такое UFW в Ubuntu?
UFW — инструмент настройки брандмауэра, который управляет правилами системы фильтрации пакетов ядра Linux. Вместо того чтобы писать низкоуровневые правила, вы можете разрешать или запрещать соединения с помощью таких команд, как ufw allow и ufw delete.
На обычном VPS для размещения сайта нужно разрешить SSH для администрирования и порты 80 и 443 для посетителей. Порты баз данных и внутренних приложений, как правило, не должны быть доступны из публичного интернета.
Перед настройкой брандмауэра Ubuntu
Вам понадобятся VPS с Ubuntu, доступ к sudo и работающее SSH-соединение. Если вы только начинаете заниматься удалённым администрированием, ознакомьтесь с материалом ZYNOO «Команды SSH для начинающих».
Не закрывайте текущий сеанс SSH. Убедитесь, что веб-консоль или консоль восстановления вашего провайдера VPS работает. Сетевые брандмауэры на стороне провайдера не зависят от UFW и также могут требовать соответствующих правил.
Эти инструкции рассчитаны на новую или неактивную конфигурацию UFW. Если UFW уже включён, проверьте действующие правила и требования служб, прежде чем менять политику по умолчанию.

Шаг 1. Проверьте наличие UFW и установите его
Проверьте, доступен ли UFW:
sudo ufw status
Status: inactive означает, что UFW установлен, но правила пока не применяются. Если команда не найдена, установите UFW:
sudo apt update
sudo apt install ufw
Пока не включайте брандмауэр.
Шаг 2. Разрешите SSH перед включением UFW
Узнайте, какой TCP-порт прослушивает SSH:
sudo ss -ltnp
Сравните результат с портом, который использует ваш SSH-клиент. Обычно это порт 22, но на VPS может использоваться другой порт.
Если SSH использует порт 22, выполните:
sudo ufw allow 22/tcp
Если SSH фактически использует нестандартный порт, например 2222, разрешите вместо него этот порт:
sudo ufw allow 2222/tcp
Порт 2222 приведён в качестве примера: его не нужно открывать всем. Проверьте правила, которые будут применены:
sudo ufw show added
Шаг 3. Задайте правила по умолчанию и проверьте IPv6
По умолчанию запрещайте входящие соединения, но разрешайте VPS устанавливать исходящие соединения:
sudo ufw default deny incoming
sudo ufw default allow outgoing
Если ваш VPS подключён к публичной сети по IPv6, убедитесь, что UFW обрабатывает этот трафик:
grep '^IPV6=' /etc/default/ufw
Ожидаемое значение — IPV6=yes. Если IPv6 используется, но задано значение no, отредактируйте /etc/default/ufw, чтобы включить обработку IPv6 до активации брандмауэра.
Шаг 4. Откройте порты, необходимые вашему сайту
Если на VPS размещён общедоступный сайт, разрешите HTTP и HTTPS до включения UFW:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Распространённые порты для VPS с Ubuntu:
| Служба | Порт | Протокол |
|---|---|---|
| SSH | 22 (или ваш нестандартный порт) | TCP |
| HTTP | 80 | TCP |
| HTTPS | 443 | TCP |
Для общедоступного приложения, работающего на другом TCP-порту, команда UFW для разрешения порта выглядит так:
sudo ufw allow 8080/tcp
Выполняйте эту команду из примера только в том случае, если вашей службе нужен внешний доступ через порт 8080. Для службы UDP вместо этого укажите /udp, например sudo ufw allow 51820/udp для конечной точки WireGuard, настроенной на этот порт.
Вы также можете посмотреть доступные профили приложений:
sudo ufw app list
Если в списке есть Nginx Full, проверьте его порты командой sudo ufw app info 'Nginx Full'. Команда sudo ufw allow 'Nginx Full' может заменить два приведённых выше правила для портов сайта; использовать оба способа не нужно. Приложения за локальным обратным прокси Nginx, как правило, не должны открывать свой внутренний порт для публичного доступа.
Шаг 5. Включите UFW и проверьте брандмауэр
Разрешив SSH и все необходимые порты служб, включите UFW:
sudo ufw enable
Может появиться предупреждение о том, что эта операция повлияет на SSH. Продолжайте только после проверки правила для SSH и доступности консоли восстановления. Проверьте действующие правила:
sudo ufw status verbose
Вы должны увидеть Status: active, политики по умолчанию и разрешённые порты. UFW также автоматически запускается при загрузке системы.
Прежде чем закрыть исходный сеанс SSH, установите второе соединение из другого терминала. На своём компьютере используйте ssh -p 22 username@server-ip, при необходимости заменив имя пользователя, адрес и порт. Если вы открыли порты 80 и 443, проверьте доступность сайта извне. Одно лишь правило ALLOW не доказывает, что служба доступна.
Шаг 6. Управляйте правилами UFW, ограничивайте доступ и удаляйте правила
Чтобы вывести нумерованный список правил брандмауэра:
sudo ufw status numbered
Чтобы удалить устаревшее разрешающее правило, например для TCP-порта 8080:
sudo ufw delete allow 8080/tcp
Правило также можно удалить по номеру (sudo ufw delete 3), но сначала проверьте текущий список: нумерация может измениться, а удаление по номеру может убрать только одно правило из соответствующей пары IPv4/IPv6.
Необязательно: ограничьте доступ по SSH своим IP-адресом
Если ваш IP-адрес для администрирования не меняется, вы можете разрешить доступ по SSH только с этого адреса. Например:
sudo ufw allow from 203.0.113.10 to any port 22 proto tcp
Замените IP-адрес из примера своим реальным публичным IP-адресом. Проверьте, удаётся ли установить новое соединение с этого адреса, а затем удалите прежнее правило, разрешающее доступ всем, с помощью sudo ufw delete allow 22/tcp. Если оставить это правило, доступ по-прежнему будет открыт для всех. На протяжении всего процесса сохраняйте исходный сеанс и доступ к консоли восстановления.
Необязательно: ограничьте частоту попыток подключения по SSH
Если вам нужен доступ по SSH с меняющихся IP-адресов, вместо этого замените общее разрешающее правило ограничением частоты подключений:
sudo ufw limit 22/tcp
sudo ufw delete allow 22/tcp
sudo ufw status numbered
Делайте это только после проверки работоспособности SSH-соединения и доступности консоли восстановления. Если SSH использует другой порт, укажите его вместо 22. Затем проверьте новое подключение. Это альтернатива доступу только с определённого IP-адреса, а не дополнение к нему. Ограничение частоты подключений не заменяет аутентификацию по SSH-ключу.
Шаг 7. Проверьте журналы и устраните проблемы с доступом
Включите базовое журналирование, если нужно выяснить причину блокировки трафика:
sudo ufw logging on
sudo ufw status verbose
В зависимости от настроек журналирования записи UFW могут находиться в системном журнале или в файле /var/log/ufw.log.
Если доступ по SSH пропал, воспользуйтесь консолью восстановления провайдера, чтобы проверить действующие правила. В качестве временной экстренной меры команда sudo ufw disable остановит применение правил. Исправьте правило для SSH и снова включите UFW.
Если сайт не загружается, проверьте прослушиваемые порты командой sudo ss -ltnp, правила UFW и брандмауэр провайдера, если он есть. Открытие порта не запускает службу, которая должна его использовать.
Часто задаваемые вопросы
Да. После выполнения sudo ufw enable UFW будет включаться при последующих загрузках системы. Проверьте его конфигурацию командой sudo ufw status verbose.
Нет. Правила, добавленные или удалённые через UFW, начинают действовать без перезагрузки VPS. Текущую конфигурацию можно проверить сразу.
Не обязательно. Опубликованные через Docker порты могут обходить обычные правила UFW для входящего трафика, поскольку Docker настраивает собственные сетевые правила. Прежде чем полагаться на UFW для ограничения доступа к контейнерам, изучите документацию Docker по настройке брандмауэра.
Заключение
Безопасная настройка брандмауэра Ubuntu с помощью UFW начинается с разрешения SSH, установки политики блокировки входящих соединений по умолчанию и открытия только тех портов, которые нужны вашим приложениям. После включения UFW проверьте доступ через отдельное соединение и удаляйте устаревшие правила по мере изменения конфигурации VPS.
UFW управляет сетевым доступом, но не защищает от злоупотреблений на уровне приложений. Для общедоступных сайтов на Nginx полезной дополнительной мерой будет ограничение частоты запросов.