IP-адрес вказує, на який сервер іде запит, та однієї адреси недостатньо: на одному сервері водночас працюють веб-сайт, пошта і панель керування. За розподіл між ними відповідають порт, сокет і служба — три поняття, які часто плутають між собою, хоча за ними стоїть зовсім інша логіка роботи.
Що таке порт, сокет і служба
Порт — числовий ідентифікатор від 1 до 65535, який вказує конкретний застосунок на сервері. Служба — це сама програма, яка слухає певний порт і обробляє вхідні підключення, наприклад nginx чи sshd. Сокет — комбінація IP-адреси і порту, яка однозначно описує кінцеву точку одного конкретного зʼєднання. На сервері водночас може існувати багато сокетів з однаковим локальним портом, якщо відрізняється адреса чи порт на іншому боці зʼєднання.
Чим порт відрізняється від IP-адреси
Різниця стає зрозумілішою під час порівняння цих двох ідентифікаторів поряд.
| Ознака | IP-адрес | Порт |
|---|---|---|
| Що визначає | Конкретний сервер у мережі | Конкретну службу на сервері |
| Діапазон значень | Чотири числа 0-255 | Число від 1 до 65535 |
| Аналогія | Адреса будинку | Номер квартири в будинку |
Як формується сокет
Коли браузер відкриває сторінку, операційна система зʼєднує IP-адресу сервера і порт служби в єдиний сокет — саме його видно у виводі мережевих утиліт на боці сервера.
Локальна адреса Іноземна адреса Стан
203.0.113.10:80 198.51.100.20:52344 ESTABLISHED
203.0.113.10:22 198.51.100.21:49871 ESTABLISHED
Які порти зайняті стандартними службами
Частину портів закріплено за відомими службами за угодою і рідко використовують для чогось іншого, що спрощує налаштування веб-сервера і файрвола.
- 22 — служба SSH, віддалене керування сервером.
- 80 — служба HTTP, звичайні веб-сторінки без шифрування.
- 443 — служба HTTPS, веб-сторінки із шифруванням TLS.
- 3306 — служба MySQL, підключення до бази даних.
Докладне налаштування веб-сервера, який слухає порти 80 і 443, розібрано в статті про налаштування nginx, а базові поняття адресації — в матеріалі про IPv4-адреси.
Як закрити або відкрити порт
Доступність порту ззовні регулює файрвол: навіть якщо служба слухає порт локально, файрвол здатен блокувати вхідні підключення до нього з інтернету. Налаштування типового файрвола на VDS докладно описано в статті про ufw на VPS — там же розібрано, чому відкритий порт без запущеної служби цілком безпечний сам по собі. На практиці закривають доступ до портів керування і баз даних, залишаючи ззовні лише те, що справді мусить приймати публічні підключення.
Що робити: як перевірити відкриті порти на сервері
Перш ніж змінювати правила файрвола, корисно побачити реальну картину зайнятих портів.
- Виконайте команду ss -tlnp, аби побачити список портів, які слухають локальні служби.
- Зіставте список з очікуваним набором служб — зайвий відкритий порт може означати забутий сервіс чи вразливість.
- Перевірте поточні правила файрвола і звірте їх із реально потрібними портами з попереднього кроку.
- Закрийте у файрволі порти служб, які не мають бути доступні ззовні, залишивши доступ лише там, де він потрібен.
Часті питання
Чи може один порт обслуговувати одразу дві різні служби?
Ні, той самий порт на одній IP-адресі в один момент часу здатна слухати лише одна служба — спроба запустити другу програму на зайнятому порту завершиться помилкою. Різні служби для одного порту розводять через різні IP-адреси або через проксі-сервер перед ними.
Чому деякі порти звуть «привілейованими»?
Порти від 1 до 1023, включно з 22 і 80, у Linux традиційно здатен відкрити лише процес із правами root, що історично знижувало ризик підміни системних служб звичайним користувачем. Порти вище цього діапазону такого обмеження не мають.
Чи варто змінювати порт SSH з 22 на нестандартний?
Зміна порту не робить сервер невразливим, та помітно знижує кількість автоматичних спроб підбору пароля ботами, які скановують саме порт 22. Це додатковий захід, а не заміна нормальному налаштуванню доступу і файрвола.