Новорічні -20% на Хостинг, VPS та Сервери з промокодом “NY26” до 12.01.2026

🎄 Різдвяні термоси у подарунок до кожного Хостингу або VPS

Отримати подарунок

Новорічні -20% на Хостинг, VPS та Сервери з промокодом “NY26” до 12.01.2026

Як приховати відкриті порти на VPS та зупинити сканування ботами

post thumbnail

VPS-сервери для розміщення різних проєктів – від невеликих сайтів до робочих середовищ для розробників. Це зручний спосіб отримати окреме серверне оточення, де можна самостійно керувати ресурсами, встановлювати потрібні сервіси та налаштовувати систему під себе, не залежачи від обмежень спільного хостингу.

Однак, навіть найшвидший VPS може стати вразливим, якщо його мережеві порти залишаються без належного контролю. Відкриті порти привертають увагу ботів та автоматизованих сканерів, створюючи зайве навантаження та потенційні загрози безпеці.

У цій статті ми розглянемо дієві підходи до управління портами на VPS, ґрунтуючись на принципі мінімізації поверхні атаки. Основний принцип полягає у мінімізації всіх непотрібних точок входу, які можуть стати ціллю для атак. Ми розглянемо, як зробити порти менш помітними для сторонніх сканерів, обмежити доступ лише довіреним адресам та зменшити кількість даних, які можуть підказати ботам потенційні вразливості.

Як працюють порти на VPS

Порти визначають, через які канали сервер приймає та відправляє мережевий трафік. Кожен порт має унікальний номер від 0 до 65535 та асоціюється з конкретним сервісом або протоколом. IP-адреса вказує на сервер, а порт – на конкретну службу всередині нього.

Мережеві порти поділяються на кілька основних типів:

  • Перший тип – well-known ports або відомі порти (0–1023). Це порти, які використовуються системними та стандартними сервісами: SSH, HTTP, HTTPS, SMTP та інші. Вони зазвичай зарезервовані під базові протоколи.
  • Другий тип – registered ports або зареєстровані порти (1024–49151). Це порти, які офіційно зареєстровані під певні сервіси й застосунки. Наприклад, MySQL, PostgreSQL, різні панелі керування на кшталт cPanel або Plesk працюють у цьому діапазоні.
  • Третій тип – динамічні або приватні порти (49152–65535). Це динамічні або приватні порти, які використовуються клієнтськими застосунками для встановлення тимчасових сесій. Вони відкриваються автоматично під конкретні з’єднання й не прив’язані до певного сервісу.

Налаштування відкритих портів на VPS залежать від конфігурації сервера та встановлених сервісів. Наприклад, системна оболонка може відкривати базові порти для SSH або вебсервісів, а панель керування – додаткові порти для адміністрування. 

Процес керування портами передбачає контроль доступності мережевих портів на VPS. Ви самі визначаєте, які служби повинні бути доступними назовні, а які варто ізолювати, щоб мінімізувати ризики й обмежити потенційні точки атаки.

Які порти найчастіше потрапляють під атаку

Найчастіше зловмисники сканують сервери у пошуках стандартних портів відомих служб. Відкритий порт одразу стає потенційною точкою атаки, тому важливо знати, які з них найчастіше націлені.

SSH (порт 22) – це одна з головних цілей атак. Через нього часто проводять брутфорс-атаки, намагаючись підібрати логін і пароль. Якщо залишити порт у стандартному вигляді, він миттєво потрапляє у сканери ботів.

FTP (порт 21) часто використовується для масового перебору паролів. Через відсутність шифрування цей порт залишається вразливим і привабливим для атак.

RDP (порт 3389), що використовується Windows-серверами, регулярно сканується ботами. Основна мета – отримати віддалений доступ до системи для шкідливих дій або встановлення бекдорів.

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

SMTP (порт 25) – цей порт використовується для прийому та передачі пошти між серверами. Його часто сканують для перевірки на відкриті реле, коли сервер дозволяє відправку пошти стороннім користувачам без автентифікації. Така конфігурація може бути використана зловмисниками для розсилки спаму.

IMAP (порт 143) – використовується для доступу до пошти на сервері. За замовчуванням цей порт передає дані у відкритому вигляді, тому його варто блокувати зовнішньо або використовувати тільки через SSL/TLS (порт 993) для шифрування.

Вебпорти (80 та 443) мають бути відкритими, але саме через них відбуваються численні атаки: SQL-інʼєкції, brute force на логіни, сканування плагінів WordPress, спроби виявити конфігураційні файли та DDoS-запити. Важливо пам’ятати, що атака тут спрямована на застосунок, а не на сам порт.

При роботі з портами варто діяти обачно. Повне або хаотичне блокування всіх портів, що не використовуються, може заважати нормальній роботі серверів і програм, а також знижувати продуктивність мережі. Найкращий підхід – це розумний баланс: залишати відкритими лише ті порти, які потрібні для легальної роботи сервісів, і одночасно обмежувати доступ до тих, які часто стають мішенню атак. Так ви підвищуєте безпеку без шкоди для функціональності та зручності користувачів. Регулярний перегляд конфігурацій і аудит відкритих портів допомагає підтримувати цей баланс на постійному рівні.

Як перевірити відкриті порти на сервері

Одним із ключових аспектів безпеки сервера є розуміння того, які порти на ньому відкриті та доступні для зовнішніх підключень. Відкритий порт, за наявності вразливостей у сервісі, який його використовує, може стати точкою входу для зловмисників. Тому регулярна перевірка портів дозволяє виявити небажані або зайві сервіси, а також вчасно їх заблокувати, забезпечуючи безпеку та стабільність роботи сервера.

Коли ми говоримо про порти на сервері, часто зустрічаються терміни TCP та UDP – це два основні протоколи, за допомогою яких відбувається обмін даними в мережі.

TCP (Transmission Control Protocol) забезпечує надійну доставку даних: він перевіряє, чи всі пакети дійшли, і при необхідності повторно надсилає втрачені. Саме через TCP працюють такі сервіси, як вебсервери (HTTP/HTTPS), SSH, FTP та поштові протоколи (SMTP, IMAP). Порти TCP – це «двері», через які ці сервіси отримують і передають інформацію.

UDP (User Datagram Protocol) навпаки швидший та простіший, але не гарантує доставку пакетів. Його використовують для сервісів, де швидкість важливіша за надійність: відео- або аудіопотоки, онлайн-ігри, DNS-запити. Порти UDP – це «вхідні точки» для таких швидких потоків даних.

Коли ви перевіряєте відкриті порти, важливо знати, який протокол вони використовують. Від цього залежить, які типи трафіку проходять через сервер та які ризики можуть існувати.

На Linux-серверах для первинної перевірки можна використати одну з наступних команд: netstat або ss. Вони показують, які порти слухають, через які протоколи йде обмін даними, і який процес за це відповідає.

Якщо вам потрібно швидко з’ясувати, які TCP та UDP порти відкриті та прослуховуються на сервері, можна використати таку команду:

# netstat -tulnp

Вона покаже протокол, номер порту, статус з’єднання та процес, що відповідає за роботу цього порту.

Як приховати відкриті порти на VPS та зупинити сканування ботами | Wiki HostPro

Окрім netstat, у сучасних системах часто використовують утиліту ss, яка працює швидше та надає більш детальну інформацію. Для перевірки активних сокетів підійде команда:

# ss -tulnp

Вона відображає ті самі дані, але у більш структурованому форматі.

Как проверить открытые порты на сервере | Wiki HostPro

За потреби можна додати ключ -a, щоб побачити всі стани з’єднань, включно з неактивними:

# ss -tulnpa

Окрім комплексного виводу всіх мережевих сокетів, іноді виникає потреба побачити саме активні TCP-підключення або порти, що зараз відкриті для встановлення TCP-з’єднань. Для цього можна скористатися більш вузькоспеціалізованою командою:

# netstat -tn

У цьому випадку утиліта покаже лише TCP-з’єднання – як встановлені, так і ті, що перебувають у різних стадіях обробки. Такий підхід зручний під час діагностики підозрілої активності, аналізу навантаження на вебсервер або перевірки роботи сервісів, що використовують виключно TCP.

Утиліта ss виконує ті самі задачі, але забезпечує швидший вивід і детальнішу інформацію. Для перегляду активних TCP-сокетів можна використати:

# ss -tn

Якщо ж вас цікавить стан портів, які працюють по протоколу UDP, можна застосувати одну з аналогічних команд з іншим ключем:

# netstat -un

# ss -un

Вони виведуть всі UDP-сокети, які прослуховуються службами або використовуються локальними процесами. Така перевірка часто потрібна при діагностиці DNS-серверів, DHCP або VPN-служб, що працюють поверх UDP.

Ще один зручний інструмент для детальної перевірки портів – утиліта lsof. Вона дозволяє переглядати всі відкриті файли та сокети, включно з мережевими підключеннями. На Linux усе – навіть мережеві порти – розглядається як файли, тому lsof може відобразити, який саме процес використовує конкретний порт.

Щоб побачити всі мережеві з’єднання та прослуховувані порти, виконайте:

# lsof -i

У виведенні з’являться всі активні TCP і UDP сокети, а також інформація про:

  • PID процесу, який тримає відкритий порт;
  • користувача, від імені якого працює процес;
  • конкретний порт та протокол;
  • поточний стан з’єднання (LISTEN, ESTABLISHED тощо).

Які порти найчастіше потрапляють під атаку | Wiki HostPro

Ця команда зручна, коли вам потрібно швидко визначити, яка служба займає певний порт.

Також можна фільтрувати вивід під конкретний порт. Наприклад, щоб перевірити, що використовує 80-й порт:

# lsof -i :80

Або переглянути всі TCP-з’єднання:

# lsof -i tcp

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

Для оцінки доступності портів із зовнішньої мережі можна використовувати сканування за допомогою nmap. Цей інструмент дозволяє перевіряти, які порти доступні зовні та які служби відповідають на підключення.

На відміну від netstat, ss або lsof, команди Nmap потрібно запускати не на самому сервері, а з іншої машини – наприклад, з комп’ютера адміністратора. Це дозволяє побачити портову доступність саме з боку зовнішнього світу.

Зверніть увагу! Запускати Nmap з іншого VPS або хостингу небажано. Сканування портів може бути розцінене як підозріла активність, через що може бути надіслано попередження або ви можете отримати скаргу від сторони, чий сервер було проскановано, і як наслідок ваш сервер може бути заблоковано. Для перевірок краще використовувати власний локальний комп’ютер.

Для стандартного сканування відкритих портів використовується команда:

# nmap your_server_ip

Це базовий огляд, який покаже найпоширеніші порти, що відповідають на запити.

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

# nmap -sT your_server_ip

Обмеження доступу за допомогою фаєрвола | Wiki HostPro

За потреби можна вказати конкретні порти:

# nmap -p 22,80,443 your_server_ip

Nmap дозволяє оцінити реальну картину та допомагає виявити випадково відкриті порти, некоректні правила firewall або неправильну конфігурацію сервісів.

Якщо немає можливості виконати сканування самостійно, існують онлайн-сервіси для перевірки портів, такі як YouGetSignal Port Checker або Canyouseeme. Вони дозволяють швидко перевірити конкретний порт на відкритість із зовнішньої мережі. 

Таким чином, після перевірки доступності портів можна зробити висновки щодо того, які служби дійсно мають бути відкритими для зовнішнього доступу, а які варто обмежити або повністю закрити.

Обмеження доступу за допомогою фаєрвола

Фаєрвол або брандмауер є базовим рівнем захисту сервера, який контролює весь вхідний та вихідний трафік. Він дозволяє відкривати лише потрібні порти та блокувати решту, знижуючи ризик атак  та несанкціонованого доступу. На серверах Linux ви можете розглянути використання популярних інструментів для налаштування обмежень портів.

Блокування порту за допомогою iptables

Серед найбільш поширених інструментів для цього є iptables та nftables, які дозволяють детально контролювати мережевий трафік, що надходить і виходить з сервера.

Важливо розуміти, що ці утиліти працюють на дуже низькому рівні мережевої стекової взаємодії, тобто вони фільтрують пакети ще до того, як вони потраплять у будь-який серверний процес чи додаток. Саме тому вони є дуже потужним, але водночас складним інструментом – неправильна конфігурація може заблокувати доступ до сервера, включно з власним SSH-з’єднанням.

Iptables – це класичний інструмент для керування правилами фаєрволу на Linux. Він працює з таблицями, ланцюгами та правилами. Кожна таблиця відповідає за певний тип обробки пакетів, наприклад:

  • filter – для блокування чи дозволу трафіку;
  • nat – для трансляції адрес. 

Ланцюги (INPUT, OUTPUT, FORWARD) визначають, на якому етапі проходження пакет перевіряється. Щоб заблокувати порт, наприклад 22 (SSH), використовується команда:

# iptables -A INPUT -p tcp --dport 22 -j DROP

Тут -A INPUT додає правило в ланцюг INPUT, -p tcp означає протокол TCP, –dport 22 – порт призначення, а -j DROP визначає дію – відкинути пакет.

Важливо пам’ятати! iptables застосовує правила у порядку їхнього додавання, тому черговість має значення.

Для перевірки діючих правил використовується команда:

# iptables -L -n -v

Nftables – більш сучасна заміна iptables, яка більш гнучка для складних сценаріїв. Вона об’єднує різні типи обробки пакетів у єдину конфігураційну систему та використовує інший синтаксис. Правило для блокування порту 22 у nftables виглядає так:

# nft add rule inet filter input tcp dport 22 drop

Тут inet – сімейство протоколів IPv4/IPv6, filter – таблиця для фільтрації, input – ланцюг, tcp dport 22 – умова для TCP-пакетів на порт 22, drop – дія. 

Nftables дозволяє будувати більш складні структури, наприклад, групи IP-адрес чи динамічні набори, що робить його потужним інструментом для досвідчених адміністраторів.

Покладатися виключно на iptables у сучасних умовах не варто, оскільки цей інструмент має складний синтаксис і потребує глибокого розуміння мережевих процесів для безпечної роботи. Набагато раціональнішим є поєднання базових правил блокування портів із вищорівневими засобами керування, такими як Firewalld або UFW, які спрощують внесення та підтримку політик доступу. Разом із цим можуть застосовуватися й додаткові механізми автоматизованого захисту, що реагують на підозрілу активність без необхідності вручну формувати велику кількість правил. Такий підхід підвищує стабільність та безпечність роботи сервера, зменшуючи ризик помилок у конфігурації та надмірної складності налаштувань.

Особливістю iptables та nftables є те, що вони працюють на низькому рівні ядра і впливають на всі мережеві сервіси одночасно. Це означає, що блокування одного порту на цих рівнях є більш надійним, ніж обмеження доступу всередині додатків. Проте така специфічність вимагає уважності: адміністратору потрібно враховувати всі відкриті порти, протоколи та напрямки трафіку, щоб не завадити легітимній роботі серверних сервісів.

Блокування порту за допомогою Firewalld

Firewalld – це популярна система керування файрволом у Linux, яка використовує динамічні правила та зони безпеки. Firewalld дозволяє вносити зміни в правила без необхідності повного перезавантаження брандмауера, що забезпечує безперервність роботи мережевих служб. Основним інструментом для роботи з ним є утиліта firewall-cmd.

Firewalld є стандартним брандмауером у більшості дистрибутивів Linux, зокрема:

  • RHEL (Red Hat Enterprise Linux) 7+ та новіші;
  • Rocky Linux та AlmaLinux – актуальні заміни CentOS із повною підтримкою;
  • Fedora 18+;
  • openSUSE Leap тощо.

Перш ніж переходити до роботи з Firewalld, потрібно переконатися, що пакет доступний у вашій системі. Firewalld входить до стандартних репозиторіїв практично всіх актуальних Linux-дистрибутивів, тому його можна встановити за допомогою пакетного менеджера, який використовується у вашій системі.

Після встановлення Firewalld стане доступним як системний сервіс, який можна запускати, зупиняти й керувати ним через systemctl. Це дозволяє централізовано керувати правилами брандмауера та застосовувати їх без перезапуску всієї системи.

У системах на основі Red Hat (RHEL/ AlmaLinux/ Rocky Linux/ CentOS) використовується пакетний менеджер yum або його актуальна заміна dnf. Для встановлення Firewalld виконайте:

# dnf install firewalld -y

У дистрибутивах Debian-сімейства для роботи з пакетами використовується apt. Firewalld доступний у офіційних репозиторіях, тому достатньо виконати:

# apt install firewalld -y

Після інсталяції Firewalld потрібно ввімкнути як системний сервіс. Це дозволить керувати брандмауером та застосовувати правила одразу після перезавантаження сервера.

Щоб запустити Firewalld і додати його до автозавантаження виконайте наступні команди:

# systemctl start firewalld

# systemctl enable firewalld

Для перевірки, чи сервіс працює коректно:

# systemctl status firewalld

Після даних налаштувань можна розпочинати роботу з фаєрволом.

Щоб дозволити доступ до певного порту (наприклад, 8080 TCP), використовується команда:

# firewall-cmd --permanent --add-port=8080/tcp

# firewall-cmd --reload

Ключ –permanent – робить правило постійним після перезавантаження сервера, –reload – застосовує зміни без зупинки брандмауера.

Для кількох портів можна використовувати діапазон:

# firewall-cmd --permanent --add-port=3000-3010/tcp

# firewall-cmd --reload

Якщо порт більше не потрібен або його потрібно заблокувати:

# firewall-cmd --permanent --remove-port=8080/tcp

# firewall-cmd --reload

Це видаляє доступ до порту для всіх зовнішніх підключень.

Щоб порт був відкритий тільки для певного IP-адресу, використовується наступне правило, розглянемо його на прикладі порту SSH:

# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="тут_має_бути_ваша_IP" port port="22" protocol="tcp" accept'

# firewall-cmd --reload

source address – IP, якому дозволено доступ, port і protocol – порт та протокол.

Таким чином, доступ по SSH буде доступний з IP-адреси, яку додано до списку виключень, всі інші підключення до цього порту буде заблоковано.

Для обмеження доступу для підмережі можна вказати CIDR, наприклад:

# firewall-cmd --permanent --add-rich-rule=„rule family="ipv4" source address="203.0.113.0/24" port port="22" protocol="tcp" accept“

# firewall-cmd --reload

Щоб повністю відмовити у доступі до певного порту, використовується правило на заборону:

# firewall-cmd --permanent --add-rich-rule=„rule family="ipv4" port port="12345" protocol="tcp" reject“

# firewall-cmd --reload

За наведеним вище правилом всі підключення до порту 12345 будуть відхилені.

Щоб перевірити, чи відкритий або заблокований порт:

# firewall-cmd --query-port=22/tcp

yes – порт відкритий, no – порт закритий.

Блокування порту за допомогою UFW

UFW (Uncomplicated Firewall) – це простий у використанні інструмент для керування брандмауером на Linux-серверах. Його головна перевага полягає у зручності та зрозумілому синтаксисі, що дозволяє навіть початківцям без проблем налаштовувати доступ до портів та контролювати мережевий трафік. UFW працює як фронтенд для iptables, спрощуючи створення правил без необхідності вручну прописувати складні команди. Він підходить як для VPS, так і для фізичних серверів, де потрібно забезпечити базовий рівень захисту від несанкціонованого доступу.

UFW (Uncomplicated Firewall) доступний на Linux-дистрибутивах, які базуються на Debian/Ubuntu. 

Головна перевага UFW у тому, що він спрощує керування правилами брандмауера, не вимагаючи знань синтаксису iptables.

На Ubuntu або Debian встановлення виконується через стандартний пакетний менеджер:

# apt install ufw

Після встановлення потрібно дозволити критичні порти, щоб не втратити доступ до сервера. Наприклад, для SSH це:

# ufw allow 22/tcp

# ufw allow 80/tcp

# ufw allow 443/tcp

Після цього можна активувати UFW командою:

# ufw enable

При першій активації UFW відображає повідомлення про те, що всі порти, які явно не дозволені, будуть заблоковані. Це забезпечує базовий рівень безпеки зразу після включення.

Після активації важливо переконатися, що UFW працює та правила застосовані правильно. Для цього використовуються команди:

# ufw status

Вона показує список дозволених та заблокованих портів у простому вигляді, наприклад:

Блокування порту за допомогою iptables | Wiki HostPro

Для більш детальної інформації можна додати ключ verbose:

# ufw status verbose

Це дозволяє побачити протоколи, IP-адреси та додаткові параметри правил. Також можна перевірити, чи UFW активний як сервіс:

# systemctl status ufw

Якщо сервіс запущений і статус показує active (exited) або active (running), це означає, що брандмауер працює коректно.

UFW дозволяє не лише відкривати або блокувати порти для всіх користувачів, а й застосовувати більш точкові правила — наприклад, обмежувати доступ для окремих IP-адрес чи підмереж. Це зручно, коли певний сервіс повинен бути доступним лише вузькому колу користувачів. Наприклад, база даних, панель керування чи внутрішній API можуть бути відкриті лише для певних серверів або офісних IP-адрес.

Базовий приклад блокування доступу для конкретного IP виглядає так:

# ufw deny from 192.168.1.50 to any port 3306

У цьому випадку UFW блокує доступ до порту 3306 для IP-адреси 192.168.1.50, залишаючи порт доступним для інших користувачів. Так само можна обмежувати доступ для цілої підмережі:

# ufw deny from 192.168.1.0/24 to any port 3306

Таке правило блокує підключення до MySQL-порту для всіх хостів підмережі 192.168.1.0/24. Це корисно, коли потрібно відсікти трафік з певної мережевої ділянки, наприклад, якщо вона генерує підозрілу активність.

UFW також дозволяє створювати винятки з блокувань. Тобто можна заблокувати порт для всіх, але дозволити доступ окремим IP-адресам. Це дуже практичний підхід для критичних сервісів, які мають бути закриті загалом, але доступні адміністраторам або внутрішнім серверам.

Тобто, спочатку блокування для всіх:

# ufw deny 3306/tcp

Лише після блокування доступу до порту дозволяємо доступ певному IP:

# ufw allow from 203.0.113.10 to any port 3306

Важливо розуміти, що UFW обробляє правила згідно свого внутрішнього порядку, де allow для конкретного IP виступає винятком із загального deny. Завдяки цьому адміністратор може одночасно захистити порт від сторонніх підключень та зберегти доступ там, де це потрібно.

Ще один поширений сценарій – коли сервіс повинен працювати тільки в межах внутрішньої мережі:

# ufw allow from 10.0.0.0/24 to any port 5432 proto tcp

Тут порт 5432 (PostgreSQL) буде доступний лише з локальної підмережі, а всі інші підключення автоматично блокуються.

Як заблокувати або дозволити порт TCP/IP у брандмауері Windows

Брандмауер Windows – це вбудований інструмент безпеки, який контролює вхідний та вихідний трафік на сервері під управлінням Windows. Він дозволяє створювати точні правила для окремих програм, портів, IP-адрес або протоколів. Це особливо важливо для контролю доступу до певних служб, таких як RDP, FTP, SQL Server чи внутрішні API. Брандмауер працює за принципом списку дозволів та блокувань: якщо для порту або програми існує явне правило, воно має пріоритет над загальними налаштуваннями.

У Windows найбільш гнучкою є конфігурація через інструмент “Windows Defender Firewall with Advanced Security”. Це розширена консоль, де можна створювати правила для вхідних та вихідних підключень, вказувати тип протоколу, номер порту, напрямок трафіку, IP-адреси джерела та призначення. Усі правила працюють на рівні ядра системи, тому зміни вступають у силу миттєво й впливають на все мережеве обладнання комп’ютера.

Щоб дозволити доступ до певного порту в Windows Firewall, потрібно створити правило для вхідних підключень. Це корисно для таких сервісів, як вебсервери (порт 80/443), SQL Server (1433), служби віддаленого адміністрування, ігор або будь-яких кастомних додатків.

Відкрийте меню Пуск → введіть “Брандмауер Windows із розширеною безпекою” та запустіть консоль.

Блокування порту за допомогою Firewalld | Wiki HostPro

У лівій частині вікна виберіть Inbound Rules (Вхідні правила) та правій колонці натисніть New Rule… (Створити правило).

У виборі типу правила оберіть Port (Порт) та натисніть Next, після чого виберіть протокол: TCP або UDP.

У полі портів вкажіть конкретний порт (наприклад, 443) або діапазон портів. Виберіть Allow the connection (Дозволити підключення).

Вкажіть профілі, для яких правило має діяти – Domain, Private, Public.

Також, задайте назву правила, щоб легко його знайти в майбутньому (наприклад, “Allow HTTPS”).

Після внесення усіх налаштувань підтвердіть створення правила.

Блокування порту за допомогою UFW | Wiki HostPro

Після збереження правило одразу активується, та Windows Firewall починає пропускати весь вхідний трафік на вказаний порт. Це стандартна практика при налаштуванні серверів Windows, коли порти сервісів мають бути доступними клієнтам або іншим серверам.

Процедура блокування практично ідентична до попередньої, але з протилежним ефектом. Це використовується для відсікання небажаного трафіку, закриття невикористовуваних портів або захисту внутрішніх служб від зовнішнього доступу.

Для налаштування правила блокування трафіку виконуйте аналогічні дії, як і у попередньому описі, однак на етапі вибору дії оберіть Block the connection (Заблокувати підключення) та задайте назву правилу (наприклад, “Block RDP External”).

Після цього весь трафік, який надходитиме на вибраний порт, буде автоматично відхилений. На практиці блокування часто поєднують із дозволами для окремих IP, щоб створити винятки – так само як у Linux-брандмауерах.

Брандмауер Windows дозволяє робити точкові обмеження, наприклад:

  • повністю заблокувати порт для всіх, окрім обраних IP;
  • дозволяти чи блокувати доступ лише для певних діапазонів адрес;
  • створювати окремі правила для внутрішньої та зовнішньої мережі.

Це налаштовується у розділі Scope (Область). У властивостях створеного правила перейдіть на вкладку Scope та у секції Remote IP address оберіть блок “These IP addresses”, у який додайте потрібні адреси або підмережі (наприклад, 203.0.113.10 або 192.168.1.0/24). Після цього застосуйте правило та збережіть його.

Як заблокувати або дозволити порт TCP/IP у брандмауері Windows | Wiki HostPro

Таким чином можна, наприклад, заблокувати порт 1433 для всіх, але дозволити доступ до SQL Server тільки офісній мережі.

Зміна стандартного порту

Зміна стандартного порту – це один із базових, але ефективних способів зменшення кількості автоматизованих атак на сервер. Не всі порти однаково критичні, і не всі варто змінювати. Зазвичай змінюють ті порти, які часто стають мішенню для ботів і автоматичних атак, але не впливають на базову роботу сервера та мережевих сервісів. До них відносяться:

  • SSH (22/tcp) – стандартний порт для віддаленого керування Linux-серверами – найбільш популярна ціль для brute-force атак.
  • RDP (3389/tcp) – порт для віддаленого доступу на Windows VPS – часто сканується сторонніми ботами.

Перед зміною порту важливо продумати порядок дій, оскільки неправильна конфігурація може призвести до втрати доступу до сервера. Спершу потрібно відкрити новий порт у фаєрволі, переконатися, що сервіс дійсно працює на ньому, а вже потім закривати старий порт. Це стосується насамперед SSH, за допомогою якого адміністратори керують сервером.

Зміна порту SSH (Linux VPS)

Зміна стандартного порту SSH – один із найпростіших способів зменшити кількість автоматизованих атак на сервер. За замовчуванням SSH працює на порту 22, внаслідок чого велика кількість ботів постійно сканує саме його, виконуючи brute-force атаки. Перенесення SSH на інший порт не є повноцінним методом захисту, але ефективно скорочує кількість небажаних запитів та полегшує аналіз логів. Перед внесенням змін важливо підготувати фаєрвол: новий порт потрібно дозволити завчасно, щоб не втратити доступ до сервера під час перезапуску SSH.

Процес зміни порту починається з редагування конфігураційного файлу /etc/ssh/sshd_config. У цьому файлі потрібно знайти параметр Port або додати його, якщо він відсутній. Наприклад, щоб встановити новий порт 2222, додається або змінюється рядок:

# Port 2222

Після збереження файлу потрібно налаштувати фаєрвол. Наприклад, якщо використовується UFW, командою ufw allow 2222/tcp відкривається доступ до нового порту. 

Перед тим як закривати старий порт, важливо протестувати підключення в окремій сесії SSH – це дозволить переконатися, що сервер справді приймає підключення через новий порт. Коли робота підтверджена, старий порт можна видалити – ufw delete allow 22/tcp.

Завершальний крок – перезапуск SSH, який активує нові налаштування. Для цього виконується команда:

# systemctl restart sshd

Після перезапуску сервер прийматиме з’єднання лише через новий порт. Такий підхід допомагає підвищити рівень безпеки Linux VPS та зменшує кількість автоматичних атак.

Зміна порту RDP (Windows VPS)

Зміна стандартного порту RDP – це один із базових, але ефективних способів підвищити безпеку Windows-сервера. За замовчуванням підключення до Remote Desktop працює на порту 3389, який активно сканується ботнетами та автоматизованими сканерами. Використання нестандартного порту зменшує кількість автоматичних brute-force спроб та шуму в логах, хоча й не замінює повноцінного захисту.

Важливі застереження перед початком робіт!

Перш ніж змінювати порт RDP обов’язково мати активну RDP-сесію та другий спосіб доступу, наприклад, консоль із панелі керування VPS. Якщо щось піде не так (помилка в реєстрі, заблокований порт), ви не втратите доступ до сервера.
Оберіть будь-який вільний TCP-порт, окрім зарезервованих системних і тих, що використовуються іншими службами. Рекомендуємо звернути увагу на діапазон 1024–49151 (registered ports), уникайте 3389 та популярних портів (22, 80, 443, 3306 тощо). Та перевірте, чи порт вільний, на сервері це можна виконати через PowerShell командою:

# netstat -ano | findstr :PORT

Зміна порту RDP у Windows виконується за допомогою редагування параметра PortNumber у системному реєстрі. Цей параметр визначає, на якому TCP-порту служба Remote Desktop Services приймає вхідні підключення.

Для зміни порту потрібно запустити редактор системного реєстру. Для цього натисніть комбінацію клавіш Win + R, щоб відкрити вікно Run (Виконати).

У полі введіть команду:

# regedit

Натисніть Enter або кнопку OK.

Якщо з’явиться запит UAC (Контроль облікових записів), виберіть Yes – редактор реєстру потребує прав адміністратора.

Звернуть увагу! Редактор реєстру (regedit) дозволяє змінювати критично важливі системні параметри. Помилки можуть призвести до проблем із доступом або роботою служб, тому працюйте уважно.

У лівій частині вікна ви побачите дерево каталогів реєстру. Рухайтесь по ньому крок за кроком:

HKEY_LOCAL_MACHINE
   └── System
      └── CurrentControlSet
         └── Control
            └── Terminal Server
               └── WinStations
                  └── RDP-Tcp

Тобто, нас цікавить перехід до гілки:

# HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp

Зміна порту SSH (Linux VPS) | Wiki HostPro

Для детальнішого розуміння розглянемо кожен розділ:

  • Terminal Server – розділ, який містить налаштування служби Remote Desktop.
  • WinStations – конфігурації різних сеансів термінального доступу.
  • RDP-Tcp – профіль підключення, який використовується для RDP через TCP-протокол.

У правій частині вікна реєстру знайдіть параметр:

# PortNumber

# Тип: REG_DWORD

Це системний параметр, що задає TCP-порт, на якому сервер RDP слухає вхідні з’єднання.

Звернуть увагу! За замовчуванням значення PortNumber – це 3389, але в реєстрі воно показане у шістнадцятковій системі.

Для редагування даного параметру двічі натисніть на PortNumber, щоб відкрити вікно редагування. У вікні “Edit DWORD (32-bit) Value” ви побачите два варіанти:

  • Hexadecimal (шістнадцятковий)
  • Decimal (десятковий)

Перемикніть режим у Decimal, щоб вводити порт у звичному форматі (як у firewall та RDP-клієнті).

Зміна порту RDP (Windows VPS) | Wiki HostPro

Чому важливо перемикати на Decimal?
У hex форматі число 3389 виглядає як D3D. Якщо випадково ввести «зручне» десяткове значення у hex-режимі, воно конвертується у зовсім інший порт.
Тобто, ви вводите 49210 у hex → сервер намагається відкрити порт 300,048 (втрата доступу гарантована). Тому завжди перемикайтеся на Decimal!

У полі Value data введіть новий порт, наприклад, 49210,  після чого натисніть OK, щоб зберегти зміни. Після підтвердження значення в реєстрі оновлене, але система ще поки працює на старому порті. Щоб система справді почала слухати новий порт – потрібно виконати два обов’язкові кроки.

Першим кроком потрібно дозволити новий порт у Windows Firewall, який за замовчуванням пропускає лише стандартний порт 3389. Якщо ви не створите правило для нового порту, сервер буде слухати порт, але підключення зовні будуть заблоковані.

Правило для відкриття нового порту для підключення по RDP можна додати через графічний інтерфейс. Для цього ви можете скористайтеся пошуком, ввівши “Брандмауер Windows” або “Безпека Windows”, або відкрийте “Панель керування”, перейдіть до “Система та безпека” та виберіть “Брандмауер”.

Створіть нове правило з такими параметрами:

  • Inbound Rules → New Rule
  • Тип: Port
  • Протокол: TCP
  • Порт: введіть нове значення
  • Дозволити підключення (Allow connection)
  • Профілі: Domain / Private / Public (рекомендується відмітити всі)
  • Назва: наприклад RDP New Port 49210

Як альтернативний спосіб можна використати командний рядок або PowerShell, що особливо зручно на серверах, де немає графічного інтерфейсу. У PowerShell це виконується однією командою, яка одразу створює відповідне правило брандмауера з дозволом вхідних з’єднань на ваш новий порт.

# New-NetFirewallRule -DisplayName «RDP New Port 49210» -Direction Inbound -Protocol TCP -LocalPort 49210 -Action Allow

У командному рядку доступна аналогічна команда через утиліту netsh:

# netsh advfirewall firewall add rule name="RDP New Port 49210" dir=in action=allow protocol=TCP localport=49210

Обидва варіанти працюють однаково, різниця лише в тому, який інструмент вам зручніше використовувати.

Після того як правило створене, брандмауер вже не блокуватиме підключення до нового порту, але це ще не означає, що зміна почала діяти. Служба Remote Desktop Services зчитує порт лише під час запуску, тому необхідно або перезапустити саму службу, або виконати повне перезавантаження сервера. Найпоширеніший та найбезпечніший спосіб – саме перезавантаження, оскільки воно гарантує коректне застосування змін і виключає ризик втрати доступу, який може виникнути при ручному перезапуску служби.

Після перезапуску сервера спробуйте підключитися по RDP уже з використанням нового порту.

Port Knocking – прихований доступ до серверних портів

Ще один ефективний інструмент для приховування портів – Port Knocking. це метод приховування відкритих портів, який дозволяє залишати їх повністю недоступними для сторонніх користувачів та ботів, доки клієнт не надішле спеціальну “секретну” послідовність пакетів. Фактично, це механізм «стуку у двері»: сервер реагує лише тоді, коли послідовність збігається з визначеною в конфігурації. До моменту правильного звернення порт виглядає закритим  – він не відповідає на скани, не приймає підключень і не видає жодної інформації про себе.

Основна ідея Port Knocking полягає в тому, щоб приховати критичні служби, такі як SSH або панелі керування, від зовнішнього трафіку. У звичайній конфігурації відкритий порт доступний для всіх, і боти постійно здійснюють спроби сканування та підбору паролів. Якщо ж порт працює лише після “стуку”, він залишається невидимим у глобальній мережі, що практично повністю усуває автоматизовані атаки та значно знижує навантаження на сервер.

Механізм роботи Port Knocking досить простий – на сервері встановлюється спеціальна служба, яка відстежує пакети, що надходять на певні порти у визначеній послідовності. Коли клієнт надсилає цю послідовність, служба тимчасово відкриває доступ до цільового порту для IP-адреси відправника. Клієнт отримує можливість підключення, але лише протягом певного часу, після чого порт знову закривається. Усе це відбувається автоматично та не впливає на роботу інших сервісів.

Найпопулярнішим інструментом є утиліта knockd, яка працює як фоновий демон. Вона уважно аналізує пакети, що приходять на сервер, і при збігу з визначеною послідовністю виконує команду – зазвичай це відкриття SSH або іншого порту в брандмауері. Цей механізм не потребує модифікації самих служб – конфігурація стосується виключно рівня фаєрвола.

Процес встановлення knockd на більшості Linux-дистрибутивів зводиться до інсталяції пакета й увімкнення служби. На Ubuntu або Debian інструмент встановлюється стандартними командами:

# apt update

# apt install knockd

На CentOS, Rocky Linux або AlmaLinux використовується менеджер пакетів dnf:

# dnf install knock

Після інсталяції служба за замовчуванням вимкнена. Її потрібно активувати й дозволити запуск під час старту системи:

# systemctl enable knockd

# sudo systemctl start knockd

Після запуску сервіс працюватиме у фоновому режимі й відстежуватиме knock-послідовності. 

На даному етапі також важливо налаштувати фаєрвол – закрити для усіх потрібний протокол.

# iptables -A INPUT -p tcp --dport 22 -j DROP

Далі можна переходити до створення конфігурації, в якій описуються порти для knock-послідовності, дії при відкритті доступу та обмеження за часом. У конфігураційному файлі knockd зберігає логіку роботи: події відкриття порту, закриття доступу та контроль за послідовністю пакетів.

Головний файл конфігурації знаходиться у каталозі:

/etc/knockd.conf

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

[openSSH]
sequence = 7000,8000,9000
seq_timeout = 15
command = /usr/sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn

[closeSSH]
sequence = 9000,8000,7000
seq_timeout = 15
command = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn

У цьому прикладі knockd очікує послідовність із трьох портів – 7000, 8000 і 9000. Якщо клієнт надсилає пакети у правильному порядку, knockd виконує команду, яка додає правило у фаєрвол, дозволяючи доступ по SSH (порт 22) з IP-адреси, що виконала knock. Команда для закриття доступу інвертована й видаляє правило з фаєрвол.

Параметр seq_timeout визначає, за скільки секунд має бути завершена послідовність. Якщо користувач затримується, knockd скидає буфер і очікує новий «стук».

Зверніть увагу! Knock‑порти мають бути повністю закритими у фаєрволі, оскільки їхня основна функція – не приймати з’єднання, а фіксувати сам факт спроби доступу. Для port knocking важливо, щоб порти були повністю закриті. Саме стан DROP робить порт «невидимим» у мережі: клієнт бачить лише відсутність відповіді, але knockd у фоновому режимі реєструє надходження SYN‑пакета й додає його до послідовності. Завдяки цьому knock‑порти не видають жодної інформації про сервер і не створюють поверхневих точок атаки, залишаючись прихованим механізмом керування доступом.

Після редагування конфігурації knockd потрібно перезапустити, щоб застосувати нові правила:

# systemctl restart knockd

Після цього сервер почне працювати за оновленою логікою.

На клієнтському боці процес виглядає просто: користувач запускає команду, яка надсилає knock-послідовність. У більшості випадків для цього застосовують утиліту knock, що дозволяє дуже швидко надіслати потрібні пакети. Після успішної послідовності користувач може відкривати SSH-сесію стандартним способом. Підключення відбувається без затримок, а knock-послідовність не має жодного впливу на якість з’єднання.

У Debian/Ubuntu вона встановлюється командою:

# apt install knockd

Після встановлення knock-послідовність надсилають так:

# knock your-server-ip 7000 8000 9000

Knockd автоматично виконає команду видалення правила, і порт знову стане невидимим для всіх інших.

Як тільки knockd прийме послідовність, у фаєрволі з’явиться правило, і SSH стане доступним лише для цієї IP-адреси. Через необхідний період можна закрити доступ, надіславши «заключну» послідовність:

# knock your-server-ip 9000 8000 7000

Ви можете виконувати Port Knocking без встановлення спеціального клієнта – достатньо скористатися стандартними інструментами на кшталт telnet, curl або будь‑яким іншим способом ініціювати TCP‑запит на потрібний порт. Якщо ваша knock‑послідовність базується виключно на TCP‑портах, такий підхід працюватиме коректно: knockd зафіксує сам факт SYN‑спроби й додасть її до буфера послідовності. Проте для регулярного або автоматизованого використання бажано мати утиліту knock, оскільки вона дозволяє надсилати послідовності швидше, стабільніше та без помилок у порядку портів.

Особливість Port Knocking полягає в тому, що він не є окремим засобом безпеки, а працює як додатковий шар захисту. Якщо зловмисник не знає knock-послідовність, він не зможе навіть побачити, що SSH або інші порти працюють. Це захищає не лише від brute-force атак, а й від сканувань типу Shodan, Masscan чи ботнетів, які автоматично перевіряють сервери на наявність відкритих точок входу.

Однак Port Knocking не є абсолютною заміною класичної безпеки, але виступає як додатковий рівень, який робить сервер менш помітним для потенційних атак. У поєднанні з фаєрволом, обмеженням IP-адрес, двофакторною автентифікацією та сучасними алгоритмами шифрування він формує багаторівневий бар’єр, долати який більшості ботам просто недоцільно.

Висновок

Захист сервера значною мірою залежить від того, наскільки відкриті порти видно зовнішньому світу. Коли доступ до них контролюється та обмежується коректними налаштуваннями, сервер стає менш помітним для сканерів та цілеспрямованих атак. Навіть невеликі налаштування фаєрвола та приховування портів здатні суттєво зменшити ризик небажаних підключень, залишаючи робоче середовище безпечним та стабільним.

Telegram Hostpro

Наш телеграм

з важливими анонсами, розіграшами й мемами

Приєднатися

Можливо, вас зацікавить

Підключення до віддаленого Windows-сервера (VPS) по RDP

Підключення до віддаленого Windows-сервера (VPS) по RDP

Підключення до Windows VPS відбувається через протокол RDP (Remote Desktop Protocol), який дозволяє працювати...

Maryana Movchaniuk | Оновлено: 24.10.2025

Встановлення TeamSpeak 3 на сервер VPS

Встановлення TeamSpeak 3 на сервер VPS

З цієї статті ви дізнаєтеся, як встановити TeamSpeak 3 на сервер VPS з ОС...

Hostpro Company | Оновлено: 27.08.2025

Localhost не працює – причини та рішення

Localhost не працює – причини та рішення

Повідомлення «Localhost відхилив підключення» сигналізує про те, що сервер не зміг встановити внутрішнє з’єднання...

Maryana Movchaniuk | Оновлено: 13.08.2025

Як розпакувати і створити архіви в Linux: .zip, .tar, .gz, .rar

Як розпакувати і створити архіви в Linux: .zip, .tar, .gz, .rar

Коли потрібно об'єднати дані в одному файлі, незамінним інструментом є утиліти для архівування.  Архів...

Hostpro Company | Оновлено: 13.02.2025