Більшість людей вважають перевірку відкритих портів завданням виключно для фахівців з безпеки - аж поки їхній сервер не зламують через відкритий порт, про який вони навіть не підозрювали. Перевірити відкриті порти в Linux можна за допомогою вбудованих команд: netstat, ss, lsof, nmap і netcat, або виконати віддалене сканування портів через PowerShell із систем Windows. Кожен метод дає різний рівень деталізації й потребує різних прав доступу.
Управління портами стає дедалі важливішим. Автоматизовані розвідувальні атаки не вщухають, а зловмисники постійно шукають вразливі точки входу. Незалежно від того, чи захищаєте ви production-сервери, чи тестуєте локальні сервіси, знання основ безпеки портів - це необхідна умова для підтримки надійної та захищеної системи.
Стисле: Швидкий огляд
- Використовуйте 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. Кожен запис дає змогу одразу побачити активні сервіси та їхній мережевий стан.
Той Linux команда netstat пропонує додаткові прапори для детальнішого аналізу. Прапор -p показує, який процес відповідає за кожне з'єднання, однак для цього потрібні права root. Наприклад, sudo netstat -tulnp показує як порт, так і ідентифікатор процесу, що його використовує.
Використання команди 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] покаже всі мережеві з'єднання для цього конкретного ідентифікатора процесу.
Сканування портів за допомогою 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, надсилати сповіщення електронною поштою або запускати автоматичні дії залежно від стану порту, що робить його зручним інструментом для моніторингу гібридних середовищ.
Порівняння методів сканування портів
| Інструмент | Синтаксис команди | Найкраще для | Передумови |
| 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 | Надсилання електронної пошти |
| 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, коли потрібна віддалена перевірка.
Головний урок тут не в тому, щоб вивчити команди напам'ять. Він у тому, щоб зробити аудит портів регулярною практикою, а не реакцією на інцидент. Плануйте щотижневі сканування, закривайте невикористовувані порти одразу після виявлення та документуйте, які сервіси потребують яких портів. Такий підхід перетворює перевірку портів із хаотичного реагування на планомірний захист.