Проверить открытые порты в Linux — 5 способов
Изучите свою сеть изнутри, регулярно проверяя открытые порты с помощью этих команд Linux.
Открытые сетевые порты — это самые простые точки входа в вашу сеть. Иногда нежелательные службы могут работать на портах, видимых извне из Интернета. В случае, если эти сервисы уязвимы, ваша сеть будет находиться под постоянной угрозой атаки, так как каждый день весь интернет массово сканируется на наличие уязвимых сервисов через открытые порты.
Узнайте, как сканировать и отображать открытые порты в ваших системах Linux, чтобы защитить вашу сеть от угроз.
Что такое сетевые порты?
Сетевые порты — это логические точки доступа системы, которые можно использовать в качестве канала для размещения нескольких служб. Порт представлен 16-битным целым числом, поэтому наибольший номер порта — 65535.
Вы можете думать о портах как об окнах и дверях дома — по сути, обо всех различных точках входа в дом или компьютер. Существует три типа портов: системные порты (1–1023), зарегистрированные порты (1024–49151) и временные или динамические порты (49152–65535).
Когда вы запускаете программу, которой требуется подключение к Интернету, она использует динамические порты для отправки и получения данных по сети. Однако когда вы запускаете веб-сервер или SSH-сервер, он обычно привязывается к системным портам или зарегистрированным портам.
Для веб-серверов, обслуживающих HTTP, системный порт по умолчанию — 80, а для SSH — 22. Эти правила, такие как диапазоны портов, разработаны Управлением по присвоению номеров в Интернете (IANA). Полный список всех портов и их функций можно просмотреть в документе Ports RFC.
Важно, чтобы вы знали наиболее уязвимые порты, чтобы убедиться, что они закрыты или защищены.
1. Проверьте наличие открытых портов с помощью netstat
netstat — это популярный инструмент, который вы можете использовать для просмотра сетевой статистики вашей системы Linux. Это часть пакета net-tools.
Пакет nettools в настоящее время устарел из-за отсутствия надлежащего обслуживания со стороны разработчиков. По этой же причине вы можете столкнуться с ошибкой «ifconfig: команда не найдена» при запуске популярной команды ifconfig в Linux.
Поэтому в современных системах может потребоваться сначала установить пакет net-tools, а затем запустить команду netstat. Как проверить открытые порты с помощью netstat:
netstat -tuln
Объяснение команды:
- -t показывает порты TCP.
- -u показывает порты UDP.
- — I показываю порты прослушивания. Замените это на единицу, если вы хотите видеть все порты независимо от состояния.
- -n Отображает числовое значение портов вместо преобразования в имена служб. Например, показать порт 22 вместо SSH, т.е сервис, работающий на этом порту.
2. Проверьте наличие открытых портов с помощью ss
ss — это современный эквивалент утилиты netstat. Вы найдете его предустановленным во всех современных дистрибутивах Linux. Синтаксис проверки открытых портов с помощью ss идентичен netstat.
Чтобы проверить открытые порты с помощью ss:
ss -tuln
Объяснение команды:
- -t показывает порты TCP.
- -u показывает порты UDP.
- — I показываю порты прослушивания. Замените это на единицу, если вы хотите видеть все порты независимо от состояния.
- -n Отображает числовое значение портов вместо преобразования в имена служб. Например, показать порт 21 вместо FTP, т.е служба работает на этом порту.
3. Проверьте наличие открытых портов с помощью Nmap
Nmap — один из самых популярных инструментов для кибербезопасности и работы в сети. Это обычное название, когда речь идет о тестировании на проникновение в сетевую безопасность. Его основным вариантом использования является сканирование портов, поэтому вы не только получаете информацию об открытых портах в вашей системе, но также и о том, являются ли они уязвимыми и пригодными для эксплуатации.
Кроме того, если вы хотите проверить открытые порты в удаленной системе с настроенными IDS/IPS и установленными брандмауэрами, не беспокойтесь, потому что Nmap также может обходить брандмауэры и IDS/IPS с помощью правильных переключателей.
Ознакомьтесь с этим подробным руководством для начинающих по Nmap, чтобы узнать о различных функциях Nmap и о том, как их использовать. Хотя вы можете, пытаться обойти брандмауэры не рекомендуется, так как это не является полностью безопасным, поэтому лучше всего использовать SSH на удаленном сервере, а затем запустить Nmap на нем локально.
Вот команда для проверки открытых портов с помощью Nmap:
nmap -sTU -sV -T 5 —минимальная скорость 9000 —минимальный параллелизм 9000 —initial-rtt-timeout 50ms —max-rtt-timeout 3000ms —max-attempts 50 -Pn —disable-arping -n —vuln script , эксплуатация, аутентификация -v -oX
Объяснение команды:
- -sTU задает тип сканирования TCP Connect и сканирование UDP.
- -T 5 устанавливает агрессивный временной шаблон для молниеносного сканирования (не рекомендуется в небезопасной системе, так как это может привести к DoS-атаке).
- -sV включает сканирование службы.
- —minimum rate 9000 указывает Nmap отправлять 9000 пакетов в секунду.
- —initial-rtt-timeout 50ms указывает Nmap сначала ждать ответа на каждый отправляемый SYN-пакет в течение 50 мс.
- —max-rtt-timeout 3000ms указывает Nmap ожидать ответа максимум 3000 мс.
- —min-concurrency 9000 устанавливает минимальное количество одновременных запусков скриптов равным 9000.
- —max-retries 50 указывает Nmap повторить попытку 50 раз для подключения к порту.
- -Pn отключает пинг.
- —disable-arp-ping отключает проверку ARP.
- -n отключает разрешение DNS.
- —script vuln,exploit,auth запускает три скрипта для проверки различных типов уязвимостей в обнаруженных портах.
- -v возвращает подробный вывод.
- -OX сохраняет результаты в файл XML.
- -6 Необязательный параметр для сканирования адресов IPv6.
4. Проверьте наличие открытых портов с помощью lsof
Команда lsof в Linux используется для вывода списка открытых файлов. Но если вы добавите к нему несколько переключателей, вы сможете увидеть открытые интернет-соединения и порты на вашем локальном компьютере. Как проверить открытые порты с помощью lsof:
lsof -i -n
Объяснение команды:
- -I показываю все сетевые и интернет-файлы.
- -n не разрешает имена хостов.
5. Проверьте наличие открытых портов с помощью netcat
netcat — это утилита командной строки, которая позволяет вам читать и записывать в TCP/UDP-соединения и из них. Обратите внимание, что это только одна из функций netcat. Вы можете прочитать руководство с помощью команды man netcat, чтобы увидеть все функции и способы их использования.
Вот как использовать netcat для сканирования открытых портов:
nc -zv <ip-address> <start_port-end_port> | grep -v "refused"
Объяснение команды:
- -z переводит netcat в режим сканирования.
- -v возвращает подробный вывод.
- grep -v «denied» возвращает строки вывода без слова «denied». Это необходимо для предотвращения загрязнения терминала сообщениями об отказе в соединении, когда netcat не получает вывод из порта.
- 2>&1: Это дополнительный переключатель, который вам может понадобиться для работы grep при запуске netcat в подробном режиме netcat возвращает вывод в stderr (обозначается 2). Итак, чтобы обработать вывод grep, вам нужно перенаправить stderr на stdout (обозначается цифрой 1), а затем передать его grep.
Чем Глубже Вы знаете Свою Сеть, тем лучше сможете ее защитить
знание того, какие порты открыты и какие службы запущены в вашей системе, — отличный шаг к ее защите от возможных внешних атак. Это позволяет вам искать и отключать ненужные службы, находить устаревшие службы, а также узнавать, есть ли в вашей системе какие-либо вредоносные файлы, такие как бэкдоры привязки или обратной оболочки, работающие в вашей системе.
Если вы серьезно относитесь к сетевой безопасности, рассмотрите возможность установки и настройки решения IDS для мониторинга всей активности в вашей сети и применения правил для предотвращения нежелательных подключений.