Как открыть порт в Ubuntu через ufw — гайд для новичков с примерами
📖 Гайды

Как открыть и закрыть порты в Ubuntu: гайд по ufw для новичков

Марина
Марина
📅 16 июля 2026 ⏱ 11 мин чтения 👁 110 просмотров
Как открыть и закрыть порты в Ubuntu: гайд по ufw для новичков

Порты — это «двери» сервера: через 22-й заходят по SSH, через 80-й и 443-й открывается сайт, через 3306-й общается база данных. По умолчанию лишние двери должны быть закрыты, а нужные — открыты. В Ubuntu этим управляет файрвол ufw (Uncomplicated Firewall) — «несложный файрвол», и он правда несложный: весь гайд сводится к пяти командам.

Что понадобится

  • Сервер с Ubuntu — подойдёт любой VPS из каталога, ufw предустановлен во всех современных версиях;
  • Доступ по SSH с правами root или sudo;
  • 5 минут времени.

Шаг 1. Проверяем состояние файрвола

sudo ufw status verbose

Три возможных ответа: Status: active — файрвол работает, ниже список правил; Status: inactive — выключен (все порты фактически открыты настежь); command not found — редкий случай, ставится командой sudo apt install ufw.

Терминал Ubuntu: вывод команды ufw status verbose со списком открытых портов
Так выглядит список правил файрвола: видно, какие порты открыты (иллюстрация интерфейса)

Шаг 2. ⚠️ Сначала разрешаем SSH — потом всё остальное

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

sudo ufw allow 22/tcp

Если меняли стандартный порт SSH — укажите свой. Только после этого можно включать файрвол:

sudo ufw enable

Система переспросит про разрыв соединений — отвечайте y: правило для SSH уже есть, сессия не оборвётся.

Шаг 3. Открываем нужные порты

Синтаксис одинаковый: sudo ufw allow НОМЕР/протокол. Типовой набор:

  • sudo ufw allow 80/tcp и sudo ufw allow 443/tcp — сайт по HTTP и HTTPS (443-й нужен и Telegram-боту на вебхуках);
  • sudo ufw allow 8080/tcp — тестовое веб-приложение;
  • sudo ufw allow from 203.0.113.5 to any port 3306 — доступ к MySQL только с конкретного IP. Базы данных наружу целиком не открывают — это правило-исключение вместо «двери нараспашку».

После каждой команды ufw отвечает Rule added — правило работает сразу, перезагрузка не нужна.

Шаг 4. Закрываем лишнее

Посмотрите правила с номерами и удалите ненужное:

sudo ufw status numbered
sudo ufw delete 3

Или по имени правила: sudo ufw deny 8080/tcp — порт закрыт.

Как проверить, что порт реально открыт

Изнутри сервера: ss -tlnp — покажет, какие порты слушают программы. Важный нюанс: ufw открывает дверь, но за ней должен кто-то стоять — если на порту 8080 ничего не запущено, снаружи он всё равно будет выглядеть закрытым. Снаружи проверяют так: nc -zv IP_сервера 8080 с домашнего компьютера.

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

Включил ufw и потерял SSH-доступ. Подключитесь через консоль VNC/KVM в панели провайдера (она работает «мимо» сети) и выполните sudo ufw allow 22/tcp. На будущее — правило SSH всегда первое.

Порт открыт, но сервис недоступен. Проверьте, что приложение слушает не только localhost: в выводе ss -tlnp должно быть 0.0.0.0:8080, а не 127.0.0.1:8080. Это настройка самого приложения, не файрвола.

Правила «не работают» на VPS. У части провайдеров есть внешний файрвол в панели управления — правила нужно продублировать и там. Если берёте недорогой VPS, уточните в карточке, есть ли внешний файрвол.

Готовые наборы правил под типовые сценарии

Веб-сервер (сайт + SSH):

sudo ufw allow 22/tcp && sudo ufw allow 80/tcp && sudo ufw allow 443/tcp && sudo ufw enable

Сервер только для себя (бот, парсер, VPN): достаточно одного SSH — всё входящее закрыто, исходящие соединения бота работают как обычно, для них входящие порты не нужны. Это частая путаница: чтобы скрипт ходил в интернет, открывать ничего не надо.

Приложение + база на двух серверах: на сервере базы открываем 3306 только для IP приложения: sudo ufw allow from 10.0.0.2 to any port 3306 — и никакого MySQL наружу.

Логи: смотрим, кто стучится в закрытые двери

Включите журнал: sudo ufw logging on — заблокированные попытки начнут писаться в /var/log/ufw.log. Посмотреть последние: sudo tail -20 /var/log/ufw.log. В каждой строке: [UFW BLOCK], SRC= (кто стучался) и DPT= (в какой порт). Не пугайтесь количества — боты сканируют весь интернет круглосуточно, сотни блокировок в день это норма и признак того, что файрвол работает. Если один и тот же IP долбит SSH — забаньте его совсем: sudo ufw deny from 203.0.113.66, а лучше поставьте fail2ban, который делает это автоматически.

Docker и ufw: почему контейнер игнорирует файрвол

Неприятный сюрприз, о котором молчат базовые гайды: Docker пишет свои правила напрямую в iptables в обход ufw. Запустили контейнер с -p 8080:80 — порт 8080 открыт всему интернету, даже если ufw его «запрещает». Что делать: пробрасывать порты только на локальный адрес — docker run -p 127.0.0.1:8080:80, а наружу отдавать через nginx; либо для внутренних сервисов использовать docker-сети без публикации портов вообще. Проверить, что торчит наружу после Docker: ss -tlnp — смотрите, какие порты слушают 0.0.0.0.

Профили приложений и диапазоны портов

У ufw есть готовые профили — их регистрируют устанавливаемые пакеты. Посмотреть список: sudo ufw app list. Вместо номеров можно писать по-человечески:

sudo ufw allow 'Nginx Full' — откроет сразу 80 и 443;
sudo ufw allow 'OpenSSH' — 22-й порт.

Диапазон портов открывается через двоеточие с обязательным протоколом: sudo ufw allow 60000:61000/udp — так, например, работает mosh (SSH для нестабильного интернета). А посмотреть текущие правила «как есть» в формате конфига можно в файлах /etc/ufw/user.rules — иногда быстрее, чем разбирать вывод status.

Сброс и откат: если запутались в правилах

Команда sudo ufw reset стирает все правила и выключает файрвол — чистый лист. После неё обязательно начните заново с разрешения SSH. Точечный откат удобнее делать по номерам: sudo ufw status numberedsudo ufw delete N. И помните: правила ufw переживают перезагрузку сервера — «само сбросится» не сработает ни в плохую, ни в хорошую сторону.

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

Чем ufw отличается от iptables?

ufw — дружелюбная обёртка над iptables/nftables: те же правила, но человеческим языком. Для 95% задач ufw достаточно; iptables напрямую нужен для сложной маршрутизации.

Какие порты должны быть открыты на веб-сервере?

Минимум: 22 (SSH), 80 (HTTP), 443 (HTTPS). Всё остальное — по потребности и лучше с ограничением по IP.

Опасно ли держать порты открытыми?

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

Как разрешить ping до сервера?

ICMP-запросы ufw по умолчанию пропускает, так что ping работает из коробки. Если сервер не пингуется — смотрите внешний файрвол в панели провайдера или настройки ядра, а не ufw. Кстати, «не пингуется» ещё не значит «не работает»: часть провайдеров сознательно режет ICMP для защиты от сканирования.

ufw или облачный файрвол провайдера — что использовать?

Оба сразу — это два рубежа обороны. Внешний файрвол отсекает трафик ещё до сервера (экономит ресурсы и спасает при атаках), ufw страхует, если правило в панели забыли или настроили неточно. Главное — держите правила синхронными, иначе будете долго искать, «кто из двоих» блокирует нужный порт.

Может ли открытый порт «съедать» ресурсы?

Сам по себе — нет: порт это просто разрешение принимать соединения. Ресурсы ест сервис за портом и попытки перебора. Поэтому смысл минимализма не в экономии, а в сокращении поверхности атаки: чем меньше открытых дверей, тем меньше нужно защищать.

Шпаргалка: все команды из гайда

Действие Команда
Статус и правила sudo ufw status verbose
Разрешить порт sudo ufw allow 443/tcp
Разрешить только с IP sudo ufw allow from 1.2.3.4 to any port 3306
Запретить порт sudo ufw deny 8080/tcp
Забанить IP sudo ufw deny from 1.2.3.4
Удалить правило sudo ufw status numberedsudo ufw delete N
Включить / выключить sudo ufw enable / sudo ufw disable
Сбросить всё sudo ufw reset
Кто слушает порты ss -tlnp
Логи блокировок sudo tail -f /var/log/ufw.log

Финальная проверка: посмотрите на сервер глазами атакующего

Настроили правила — проверьте результат снаружи, как это сделал бы сканер. С домашнего компьютера (не с самого сервера!):

nmap -F IP_сервера

Утилита переберёт сотню типовых портов и покажет три состояния: open — порт открыт и за ним живёт сервис, closed — файрвол пропускает, но никто не слушает, filtered — файрвол молча отбрасывает пакеты (это и есть работа ufw). В идеальной картине open — только у портов из вашего списка, всё остальное filtered. Увидели неожиданный open — вернитесь к ss -tlnp на сервере и выясните, что за программа его заняла: часто это забытая тестовая служба или тот самый Docker-контейнер. Такой аудит стоит повторять после установки любого нового софта — многие пакеты открывают порты «услужливо» и молча.

Итог

Вся практика: ufw allow 22/tcpufw enableufw allow для нужных портов → ufw status для контроля. Если сервера ещё нет — выбирайте в рейтинге VPS: на любом тарифе с Ubuntu этот гайд отработает без изменений.

Поделиться:
Марина
Редактор · FREEHOSTING
Главный редактор FREEHOSTING. С 2020 года тестирует VDS, VPS и хостинг-провайдеров — арендует серверы, нагружает их реальными проектами и пишет честные обзоры по итогам. Помогает читателям выбирать хостинг под свои задачи: от Telegram-бота до production-сайта.