Как открыть и закрыть порты в Ubuntu 22.04 и защитить систему от угроз

Как открыть и закрыть порты в Ubuntu 22.04 и защитить систему от угроз

Нужно открыть порт для веб-сервера или закрыть доступ к базе данных? Рассказываем, как управлять портами на VPS и выделенных серверах с Ubuntu 22.04 с помощью UFW. Вы научитесь настраивать порты и их диапазоны, разрешать доступ по IP и просматривать список открытых портов.

Сетевые порты — это логические точки входа и выхода данных в системе. Их корректная настройка критична для безопасности и производительности VPS и рабочих станций. В этом материале мы подробно рассмотрим, как открыть и закрыть порты в Ubuntu 22.04, как настроить доступ к портам, включая базовые и продвинутые сценарии.

Аренда VPS/VDS от 219 руб/месяц

Преимущества VPS в AdminVPS:

✓ Бесплатное администрирование

✓ Только быстрые NVMe-диски

✓ Защита от DDoS-атак

✓ Быстрая техподдержка

Аренда VPS/VDS виртуального сервера от AdminVPS — это прозрачная и честная услуга с доступной ценой

Зачем контролировать сетевые порты

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

Основные риски включают:

  • Неавторизованный доступ. Например, порт SSH (22/TCP) без надёжной аутентификации может стать целью брутфорс-атак.
  • Утечки данных. Сервисы, работающие на портах баз данных (3306/TCP для MySQL, 5432/TCP для PostgreSQL), могут подвергаться несанкционированному доступу.
  • Эксплуатация уязвимостей. Устаревшие версии ПО, слушающие открытые порты, часто содержат известные уязвимости.

Регулярный аудит портов снижает подобные риски.

В Ubuntu 22.04 для работы с портами применяют несколько инструментов:

  • UFW — упрощённая утилита для управления сетевым трафиком, рекомендованная для простых задач и большинства пользователей.
  • iptables — низкоуровневая утилита для детальной настройки фильтрации трафика, подходит для продвинутых конфигураций.
  • nftables — современная замена iptables, интегрированная в ядра Linux версии 3.13 и новее.
  • nmap, ss, netstat — для аудита открытых портов.

Настройка портов через UFW

Установка и активация файрвола

Обычно файрвол устанавливается вместе с операционной системой. Но если по какой-то причине он отсутствует, установите его:

sudo apt update && sudo apt install ufw  

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

sudo ufw allow 22/tcp   
sudo ufw enable  

Правило allow 22/tcp открывает порт 22 для входящих подключений по протоколу TCP. Замените 22 на актуальный порт, если его меняли. enable активирует файрвол и сохраняет настройки после перезагрузки.

Как открыть порт на Ubuntu 22.04

Открыть порты можно с помощью команды allow. Например, для веб-сервера открывают порты 80 и 443 (HTTP и HTTPS):

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

Чтобы разрешить подключение к диапазону портов, например, к SIP-портам 5060-5061/UDP для VoIP-сервера:

sudo ufw allow 5060:5061/udp  

Между началом и концом диапазона ставится двоеточие.

Если нужно открыть порт для подключений с определённого IP, то в команду добавляют указание на этот адрес и порт, к которому разрешают доступ:

sudo ufw allow from ххх.х.ххх.ххх to any port 5432

Как закрыть порт с помощью ufw

Чтобы закрыть порт, применяют команду deny. Например, запретите входящие трафик на порту, который используется MySQL (3306):

sudo ufw deny 3306/tcp  

Есть ещё одна команда, которой можно закрыть порт — reject:

sudo ufw reject 3306/tcp

Разница между deny и reject в том, что deny блокирует трафик без ответа, а при значении reject трафик будет заблокирован с ответным сообщением. Если в настройках брандмауэра установлено значение deny, вы увидите сообщение Request timed out («Время ожидания запроса истекло»). Если настройки установлены на reject, вы увидите сообщение Destination host unreachable («Узел назначения недоступен»).

Чтобы удалить существующее правило, сначала выведите нумерованный список всех правил:

sudo ufw status numbered  

Затем удалите ненужное по его номеру:

sudo ufw delete 3  

Как проверить статус UFW

Команда status verbose отображает текущие настройки:

sudo ufw status verbose

Пример результата команды:

Вывод информации о статусе
Вывод информации о статусе

Пояснение:

  • Status — текущее состояние UFW (active означает, что файрвол включён).
  • Logging — уровень логирования (low — записываются только блокируемые пакеты).
  • Default — дефолтные политики.
  • deny (incoming) — блокировка всех входящих подключений, кроме явно разрешённых.
  • allow (outgoing) — разрешение всех исходящих подключений.
  • disabled (routed) — маршрутизация трафика отключена.
  • To — порт и протокол, к которому применяется правило.
  • Action — действие (ALLOW IN — разрешить входящие соединения).
  • From — источник подключения (Anywhere — любой IP).

Как проверить открытые порты на Ubuntu

Использование утилиты ss

Команда ss отображает информацию о сетевых соединениях:

ss -tuln  

Опции:

  • -t — отображать TCP-порты.
  • -u — отображать UDP-порты.
  • -l — показывать только порты в состоянии прослушивания (LISTEN).
  • -n — отключать преобразование адресов в доменные имена.

Пример вывода:

Netid State Recv-QSend-QLocal Address:PortPeer Address:Port
tcpLISTEN040960.0.0.0:800.0.0.0:*
tcpLISTEN04096127.0.0.1:54320.0.0.0:*

Сканирование портов с помощью nmap

Чтобы проверить доступны ли порты с удалённого устройства выполните:

nmap -sT -p- 192.168.1.100  

Здесь:

  • -sT — TCP-сканирование с установкой соединения.
  • -p- — сканировать все порты (1-65535).

Результат:

PORT STATE SERVICE 
22/tcpopenssh
80/tcpopenhttp
5432/tcpopenpostgresql

Диагностика проблем

Сервис недоступен при открытом порте. Проверьте статус сервиса:

systemctl status nginx  

Убедитесь, что сервис привязан к корректному интерфейсу. Например, в конфигурации Nginx:

listen 0.0.0.0:80;  # Прослушивание на всех интерфейсах 
listen 127.0.0.1:80; # Только локальный интерфейс  

Конфликты между правилами UFW и iptables. Просмотр всех правил с номерами:

sudo iptables -L -n --line-numbers  

Удаление конфликтующего правила:

sudo iptables -D INPUT 3  

Рекомендации по безопасности

Минимизируйте количество открытых портов. Оставляйте только те, что действительно необходимы для работы сервисов.

Регулярно проводите аудит. Используйте ss или nmap для проверки текущего состояния портов.

Обновляйте ПО. Устаревшие версии сетевых служб часто содержат уязвимости. 

Сохраняйте резервные копии правил (конфигурации iptables/UFW) перед внесением изменений.

Пример безопасной конфигурации для сервера:

  • Разрешены порты: 22/TCP (SSH с аутентификацией по ключу), 80/TCP, 443/TCP.
  • UFW настроен на запрет всех входящих подключений по умолчанию.
  • iptables ограничивает количество попыток подключения к SSH.

Помните, что контроль портов требует системного подхода: настройка правил, мониторинг логов (например, /var/log/ufw.log) и своевременное обновление системных компонентов.

Читайте в блоге:

Loading spinner
0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

VPN на VPS-сервере

Узнайте, как создать собственный VPN на VPS-сервере для защиты ваших конфиденциальных данных!

Что будем искать? Например,VPS-сервер

Мы в социальных сетях