15%

Збережіть 15% на всі хостинг-послуги

Перевірте свої навички і отримайте Знижку на будь-який план хостингу

Використовуй код:

Skills
Почати
25.12.2024

Перевірка відкритих та прослуховуваних портів у Linux за допомогою Netstat та SS

Моніторинг відкритих та прослуховуваних портів у системі Linux — це одна з найфундаментальніших практик для підтримання безпеки сервера, діагностики проблем мережі та ефективного управління інфраструктурою. Незалежно від того, чи ви запускаєте виробничий веб-сервер, середовище VPS Hosting або Dedicated Server, розуміння того, які саме порти відкриті — і які сервіси до них прив’язані — дає вам видимість, необхідну для запобігання несанкціонованому доступу, виявлення неправильних конфігурацій та усунення непотрібних поверхонь атак.

У цьому комплексному посібнику ми розглянемо, як використовувати команди netstat та ss для перевірки відкритих та прослуховуваних портів у будь-якій системі Linux, порівняємо їхні переваги та представимо додаткові інструменти, такі як lsof та nmap, для глибшого аналізу мережі.

Чому моніторинг відкритих портів має значення

Кожен відкритий порт на вашому сервері представляє потенційну точку входу. Сервіси, які неправильно налаштовані, застарілі або просто забуті, можуть піддати вашу систему експлуатації. Регулярний аудит прослуховуваних портів дозволяє вам:

  • Виявити несанкціоновані сервіси, що запущені на неочікуваних портах
  • Виявити спроби вторгнення або скомпрометовані процеси
  • Перевірити, що правила брандмауера працюють як передбачено
  • Підтвердити, що щойно розгорнуті додатки прив’язані до правильних інтерфейсів
  • Закрити невикористовувані порти, щоб зменшити поверхню атак

Це особливо критично для адміністраторів, які керують середовищами Shared Web Hosting або серверами з кількома орендаторами, де одночасно запущено кілька сервісів.

Розуміння портів та їхніх типів

Перш ніж переходити до інструментів, важливо розуміти термінологію, яку ви зустрінете у виводі команд.

ТермінОпис
Відкритий портПорт, на якому додаток активно прослуховує вхідні з’єднання
Прослуховуваний портПорт, прив’язаний до сервісу, який чекає на мережевий трафік
TCP (Transmission Control Protocol)Орієнтований на з’єднання, надійний, використовується HTTP, SSH, FTP тощо
UDP (User Datagram Protocol)Без з’єднання, швидший, але менш надійний, використовується DNS, NTP тощо

Перевірка портів за допомогою netstat

Що таке netstat?

netstat (мережеві статистики) — це класична утиліта командного рядка, яка надає детальну інформацію про мережеві з’єднання, таблиці маршрутизації, статистику інтерфейсів та прослуховувані порти. Хоча вона офіційно застаріла на користь ss у сучасних дистрибутивах, вона залишається широко використовуваною та все ще присутня на багатьох застарілих системах.

Встановлення netstat

Команда netstat є частиною пакета net-tools, який може бути не встановлений за замовчуванням у сучасних дистрибутивах Linux.

Debian / Ubuntu:

sudo apt install net-tools

CentOS / RHEL / AlmaLinux / Rocky Linux:

sudo yum install net-tools

Використання netstat для перевірки відкритих та прослуховуваних портів

Щоб відобразити всі прослуховувані TCP та UDP порти у вашій системі, виконайте таку команду:

sudo netstat -tuln

Розбір прапорців:

ПрапорецьОпис
-tПоказати TCP порти
-uПоказати UDP порти
-lПоказати тільки прослуховувані порти
-nВідобразити числові адреси замість розв’язування імен хостів

Приклад виводу

Proto  Recv-Q  Send-Q  Local Address     Foreign Address   State
tcp         0       0  0.0.0.0:22        0.0.0.0:*         LISTEN
tcp         0       0  0.0.0.0:80        0.0.0.0:*         LISTEN
tcp6        0       0  :::443            :::*              LISTEN
udp         0       0  0.0.0.0:53        0.0.0.0:*

Розуміння стовпців виводу

  • Локальна адреса — IP адреса та номер порту, на якому прослуховує сервіс. 0.0.0.0 означає, що сервіс прослуховує на всіх доступних інтерфейсах.
  • Віддалена адреса — віддалена IP та порт для активних з’єднань. Зірочка (*) означає, що з’єднання ще не встановлено.
  • Стан — стан з’єднання. LISTEN вказує, що порт відкритий і чекає на вхідні з’єднання.

Фільтрування конкретних портів за допомогою netstat

Ви можете передати вивід через grep для ізоляції конкретного порту або сервісу. Наприклад, щоб перевірити, чи щось прослуховує на порту 80 (HTTP):

sudo netstat -tuln | grep ":80"

Щоб перевірити порт 443 (HTTPS), який необхідний для серверів з встановленими SSL Certificates:

sudo netstat -tuln | grep ":443"

Щоб також відобразити назву процесу та PID, відповідальні за кожне з’єднання, додайте прапорець -p:

sudo netstat -tulnp

Перевірка портів за допомогою ss

Що таке ss?

ss (статистика сокетів) — це сучасна заміна для netstat. Вона швидша, більш ефективна та надає багатший вивід — особливо на системах з великою кількістю одночасних з’єднань. Команда ss включена за замовчуванням практично у всіх сучасних дистрибутивах Linux і не потребує додаткового встановлення.

Використання ss для перевірки відкритих та прослуховуваних портів

Синтаксис ss тісно відповідає синтаксису netstat, що робить перехід простим:

ss -tuln

Розбір прапорців:

ПрапорецьОпис
-tПоказати TCP сокети
-uПоказати UDP сокети
-lПоказати тільки прослуховувані сокети
-nВідобразити числові адреси

Приклад виводу

Netid  State   Recv-Q  Send-Q  Local Address:Port   Peer Address:Port
tcp    LISTEN  0       128     0.0.0.0:22            0.0.0.0:*
tcp    LISTEN  0       511     0.0.0.0:80            0.0.0.0:*
tcp    LISTEN  0       511        [::]:443             [::]:*
udp    UNCONN  0       0       0.0.0.0:53            0.0.0.0:*

Розширене використання ss

Команда ss пропонує низку розширених опцій фільтрування та відображення, які виходять далеко за межі можливостей netstat.

Показати тільки прослуховувані TCP порти

ss -tl

Показати тільки прослуховувані UDP порти

ss -ul

Відобразити назви процесів та PID

Щоб визначити, який саме процес використовує конкретний порт, використовуйте прапорець -p:

ss -tulnp

Це одна з найкорисніших команд для усунення неполадок — вона показує назву процесу та PID поряд з кожним прослуховуваним сокетом, що робить відразу зрозумілим, який додаток володіє яким портом.

Приклад виводу з прапорцем -p

Netid  State   Local Address:Port   Process
tcp    LISTEN  0.0.0.0:80           users:(("nginx",pid=1234,fd=6))
tcp    LISTEN  0.0.0.0:22           users:(("sshd",pid=987,fd=3))
tcp    LISTEN  0.0.0.0:3306         users:(("mysqld",pid=2345,fd=21))

Фільтрування за конкретним портом

Щоб перевірити, який процес прослуховує порт 8080:

ss -tulnp | grep ":8080"

Показати всі встановлені TCP з’єднання

ss -tn state established

Показати статистику підсумків

ss -s

Це надає швидкий підсумок загальної кількості сокетів за типом та станом — корисно для виявлення незвичайних обсягів з’єднань.

netstat проти ss: пряме порівняння

Функція`netstat``ss`
ПродуктивністьПовільніше на завантажених системахЗначно швидше
Доступність за замовчуваннямПотребує пакета net-toolsПопередньо встановлено на сучасних дистрибутивах
Опції фільтруванняБазові (потребує grep)Розширені вбудовані фільтри
Інформація про процесДоступна з -pДоступна з -p
Деталізація виводуСтандартнаБільш детальна інформація про сокети
Рекомендується дляЗастарілі системи, знайомістьСучасні середовища Linux

Коли використовувати netstat

  • На старіших системах Linux, де ss недоступна
  • При роботі зі скриптами або документацією, написаною навколо синтаксису netstat
  • Для швидких перевірок на системах, де net-tools вже встановлена

Коли використовувати ss

  • На будь-якому сучасному дистрибутиві Linux (Ubuntu 20.04+, CentOS 8+, Debian 10+ тощо)
  • Коли вам потрібен швидший вивід на серверах з високим трафіком
  • Для розширеного фільтрування та детального аналізу сокетів

Додаткові інструменти для аудиту портів

Поза netstat та ss, кілька інших утиліт цінні для ретельного аудиту портів.

Використання lsof

lsof (список відкритих файлів) розглядає мережеві сокети як файли, що робить це ще одним потужним способом визначити, який процес використовує

15%

Збережіть 15% на всі хостинг-послуги

Перевірте свої навички і отримайте Знижку на будь-який план хостингу

Використовуй код:

Skills
Почати