Настроить UFW на VPS: SSH и веб-сервер без потери доступа
На VPS с SSH и Nginx нужно открыть веб-трафик, но не оставить доступными лишние порты. Настроим UFW по шагам, проверим правила с нового подключения и разберём, что делать, если сервер перестал отвечать.

Сценарий и что проверить до начала
Предположим, на сервер вы входите по SSH через порт 22, а сайт должен принимать соединения на портах 80 и 443. Если SSH работает на другом порту, подставьте его вместо 22 в каждом правиле. Перед настройкой убедитесь, что у вас есть доступ к консоли VPS в панели хостинга: это запасной способ управления, если сетевой доступ пропадёт.
- Проверьте установленную версию командой
sudo ufw version. Команды ниже рассчитаны на ветку UFW 0.36.x; названия базовых операций в ней стабильны. - Уточните порт SSH в конфигурации сервера или у администратора. Не ориентируйтесь только на то, что нынешнее подключение работает: оно могло быть установлено до смены правил.
- Проверьте, что веб-сервер слушает нужные порты:
sudo ss -lntup. Правило фаервола не запустит Nginx, если тот не слушает порт. - Оставьте текущую SSH-сессию открытой на время настройки. Для проверки понадобится отдельное новое подключение.
Настройка на живом примере
Сначала разрешите вход по SSH и веб-трафик, затем задайте политику по умолчанию и включите UFW. В таком порядке вы снижаете риск потерять удалённый доступ при активации фаервола.
- Разрешите SSH. Для стандартного порта 22 выполните команду ниже. Проверка: команда завершится без сообщения об ошибке; если UFW уже активен, правило появится в его списке.
- Откройте HTTP и HTTPS. Разрешите TCP-подключения на 80 и 443. Проверка: правила отобразятся в статусе UFW.
- Запретите остальные входящие соединения и разрешите исходящие. Это подходящий базовый профиль для обычного веб-сервера; конкретные приложения могут требовать дополнительных правил.
- Включите UFW. Подтвердите активацию. Проверка: команда
sudo ufw status verboseпокажет, что фаервол активен, а исходящие подключения разрешены. - Проверьте доступ заново. Не закрывая старый терминал, откройте новое SSH-подключение и загрузите сайт по HTTP и HTTPS. Проверка: новое подключение устанавливается, страницы отвечают. Если проверка не прошла, используйте открытую сессию или консоль VPS и исправьте правило.
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw enable
sudo ufw status verbose
Команды разрешают конкретные порты, а не только SSH. Если SSH настроен, например, на 2222, замените первое правило на sudo ufw allow 2222/tcp и проверьте подключение на этом порту. Не удаляйте старое правило и не закрывайте текущую сессию, пока новое подключение не заработало.
Главная проверка — не то, что уже открытая SSH-сессия продолжает работать, а то, что после включения UFW устанавливается новая.
Порты, профили приложений и ограничения по адресу
Для одного VPS есть несколько способов задать доступ. Выбор влияет на то, насколько явно видны разрешённые порты и как часто придётся проверять правила после изменений на сервере.
| Подход | Что даёт | Цена и риск |
|---|---|---|
| Явно разрешить порт и протокол | Например, открыть 443/tcp. Правило легко сверить с тем, что слушает сервер. | При смене порта правило придётся обновить вручную. |
| Использовать профиль приложения | UFW может показать доступные профили командой sudo ufw app list. Профиль объединяет нужные приложению порты. | Состав зависит от установленных профилей. Перед разрешением проверьте его командой sudo ufw app info 'имя профиля'. |
| Ограничить SSH источником | Можно разрешить SSH только с известного IP-адреса или подсети, используя правило UFW с указанием источника. | При смене внешнего IP вы можете потерять доступ; заранее предусмотрите запасной адрес или консоль хостинга. |
Для приведённого примера явные правила проще всего проверить: в выводе sudo ufw status numbered должны быть разрешения для нужных портов и политика по умолчанию. Профили удобны, когда на сервере несколько приложений и важно управлять их наборами портов как группами. Ограничение по IP имеет смысл, если адрес подключения действительно постоянный.
Входящее соединение — подключение, которое инициируют извне к вашему серверу, например браузер посетителя к порту сайта. Политика «запретить входящие» блокирует такие подключения, если для них нет разрешающего правила; сама по себе она не означает, что сервер перестанет отправлять запросы наружу.
Что проверить, если доступ не работает
- Не удаётся войти по SSH. Сверьте порт подключения с разрешённым правилом. Если SSH работает не на 22, разрешение только 22/tcp не поможет. Для восстановления используйте текущую сессию или консоль хостинга, затем откройте фактический порт.
- Правило есть, но сайт недоступен. Проверьте, слушает ли веб-сервер порт командой
sudo ss -lntup, запущен ли сам сервис и принимает ли соединения внешний фаервол в панели хостинга. UFW — только один уровень фильтрации. - По IPv4 работает, а по IPv6 нет. Проверьте, поддерживает ли IPv6 ваша конфигурация UFW и разрешены ли нужные порты для IPv6. Также убедитесь, что у сервера есть доступный IPv6-адрес, а DNS-запись сайта указывает на него корректно.
- После правок потеряли доступ. Войдите через консоль VPS, проверьте правила командой
sudo ufw status numberedи добавьте разрешение для правильного SSH-порта. Если нужно временно снять блокировку, через консоль выполнитеsudo ufw disable, затем настройте и проверьте правила заново.
Чтобы убрать конкретное правило, сначала найдите его номер в sudo ufw status numbered, затем выполните sudo ufw delete НОМЕР. Номера могут измениться после удаления, поэтому перед следующим действием снова посмотрите список. Не удаляйте разрешение SSH, пока не подтвердили доступ через другое правило или консоль.
Когда базовый пример нужно изменить
Если сервер принимает трафик через балансировщик или прокси, клиентские соединения могут приходить не напрямую. Тогда ограничивать доступ по IP нужно с учётом схемы сети, иначе можно заблокировать легитимный трафик. Для базы данных или административной панели не открывайте порт всем адресам без отдельной причины: по возможности разрешайте подключение только из нужной подсети.
Перед применением правил на рабочем сервере проверьте необходимые для работы сервисы: SSH, веб-порты, мониторинг и служебные интерфейсы. Затем сопоставьте их с прослушиваемыми портами, правилами UFW и фильтрацией у провайдера. Это занимает меньше времени, чем восстановление доступа после случайной блокировки.
Что делать дальше
Сохраните текущий список правил и проверьте сервер с внешней сети: доступны только те порты, которые вы намеренно открыли. После обновления приложений или смены SSH-порта повторите проверку, а в проде следите за журналами и доступностью сервиса. Инвалидация правил и настройка сетевого экрана у облачного провайдера — отдельные вопросы; здесь разобрана базовая настройка самого UFW.
Защитник прав потребителей: Досудебные претензии на возврат товара со ссылками на ЗоЗПП.
Спросить за 15 ₽Источники: UFW — справочная страница Ubuntu 24.04, Ubuntu Community Help Wiki: UFW
Частые вопросы
Можно ли включить UFW по SSH и не потерять доступ?
Что делать, если SSH работает не на порту 22?
UFW разрешил 443, но сайт всё равно не открывается. Почему?
Нужно ли отдельно настраивать IPv6?
Подойдут ли команды для другой версии UFW или Linux?
Что делать, если после включения фаервола новое SSH-подключение не проходит?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту.