Большинство думает, что проверка открытых портов — задача только для специалистов по безопасности. До тех пор, пока сервер не взламывают через открытый порт, о котором никто даже не знал. В Linux открытые порты можно проверить встроенными командами: netstat, ss, lsof, nmap и netcat. Также можно сканировать порты удалённо — с помощью PowerShell из систем Windows. Каждый метод даёт разный уровень детализации и требует разных прав доступа.
Управление портами стало важнее, чем когда-либо. Автоматизированная разведка сетей постоянно растёт, и злоумышленники непрерывно сканируют системы в поисках уязвимых точек входа. Независимо от того, защищаете ли вы продакшн-серверы или тестируете локальные сервисы, понимание безопасности портов — обязательная основа для поддержания надёжной и работоспособной системы.
TL;DR: Краткий обзор
- Используйте ss или netstat для быстрой проверки прослушиваемых портов без установки дополнительных инструментов
- Используйте nmap, когда нужно полноценное сканирование портов с детальным определением сервисов
- Используйте lsof, чтобы узнать, какой именно процесс занимает конкретный порт
- Используйте Test-NetConnection в PowerShell из Windows для проверки портов на удалённых серверах Linux
Что такое порт — простыми словами

Представьте порты как пронумерованные двери вашего сервера. Каждый порт — это конечная точка связи, через которую сетевой трафик входит в систему или выходит из неё. Номера портов находятся в диапазоне от 0 до 65 535 и делятся на три категории: общеизвестные порты (0–1023), зарегистрированные порты (1024–49151) и динамические порты (49152–65 535).
Проще говоря: когда вы открываете сайт, браузер обращается к порту 80 для HTTP или к порту 443 для HTTPS. Почтовые серверы принимают соединения на порту 25 для SMTP, а удалённый доступ по SSH работает на порту 22. Эти прослушиваемые порты служат шлюзами для легитимного трафика, но без должной защиты могут стать точками входа для злоумышленников.
Порты работают совместно с двумя основными транспортными протоколами: TCP — для надёжной передачи данных с установкой соединения, и UDP — для более быстрой передачи без установки соединения. Понимание того, как работают порты, помогает принимать обоснованные решения: какие из них оставить открытыми, а какие закрыть в целях безопасности.
Как проверить открытые порты в Linux

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 — один из наиболее полных инструментов сканирования портов. Для установки выполните 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 для хостинга сайта или удалённого рабочего стола по минимальной цене. VPS работает на базе Linux KVM для повышения эффективности и использует производительное железо с хранилищем NVMe SSD для максимальной скорости.
Читать далееПроизводительность важна при проверке и управлении портами. Хранилище NVMe от Cloudzy обеспечивает эффективную работу инструментов сканирования портов, а соединения до 10 Gbps справляются с высоким трафиком без узких мест. Инфраструктура выигрывает от того, что Linux обеспечивает значительную часть мировой серверной инфраструктуры — эти оптимизированные конфигурации проверены в реальных условиях.
От 3,96 $ в месяц вы получаете профессиональную среду, идеально подходящую для отработки навыков управления портами. Несколько локаций дата-центров позволяют тестировать геораспределённые конфигурации, а поддержка 24/7 поможет с настройкой сложных правил файрвола или диагностикой проблем с портами. Изучаете ли вы, как проверить открытые порты в Linux, или разворачиваете продакшн-сервисы — гибкая среда VPS ускорит реализацию ваших решений в области безопасности.
Заключение
Какой способ проверки открытых портов лучший? Честный ответ: универсального нет. Для быстрых локальных проверок ss или netstat справятся без лишних сложностей. Для полноценного аудита безопасности Nmap покажет всё. Чтобы выяснить, какой процесс занимает порт, lsof сэкономит часы догадок. PowerShell соединяет Windows и Linux, когда нужна удалённая проверка.
Главный вывод здесь не в том, чтобы заучить команды. Суть в том, чтобы сделать аудит портов регулярной практикой, а не экстренной реакцией. Настройте еженедельное сканирование, закрывайте неиспользуемые порты сразу после их обнаружения и документируйте, каким сервисам какие порты нужны. Такой подход превращает проверку портов из тушения пожаров в проактивную защиту.