Файрвол на VPS: как настроить ufw и закрыть лишние порты

Свежий VPS открыт всему интернету: любой порт, на котором случайно окажется служба, виден снаружи. Файрвол закрывает это - он пропускает только тот трафик, что вы явно разрешили, и блокирует всё остальное. Даже если на сервере поднимется служба с уязвимостью, снаружи до неё не достучатся.

Разберём, что такое файрвол, как настроить его на VPS через ufw - самый простой инструмент в Linux, - какие порты открывать и как не отрезать себе доступ по SSH в процессе настройки.

Что такое файрвол и зачем он нужен

Файрвол - это фильтр входящих и исходящих соединений. Он работает по простому принципу: закрыть всё, кроме явно разрешённого. Вы указываете, какие порты открыты снаружи, а весь остальной трафик отсекается.

Зачем это нужно:

  • закрывает случайно открытые службы - то, что не должно быть доступно из интернета, и не будет;
  • уменьшает поверхность атаки - снаружи виден только минимум нужных портов;
  • защищает внутренние сервисы - базы данных и внутренние службы не торчат в сеть.

Файрвол - часть базовой защиты сервера, его настраивают сразу после аренды, вместе с остальными шагами из статьи настройка VPS с нуля.

Что такое ufw

В Linux за фильтрацию отвечает мощный, но сложный механизм. ufw (Uncomplicated Firewall - "несложный файрвол") - это простая надстройка над ним, которая сводит настройку к понятным командам. Для большинства задач на VPS его возможностей достаточно.

Обычно ufw уже установлен. Если нет:

sudo apt update
sudo apt install ufw

Порядок настройки

файрвол пропускает только разрешённые порты, остальное блокирует.
файрвол пропускает только разрешённые порты, остальное блокирует.

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

Шаг 1. Задаём политику по умолчанию - блокировать входящие, разрешать исходящие:

sudo ufw default deny incoming
sudo ufw default allow outgoing

Это значит: снаружи закрыто всё, а сам сервер в интернет ходить может.

Шаг 2. Разрешаем SSH - обязательно до включения файрвола, иначе потеряете доступ:

sudo ufw allow OpenSSH

Шаг 3. Включаем файрвол:

sudo ufw enable

Система предупредит, что соединение может прерваться, - подтверждаете. Поскольку SSH вы уже разрешили, доступ сохранится.

Шаг 4. Проверяем статус:

sudo ufw status verbose

Увидите список правил и что файрвол активен.

Типовые правила

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

КомандаЧто открываетКогда нужно
sudo ufw allow 80/tcpHTTPСайт, редирект на HTTPS
sudo ufw allow 443/tcpHTTPSСайт с SSL
sudo ufw allow 'Nginx Full'HTTP и HTTPS сразуВеб-сервер Nginx
sudo ufw allow 25565/tcpИгровой портИгровой сервер Minecraft

Главное правило: открывайте только то, что должно быть доступно снаружи. Базы данных, внутренние сервисы и служебные порты наружу выставлять не нужно - к ним обращаются изнутри сервера.

Закрыть ранее открытый порт:

sudo ufw delete allow 80/tcp

Как не потерять доступ

Это главный риск при настройке файрвола. Если включить его, не разрешив SSH, вы отрежете себя от сервера. Правила безопасности:

  • сначала allow OpenSSH, потом enable - всегда в этом порядке;
  • если сменили порт SSH - разрешите новый порт до включения: sudo ufw allow 2222/tcp;
  • держите запасной доступ - у большинства провайдеров есть консоль в панели управления, которая работает в обход сети. Через неё можно откатить правила, если доступ всё же потерян.

Консоль в панели - страховка на случай ошибки. Она подключается к серверу напрямую, минуя SSH и файрвол, поэтому даже при закрытом доступе через неё можно всё исправить.

Частые ошибки

Включили ufw до allow OpenSSH. Доступ по SSH потерян. Лечится через консоль в панели управления. Всегда разрешайте SSH до включения.

Открыли порт базы данных наружу. База стала доступна из интернета - частая причина утечек. Базы наружу не выставляют, к ним обращаются изнутри.

Забыли разрешить порт сайта. Файрвол включён, сайт недоступен снаружи. Нужно открыть 80 и 443.

Сменили порт SSH, не открыв новый. После включения файрвола доступ пропал. Новый порт SSH разрешают до enable.

Открывают порты на всякий случай. Каждый лишний открытый порт - потенциальная точка входа. Открывают только то, что реально используется.

Частые вопросы

Нужен ли файрвол на VPS? Да. Свежий сервер открыт всему интернету, и файрвол закрывает всё лишнее, оставляя только нужные порты. Это базовая защита, её настраивают сразу после аренды.

Что такое ufw? Это простая надстройка над механизмом фильтрации в Linux, которая сводит настройку файрвола к понятным командам. Для большинства задач на VPS его возможностей достаточно.

Как не потерять доступ при настройке? Всегда разрешайте SSH (sudo ufw allow OpenSSH) до включения файрвола. Если доступ всё же потерян - откатите правила через консоль в панели управления, она работает в обход сети.

Какие порты открывать? Только те, что должны быть доступны снаружи: 80 и 443 для сайта, порт игры для игрового сервера, и так далее. Базы данных и внутренние службы наружу не открывают.

Что делать, если закрыл себе доступ по SSH? Зайти через консоль в панели управления провайдера - она подключается напрямую, минуя сеть и файрвол. Оттуда отключить или поправить правила ufw.

Заменяет ли файрвол защиту от DDoS? Нет. Файрвол закрывает лишние порты, но от объёмной DDoS-атаки не защитит - канал забьётся раньше. Для этого нужна фильтрация на стороне провайдера, см. защита VPS от DDoS.


Настраиваете сервер с нуля? VPS на NVMe с root-доступом и консолью в панели - настраивайте файрвол спокойно, запасной доступ через панель всегда под рукой. Активация за 3 минуты. Первые 7 дней - тестовый период с возвратом средств.