Большинство людей думают, что проверка открытых портов — это задача только для экспертов по безопасности, пока их сервер не будет скомпрометирован через открытый порт, о прослушивании которого они даже не подозревали. Вы можете проверить открытые порты в 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 на протяжении десятилетий была надежным инструментом сетевого анализа. Чтобы проверить открытые порты, используйте нетстат -tuln где каждый флаг служит определенной цели: -t показывает соединения TCP, -u отображает соединения UDP, -l фильтрует только прослушиваемые порты, а -n представляет результаты в числовом формате, а не разрешает имена хостов.
Когда вы запустите эту команду, вы увидите выходные данные, показывающие протокол, локальный адрес с номером порта, внешний адрес и состояние соединения. Например, 0.0.0.0:22 указывает, что SSH прослушивает все сетевые интерфейсы порта 22. Каждая запись обеспечивает немедленную видимость активных служб и их состояния сети.
The Команда netstat в Linux предлагает дополнительные флаги для более детального анализа. Добавление -p показывает, какому процессу принадлежит каждое соединение, хотя для этого требуются права root. Например, sudo netstat -tulnp показывает как порт, так и идентификатор процесса, использующего его.
Использование команды сс
Команда ss служит современной заменой netstat, обеспечивая превосходную производительность и более подробную статистику сокетов. Использовать сс -тулн с теми же флагами, что и netstat, для сопоставимого вывода. Однако ss обрабатывает информацию быстрее, особенно в системах с многочисленными соединениями.
Для проверки открытых портов с помощью расширенной фильтрации ss предоставляет мощные возможности синтаксиса. Бег сс-тулнп | греп :22 показывает только соединения, связанные с SSH. Команда состояние ss -tn установлено отображает все установленные TCP-соединения, помогая отслеживать активные сеансы.
Одним из преимуществ ss является его способность фильтровать по определенным критериям. Например, ss -t '( dport = :80 или sport = :80 )' показывает только соединения, связанные с веб-трафиком через порт 80. Такая точность делает ss бесценным средством устранения неполадок конкретных служб.
Использование команды lsof
Команда lsof превосходно определяет, какой процесс использует определенный порт. Бег судо lsof -i -P -n показывает все сетевые соединения с подробностями процесса. Флаг -i фильтрует подключения к Интернету, -P предотвращает преобразование номеров портов в имена служб, а -n пропускает разрешение DNS для более быстрого получения результатов.
Когда вам нужно найти, что использует определенный порт, lsof дает ответ. Например, судо lsof -i:3306 показывает, запущен ли MySQL и какой идентификатор процесса им владеет. Это становится критически важным при устранении конфликтов портов или выявлении неавторизованных сервисов.
Вы также можете фильтровать результаты по конкретным приложениям. Если вы подозреваете, что определенная программа прослушивает неожиданные порты, sudo lsof -i -a -p [PID] показывает все сетевые подключения для этого конкретного идентификатора процесса.
Использование Nmap для сканирования портов

Nmap является одним из наиболее полных доступных инструментов сканирования портов. Сначала установите его с помощью sudo apt установить nmap в системах Ubuntu или Debian. Для проверки локального порта используйте Nmap локальный хост or нмап 127.0.0.1 для базового сканирования.
Для удаленных серверов укажите IP-адрес: нмап 192.168.1.100. Nmap предоставляет подробную информацию об открытых портах, версиях служб и даже об обнаружении операционной системы с помощью расширенных флагов. Команда nmap -sV локальный хост выполняет определение версии службы, точно показывая, какое программное обеспечение работает на каждом порту.
Команды безопасности ценят способность Nmap тестировать правила брандмауэра. Бег nmap -Pn [IP] сканирует хост, даже если пинг заблокирован. Однако всегда проверяйте наличие разрешения перед сканированием удаленных серверов, поскольку несанкционированное сканирование портов может нарушить политику безопасности.
Использование Netcat (nc) для проверки открытых портов
Netcat предлагает простой подход к проверке портов с минимальными издержками. Команда nc -zv локальный хост 22-80 сканирует диапазон портов с 22 по 80, показывая, какие порты принимают соединения. Флаг -z включает режим сканирования без отправки данных, а -v обеспечивает подробный вывод.
Для однопортовой проверки nc -zv имя хоста 443 быстро подтверждает, доступен ли HTTPS. Этот метод оказывается полезным в сценариях и рабочих процессах автоматизации. Вы можете комбинировать netcat с циклами оболочки для более широкого сканирования: для порта в {1..1000}; do nc -zv localhost $port 2>&1 | grep преуспел; сделанный
The прослушиватель Netcat Функциональность выходит за рамки проверки портов и включает фактическое тестирование служб и передачу данных, что делает его универсальным инструментом в наборе инструментов любого администратора.
Использование PowerShell для проверки открытых портов
PowerShell позволяет пользователям Windows проверять открытые порты на удаленных серверах Linux без установки дополнительного программного обеспечения. Команда Test-NetConnection -ComputerName [Linux-IP] -Порт 22 проверяет доступность SSH с компьютера под управлением Windows.
Для сканирования нескольких портов создайте простой цикл PowerShell: 1..1024 | ForEach-Object { Test-NetConnection -ComputerName 192.168.1.100 -Port $_ -WarningAction SillyContinue } | Где-Объект { $_.TcpTestSucceeded }. Этот метод эффективно работает при проверке портов Ubuntu, Debian или любого другого дистрибутива Linux из систем Windows.
Преимущество PowerShell заключается в его интеграции с инфраструктурой Windows. Вы можете экспортировать результаты в CSV, отправлять оповещения по электронной почте или запускать автоматические ответы в зависимости от состояния порта, что делает его идеальным для мониторинга гибридной среды.
Сравнение методов сканирования портов
| Инструмент | Синтаксис команды | Лучшее для | Предварительные условия |
| нетстат | нетстат -tuln | Краткий обзор портов прослушивания | Предустановлено в большинстве систем |
| ss | сс -тулн | Высокая производительность, подробная информация о разъеме | Предустановлено (современный Linux) |
| лсоф | судо lsof -i -P -n | Определение того, какой процесс использует порт | Требуется root/sudo доступ |
| Nmap | Nmap локальный хост | Комплексное сканирование портов | Необходимо установить отдельно |
| неткэт | nc -zv хост-порт | Простые тесты подключения портов | Предустановлен или прост в установке |
| PowerShell | Тест-NetConnection | Удаленное сканирование из Windows | Требуется машина с Windows |
Распространенные порты Linux и связанные с ними службы
| Порт | Услуга | Протокол | Общее использование |
| 22 | SSH | TCP | Безопасный удаленный доступ через Удаленное соединение SSH |
| 80 | HTTP | TCP | Незашифрованный веб-трафик |
| 443 | HTTPS | TCP | Зашифрованный веб-трафик |
| 21 | FTP | TCP | Передача файлов |
| 25 | SMTP | TCP | Отправка электронной почты |
| 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.
Лучшие практики включают в себя реализацию перенаправления портов для конфиденциальных служб, использование Fail2ban для блокировки повторных сбоев аутентификации и ведение подробных журналов попыток подключения. Запланируйте регулярные проверки безопасности, чтобы проверить, какие порты остаются открытыми и служат ли они законным целям.
Как Linux VPS от Cloudzy упрощает управление портами
Управление портами становится значительно проще благодаря хорошо настроенной инфраструктуре. Cloudzy’s Linux VPS Решения предоставляют предварительно настроенные параметры безопасности, в том числе интеллектуальные правила брандмауэра и оптимизированное управление портами с помощью интуитивно понятной панели управления. Имея полный root-доступ, вы сохраняете полный контроль над тем, какие порты открывать или закрывать.
Приобретите Linux VPS эконом- или премиум-класса для размещения вашего веб-сайта или удаленного рабочего стола по самой низкой цене. VPS работает на Linux KVM для повышения эффективности и работает на мощном оборудовании с SSD-накопителем NVMe для повышения скорости.
Читать далееПроизводительность имеет значение при проверке портов и управлении ими. Хранилище Cloudzy NVMe обеспечивает эффективную работу ваших инструментов сканирования портов, а соединения со скоростью до 10 Гбит/с обрабатывают большой объем трафика без узких мест. Инфраструктура выигрывает от того, что Linux управляет значительной частью глобальной серверной инфраструктуры, что делает эти оптимизированные конфигурации проверенными и надежными.
Всего за 3,96 доллара в месяц вы получаете среду профессионального уровня, идеально подходящую для отработки методов управления портами. Несколько расположений центров обработки данных позволяют тестировать геораспределенные настройки, а круглосуточная поддержка помогает со сложными конфигурациями брандмауэра или устранением неполадок, связанных с портами. Независимо от того, учитесь ли вы проверять открытые порты в Linux или развертываете производственные сервисы, наличие гибкой среды VPS ускоряет реализацию вашей безопасности.
Заключение
Итак, как лучше всего проверить открытые порты? Проще говоря, его нет. Для быстрой локальной проверки используйте ss или netstat, чтобы выполнить работу без суеты. Когда вам нужен комплексный аудит безопасности, Nmap все покажет. Чтобы отследить, какой процесс владеет портом, lsof экономит часы угадывания. PowerShell объединяет Windows и Linux, когда вам нужна удаленная проверка.
Настоящий урок здесь не в запоминании команд. Речь идет о том, чтобы сделать проверку портов рутиной, а не панической реакцией. Запланируйте еженедельное сканирование, закройте неиспользуемые порты, как только вы их обнаружите, и документируйте, каким сервисам какие порты нужны. Такой подход превращает проверку портов из реагирования на пожар в превентивную защиту.