Изучите свою сеть наизнанку, регулярно проверяя открытые порты с помощью этих команд Linux.

Открытые сетевые порты — это самые простые точки входа в вашу сеть. Иногда на портах, видимых извне из Интернета, могут работать нежелательные службы. Если эти службы уязвимы, ваша сеть будет находиться под постоянной угрозой атаки, поскольку каждый день весь Интернет подвергается массовому сканированию на наличие уязвимых служб на открытых портах.

Узнайте, как сканировать и просматривать открытые порты в ваших системах Linux, чтобы защитить свою сеть от угроз.

Что такое сетевые порты?

Сетевые порты — это логические точки доступа вашей системы, которые можно использовать в качестве канала для размещения нескольких служб. Порт представлен 16-битным целым числом, поэтому наибольший номер порта — 65535.

Вы можете думать о портах как об окнах и дверях дома — в основном обо всех различных точках входа в дом или компьютер. Порты бывают трех типов: системные порты (1–1023), зарегистрированные порты (1024–49151) и эфемерные или динамические порты (49152–65535).

instagram viewer

Когда вы запускаете приложение, которому требуется подключение к Интернету, оно использует динамические порты для передачи и получения данных по сети. Однако когда вы запускаете веб-сервер или сервер SSH, он обычно привязывается к системным портам или зарегистрированным портам.

Для веб-серверов, обслуживающих HTTP, системный порт по умолчанию — 80, а для SSH — 22. Эти правила, такие как диапазоны портов, разработаны Управлением по присвоению номеров в Интернете (IANA). Вы можете пройти через RFC относительно портов чтобы получить полный список всех портов и их функций.

Важно, чтобы вы знали наиболее часто уязвимые порты так что вы можете убедиться, что они закрыты или защищены.

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

netstat — популярная утилита, которую вы можете использовать для просмотра сетевой статистики вашей системы Linux. Это часть пакета net-tools.

Пакет net-tools теперь устарел из-за отсутствия надлежащего обслуживания со стороны разработчика. Это также причина, по которой вы можете столкнуться с ошибка "ifconfig: команда не найдена" при запуске популярной команды ifconfig в Linux.

Таким образом, в современных системах вам, возможно, придется сначала установить пакет net-tools, а затем вы сможете запустить команду netstat. Вот как проверить открытые порты с помощью netstat:

netstat -тулн

Объяснение команды:

  • показывает порты TCP.
  • показывает UDP-порты.
  • показывает порты прослушивания. Замените это на а если вы хотите видеть все порты, независимо от их состояния.
  • показывает числовое значение портов вместо разрешения имен служб. Например, показать порт 22 вместо SSH, т.е. службу, работающую на порту.

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

ss — это современный эквивалент инструмента netstat. Вы найдете его предустановленным во всех современных дистрибутивах Linux. Синтаксис проверки открытых портов с помощью ss идентичен netstat.

Вот как проверить открытые порты с помощью ss:

сс-тулн

Объяснение команды:

  • показывает порты TCP.
  • показывает UDP-порты.
  • показывает порты прослушивания. Замените это на а если вы хотите видеть все порты, независимо от их состояния.
  • показывает числовое значение портов вместо разрешения имен служб. Например, показать порт 21 вместо FTP, т. е. службу, работающую на порту.

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

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

Более того, если вы хотите проверить открытые порты в удаленной системе с настроенными IDS/IPS и установленными брандмауэрами, не беспокойтесь, потому что Nmap также может обходить брандмауэры и IDS/IPS с помощью соответствующих переключателей.

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

Вот команда для проверки открытых портов с помощью Nmap:

nmap -sTU -sV  -T 5 --min-rate 9000 --min-parallelism 9000 --initial-rtt-timeout 50ms --max-rtt-timeout 3000ms --max-retries 50 -Pn --disable-arp-ping -n -- скрипт vuln, эксплойт, авторизация -v -oX 

Объяснение команды:

  • -сТУ задает тип сканирования TCP Connect и сканирование UDP.
  • -Т 5 устанавливает агрессивный шаблон времени для молниеносного быстрого сканирования (не рекомендуется для незащищенной системы, так как это может привести к DoS-атаке).
  • -sV включает сервисное сканирование.
  • --минимальная скорость 9000 указывает Nmap отправлять 9000 пакетов в секунду.
  • --initial-rtt-timeout 50 мс указывает Nmap сначала ждать 50 мс ответа на каждый отправляемый SYN-пакет.
  • --max-rtt-timeout 3000 мс говорит Nmap ожидать ответа максимум 3000 мс.
  • --мин-параллелизм 9000 устанавливает минимальное количество одновременных запусков скрипта на 9000.
  • --max-повторных попыток 50 говорит Nmap повторить попытку 50 раз для подключения к порту.
  • -Пн отключает проверку связи.
  • --отключить-арп-пинг отключает ARP-зондирование.
  • отключает разрешение DNS.
  • --script vuln, эксплойт, авторизация запускает три скрипта для проверки различных типов уязвимостей в обнаруженных портах.
  • -v возвращает подробный вывод.
  • -ОХ сохраняет результаты в файл XML.
  • -6 Необязательный параметр для сканирования адресов IPv6.

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

Команда lsof в Linux используется для вывода списка открытых файлов. Однако, если вы добавите к нему несколько переключателей, вы сможете увидеть открытые интернет-соединения и порты на вашем локальном компьютере. Вот как проверить открытые порты с помощью lsof:

lsof -i -n

Объяснение команды:

  • перечисляет все сетевые и интернет-файлы.
  • не разрешает имена хостов.

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

netcat — это утилита командной строки, которая позволяет вам читать и писать из и в соединения TCP/UDP. Обратите внимание, что это только одна функция netcat. Вы можете проверить его справочную страницу, используя человек чтобы изучить все его функции и способы их использования.

Вот как вы можете использовать netcat для сканирования открытых портов:

нк -зв  | grep -v "отказался"

Объяснение команды:

  • -z переводит netcat в режим сканера.
  • -v возвращает подробный вывод.
  • grep -v "отказался" возвращает выходные строки без слова «отказался». Это делается для того, чтобы терминал не засорялся сообщениями об отказе в соединении, когда netcat не получает выходных данных с порта.
  • 2>&1: это необязательный переключатель, который может потребоваться для работы grep при запуске netcat в подробном режиме. netcat возвращает вывод в stderr (обозначается цифрой 2). Таким образом, чтобы вывести вывод, вам нужно перенаправить stderr на stdout (обозначается 1), а затем передать его в grep.

Чем глубже вы знаете свою сеть, тем лучше вы сможете ее защитить

Знание того, какие порты открыты и какие службы работают в вашей системе, — отличный шаг к ее защите от возможных внешних атак. Это позволяет искать и отключать ненужные службы, находить устаревшие службы, а также определить, есть ли какие-либо вредоносные файлы, такие как бэкдоры bind или reverse shell, работающие на вашем система.

Если вы серьезно относитесь к сетевой безопасности, вам следует подумать об установке и настройке решения IDS для отслеживания всей активности в вашей сети и применения наборов правил для предотвращения нежелательных подключений.