Скидка 50% на все тарифы, ограниченное время. От $2.48/mo
9 мин чтения
Безопасность и сети

Как проверить открытые порты в Linux с помощью команд или PowerShell?

Келли Ватсон By Келли Ватсон 9 мин. чтения Обновлено 28 октября 2025 г.
Цифровой коридор с пронумерованными «дверями» портов справа, одна открытая и одна закрытая, иллюстрирующий ответ на вопрос «как проверить открытые порты в Linux на уязвимости?»

Большинство думает, что проверка открытых портов — задача только для специалистов по безопасности. До тех пор, пока сервер не взламывают через открытый порт, о котором никто даже не знал. В Linux открытые порты можно проверить встроенными командами: netstat, ss, lsof, nmap и netcat. Также можно сканировать порты удалённо — с помощью PowerShell из систем Windows. Каждый метод даёт разный уровень детализации и требует разных прав доступа.

Управление портами стало важнее, чем когда-либо. Автоматизированная разведка сетей постоянно растёт, и злоумышленники непрерывно сканируют системы в поисках уязвимых точек входа. Независимо от того, защищаете ли вы продакшн-серверы или тестируете локальные сервисы, понимание безопасности портов — обязательная основа для поддержания надёжной и работоспособной системы.

TL;DR: Краткий обзор

  • Используйте ss или netstat для быстрой проверки прослушиваемых портов без установки дополнительных инструментов
  • Используйте nmap, когда нужно полноценное сканирование портов с детальным определением сервисов
  • Используйте lsof, чтобы узнать, какой именно процесс занимает конкретный порт
  • Используйте Test-NetConnection в PowerShell из Windows для проверки портов на удалённых серверах Linux

Что такое порт — простыми словами

3D-иллюстрация сервера в виде здания со множеством пронумерованных «дверей»-портов — наглядное объяснение того, что такое порт.

Представьте порты как пронумерованные двери вашего сервера. Каждый порт — это конечная точка связи, через которую сетевой трафик входит в систему или выходит из неё. Номера портов находятся в диапазоне от 0 до 65 535 и делятся на три категории: общеизвестные порты (0–1023), зарегистрированные порты (1024–49151) и динамические порты (49152–65 535).

Проще говоря: когда вы открываете сайт, браузер обращается к порту 80 для HTTP или к порту 443 для HTTPS. Почтовые серверы принимают соединения на порту 25 для SMTP, а удалённый доступ по SSH работает на порту 22. Эти прослушиваемые порты служат шлюзами для легитимного трафика, но без должной защиты могут стать точками входа для злоумышленников.

Порты работают совместно с двумя основными транспортными протоколами: TCP — для надёжной передачи данных с установкой соединения, и UDP — для более быстрой передачи без установки соединения. Понимание того, как работают порты, помогает принимать обоснованные решения: какие из них оставить открытыми, а какие закрыть в целях безопасности.

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

Лупа с надписью «netstat» над сетевыми соединениями — символ роли этой команды в анализе сети.

Linux предоставляет несколько мощных инструментов для анализа портов, каждый из которых имеет свои преимущества. Часть из них предустановлена, другие требуют установки. Выбор подходящего инструмента зависит от уровня прав доступа, необходимой детализации и конкретной задачи.

Команда netstat

Команда netstat уже несколько десятилетий остаётся надёжным инструментом для анализа сети. Чтобы проверить открытые порты, выполните netstat -tuln где каждый флаг отвечает за своё: -t показывает соединения TCP, -u — соединения UDP, -l — только прослушиваемые порты, -n — результаты в числовом формате без разрешения имён хостов.

После выполнения команды вы увидите таблицу с протоколом, локальным адресом и номером порта, удалённым адресом и состоянием соединения. Например, 0.0.0.0:22 означает, что SSH прослушивает порт 22 на всех сетевых интерфейсах. Каждая строка даёт мгновенное представление об активных сервисах и их сетевом состоянии.

Параметр Команда netstat в Linux предоставляет дополнительные флаги для более детального анализа. Флаг -p показывает, какой процесс владеет каждым соединением, однако для этого требуются права root. Например, sudo netstat -tulnp отображает как порт, так и ID процесса, который его использует.

Команда ss

Команда ss — современная замена netstat: она работает быстрее и выдаёт более подробную статистику сокетов. Используйте ss -tuln с теми же флагами, что и у netstat, для получения аналогичного вывода. При этом ss обрабатывает данные быстрее, особенно на системах с большим количеством соединений.

Для проверки открытых портов с расширенной фильтрацией ss предлагает гибкий синтаксис. Команда ss -tulnp | grep :22 показывает только соединения, связанные с SSH. Команда ss -tn state established выводит все активные соединения TCP, позволяя отслеживать текущие сессии.

Одно из преимуществ ss — возможность фильтрации по конкретным критериям. Например, ss -t '( dport = :80 or sport = :80 )' показывает только соединения, связанные с веб-трафиком на порту 80. Такая точность делает ss незаменимым инструментом при диагностике проблем с конкретными сервисами.

Команда lsof

Команда lsof отлично подходит для определения того, какой процесс использует конкретный порт. Команда sudo lsof -i -P -n показывает все сетевые соединения с информацией о процессах. Флаг -i фильтрует интернет-соединения, -P отключает преобразование номеров портов в имена сервисов, а -n пропускает разрешение DNS для ускорения вывода.

Когда нужно выяснить, что занимает конкретный порт, lsof даст ответ. Например, sudo lsof -i :3306 покажет, запущен ли MySQL и какой процесс им владеет. Это особенно важно при диагностике конфликтов портов или обнаружении несанкционированных сервисов.

Результаты можно также фильтровать по конкретным приложениям. Если вы подозреваете, что определённая программа прослушивает неожиданные порты, sudo lsof -i -a -p [PID] покажет все сетевые соединения для этого конкретного ID процесса.

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

Карта сети, сканируемая Nmap — как луч сонара, определяющий открытые и закрытые порты на различных устройствах.

Nmap — один из наиболее полных инструментов сканирования портов. Для установки выполните sudo apt install nmap на системах Ubuntu или Debian. Для проверки локальных портов используйте nmap localhost or nmap 127.0.0.1 для базового сканирования.

Для удалённых серверов укажите IP-адрес: nmap 192.168.1.100. Nmap выдаёт подробную информацию об открытых портах, версиях сервисов и даже определяет операционную систему с помощью расширенных флагов. Команда nmap -sV localhost определяет версии сервисов и показывает, какое именно программное обеспечение запущено на каждом порту.

Команды безопасности ценят Nmap за возможность проверять правила межсетевого экрана. Команда nmap -Pn [IP] сканирует хост даже при заблокированном ping. Однако перед сканированием удалённых серверов убедитесь, что у вас есть на это разрешение: несанкционированное сканирование портов может нарушать политику безопасности.

Проверка открытых портов с помощью Netcat (nc)

Netcat предлагает простой способ проверки портов с минимальными накладными расходами. Команда nc -zv localhost 22-80 сканирует диапазон портов с 22 по 80 и показывает, какие из них принимают подключения. Флаг -z включает режим сканирования без отправки данных, а -v выводит подробный лог.

Для проверки отдельного порта nc -zv hostname 443 быстро покажет, доступен ли HTTPS. Этот метод удобен в скриптах и сценариях автоматизации. Для более широкого сканирования можно совместить netcat с циклом оболочки: for port in {1..1000}; do nc -zv localhost $port 2>&1 | grep succeeded; done

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

Проверка открытых портов с помощью PowerShell

PowerShell позволяет пользователям Windows проверять открытые порты на удалённых серверах Linux без установки дополнительного программного обеспечения. Команда Test-NetConnection -ComputerName [Linux-IP] -Port 22 проверяет доступность SSH с машины Windows.

Для сканирования нескольких портов создайте простой цикл PowerShell: 1..1024 | ForEach-Object { Test-NetConnection -ComputerName 192.168.1.100 -Port $_ -WarningAction SilentlyContinue } | Where-Object { $_.TcpTestSucceeded }. Этот метод хорошо работает при проверке портов на Ubuntu, Debian или любом другом дистрибутиве Linux с систем Windows.

Преимущество PowerShell - тесная интеграция с инфраструктурой Windows. Вы можете экспортировать результаты в CSV, отправлять уведомления по электронной почте или запускать автоматические реакции в зависимости от состояния портов. Это делает PowerShell удобным решением для мониторинга гибридных сред.

Сравнение методов сканирования портов

Инструмент Синтаксис команды Подходит для Требования
netstat netstat -tuln Быстрый обзор прослушиваемых портов Предустановлен на большинстве систем
ss ss -tuln Высокая скорость, подробная информация о сокетах Предустановлен (современный Linux)
lsof sudo lsof -i -P -n Определение процесса, использующего порт Требуется доступ root/sudo
nmap nmap localhost Комплексное сканирование портов Требует отдельной установки
netcat nc -zv хост порт Простая проверка доступности портов Предустановлено или устанавливается в пару кликов
PowerShell Test-NetConnection Удалённое сканирование с Windows Требуется машина Windows

Распространённые порты Linux и связанные с ними службы

Port Сервис Протокол Распространённые сценарии использования
22 SSH TCP Безопасный удалённый доступ через Удалённое подключение SSH
80 HTTP TCP Незашифрованный веб-трафик
443 HTTPS TCP Шифрование веб-трафика
21 FTP TCP Передача файлов
25 SMTP TCP Отправка email
3306 MySQL TCP Подключения к базам данных
5432 PostgreSQL TCP Подключения к базам данных

Настройка портов требует понимания правил брандмауэра и привязок сервисов. Многие администраторы изменить порт SSH в Linux с порта 22 по умолчанию на нестандартный порт, чтобы снизить количество автоматизированных атак. В Telnet против SSH этой дискуссии объясняется, почему порт 23 (Telnet) должен оставаться закрытым в пользу зашифрованного протокола SSH на порту 22.

Открытые порты в Linux: что нужно знать

Крепостная стена с пронумерованными воротами-портами, одни из которых открыты и уязвимы — символ угроз безопасности, которые несут открытые порты.

Каждый открытый порт — это потенциальная точка входа в вашу систему. Угрозы растут: автоматизированное сканирование портов увеличилось на 16,7% в мире: злоумышленники непрерывно ищут уязвимые точки входа. Ежемесячно такие разведывательные сканирования охватывают миллиарды портов в поисках неправильно настроенных сервисов или устаревшего ПО.

Но что именно происходит, когда атакующие находят открытый порт? Состояния портов говорят сами за себя. Порт в состоянии LISTEN принимает входящие соединения, ESTABLISHED означает активную передачу данных, а TIME_WAIT указывает на недавно закрытое, но ещё отслеживаемое соединение. Атакующие эксплуатируют открытые порты разными способами: брутфорс SSH (порт 22), SQL-инъекции через веб-порты (80/443) и удалённое выполнение кода через уязвимые сервисы.

Безопасное открытие портов требует многоуровневой защиты. Начните с политики запрета по умолчанию на файрволе. Проверьте конфигурацию с помощью iptables показать правила. Открывайте только те порты, которые реально используются, и закрывайте их сразу после того, как они становятся не нужны. Меняйте порты по умолчанию для распространённых сервисов — это снижает эффективность автоматизированного сканирования.

Экосистема Linux сталкивалась с серьёзными проблемами безопасности: сотни уязвимостей требовали патчей. Регулярный аудит портов позволяет обнаружить несанкционированные сервисы раньше атакующих. Используйте инструменты передачи файлов, соблюдающие границы безопасности, например копирование файлов через SSH вместо незашифрованного FTP. При переносе файлов между системами копирование файлов с удалённого сервера на локальный через SCP обеспечивает зашифрованную передачу по защищённому каналу SSH.

Среди рекомендуемых практик: port knocking для защищённых сервисов, fail2ban для блокировки повторных неудачных попыток аутентификации и детальное журналирование попыток подключения. Регулярно проводите аудит безопасности — проверяйте, какие порты остаются открытыми и оправдано ли это.

Как VPS Linux от Cloudzy упрощает управление портами

Управление портами становится значительно проще при правильно настроенной инфраструктуре. Решения Linux VPS Cloudzy поставляются с преднастроенными параметрами безопасности: продуманными правилами файрвола и удобным управлением портами через интуитивную панель управления. Полный root-доступ даёт вам полный контроль над тем, какие порты открывать или закрывать.

Хостинг Linux VPS

Выберите экономный или премиальный Linux VPS для хостинга сайта или удалённого рабочего стола по минимальной цене. VPS работает на базе Linux KVM для повышения эффективности и использует производительное железо с хранилищем NVMe SSD для максимальной скорости.

Читать далее

Производительность важна при проверке и управлении портами. Хранилище NVMe от Cloudzy обеспечивает эффективную работу инструментов сканирования портов, а соединения до 10 Gbps справляются с высоким трафиком без узких мест. Инфраструктура выигрывает от того, что Linux обеспечивает значительную часть мировой серверной инфраструктуры — эти оптимизированные конфигурации проверены в реальных условиях.

От 3,96 $ в месяц вы получаете профессиональную среду, идеально подходящую для отработки навыков управления портами. Несколько локаций дата-центров позволяют тестировать геораспределённые конфигурации, а поддержка 24/7 поможет с настройкой сложных правил файрвола или диагностикой проблем с портами. Изучаете ли вы, как проверить открытые порты в Linux, или разворачиваете продакшн-сервисы — гибкая среда VPS ускорит реализацию ваших решений в области безопасности.

Заключение

Какой способ проверки открытых портов лучший? Честный ответ: универсального нет. Для быстрых локальных проверок ss или netstat справятся без лишних сложностей. Для полноценного аудита безопасности Nmap покажет всё. Чтобы выяснить, какой процесс занимает порт, lsof сэкономит часы догадок. PowerShell соединяет Windows и Linux, когда нужна удалённая проверка.

Главный вывод здесь не в том, чтобы заучить команды. Суть в том, чтобы сделать аудит портов регулярной практикой, а не экстренной реакцией. Настройте еженедельное сканирование, закрывайте неиспользуемые порты сразу после их обнаружения и документируйте, каким сервисам какие порты нужны. Такой подход превращает проверку портов из тушения пожаров в проактивную защиту.

Поделиться

Другие статьи блога

Читать дальше.

Обложка руководства Cloudzy по настройке MikroTik L2TP VPN: ноутбук подключается к серверной стойке через светящийся сине-золотой цифровой туннель с иконками щитов.
Безопасность и сети

Настройка MikroTik L2TP VPN (с IPsec): руководство по RouterOS (2026)

В этой конфигурации MikroTik L2TP VPN протокол L2TP отвечает за туннелирование, а IPsec — за шифрование и целостность данных. Их совместное использование даёт совместимость с нативными клиентами без сторонних реш

Рекса СайрусРекса Сайрус 9 мин. чтения
Окно терминала с предупреждением SSH об изменении идентификатора удалённого хоста, заголовок руководства по исправлению ошибки и брендинг Cloudzy на тёмно-бирюзовом фоне.
Безопасность и сети

Предупреждение: идентификатор удалённого хоста изменился. Как это исправить

SSH — защищённый сетевой протокол, который создаёт зашифрованный туннель между системами. Он остаётся популярным среди разработчиков, которым нужен удалённый доступ к машинам без использования граф

Рекса СайрусРекса Сайрус 10 мин чтения
Иллюстрация к руководству по устранению неполадок сервера DNS: предупредительные символы и синий сервер на тёмном фоне, тема — ошибки разрешения имён Linux
Безопасность и сети

Временная ошибка разрешения имён: что это значит и как её исправить?

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

Рекса СайрусРекса Сайрус 12 мин чтения

Готовы к деплою? От $2.48/мес.

Независимый облачный провайдер с 2008 года. AMD EPYC, NVMe, 40 Gbps. Возврат средств в течение 14 дней.