Як приховати відкриті порти на VPS та зупинити сканування ботами
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Вона покаже протокол, номер порту, статус з’єднання та процес, що відповідає за роботу цього порту.

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

За потреби можна додати ключ -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 тощо).

Ця команда зручна, коли вам потрібно швидко визначити, яка служба займає певний порт.
Також можна фільтрувати вивід під конкретний порт. Наприклад, щоб перевірити, що використовує 80-й порт:
# lsof -i :80Або переглянути всі TCP-з’єднання:
# lsof -i tcplsof дає можливість глибше проаналізувати стан мережевих портів, особливо тоді, коли netstat чи ss показують лише загальну інформацію, а потрібно знайти точний процес, що блокує або використовує порт.
Для оцінки доступності портів із зовнішньої мережі можна використовувати сканування за допомогою nmap. Цей інструмент дозволяє перевіряти, які порти доступні зовні та які служби відповідають на підключення.
На відміну від netstat, ss або lsof, команди Nmap потрібно запускати не на самому сервері, а з іншої машини – наприклад, з комп’ютера адміністратора. Це дозволяє побачити портову доступність саме з боку зовнішнього світу.
Зверніть увагу! Запускати Nmap з іншого VPS або хостингу небажано. Сканування портів може бути розцінене як підозріла активність, через що може бути надіслано попередження або ви можете отримати скаргу від сторони, чий сервер було проскановано, і як наслідок ваш сервер може бути заблоковано. Для перевірок краще використовувати власний локальний комп’ютер.
Для стандартного сканування відкритих портів використовується команда:
# nmap your_server_ipЦе базовий огляд, який покаже найпоширеніші порти, що відповідають на запити.
Щоб виконати більш детальне сканування всіх TCP-портів, можна застосувати:
# nmap -sT your_server_ip
За потреби можна вказати конкретні порти:
# nmap -p 22,80,443 your_server_ipNmap дозволяє оцінити реальну картину та допомагає виявити випадково відкриті порти, некоректні правила 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 -vNftables – більш сучасна заміна 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 --reloadsource 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/tcpyes – порт відкритий, 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Вона показує список дозволених та заблокованих портів у простому вигляді, наприклад:

Для більш детальної інформації можна додати ключ 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 із розширеною безпекою” та запустіть консоль.

У лівій частині вікна виберіть Inbound Rules (Вхідні правила) та правій колонці натисніть New Rule… (Створити правило).
У виборі типу правила оберіть Port (Порт) та натисніть Next, після чого виберіть протокол: TCP або UDP.
У полі портів вкажіть конкретний порт (наприклад, 443) або діапазон портів. Виберіть Allow the connection (Дозволити підключення).
Вкажіть профілі, для яких правило має діяти – Domain, Private, Public.
Також, задайте назву правила, щоб легко його знайти в майбутньому (наприклад, “Allow HTTPS”).
Після внесення усіх налаштувань підтвердіть створення правила.

Після збереження правило одразу активується, та 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). Після цього застосуйте правило та збережіть його.

Таким чином можна, наприклад, заблокувати порт 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
Для детальнішого розуміння розглянемо кожен розділ:
- 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-клієнті).

Чому важливо перемикати на 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 9000Knockd автоматично виконає команду видалення правила, і порт знову стане невидимим для всіх інших.
Як тільки 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-адрес, двофакторною автентифікацією та сучасними алгоритмами шифрування він формує багаторівневий бар’єр, долати який більшості ботам просто недоцільно.
Висновок
Захист сервера значною мірою залежить від того, наскільки відкриті порти видно зовнішньому світу. Коли доступ до них контролюється та обмежується коректними налаштуваннями, сервер стає менш помітним для сканерів та цілеспрямованих атак. Навіть невеликі налаштування фаєрвола та приховування портів здатні суттєво зменшити ризик небажаних підключень, залишаючи робоче середовище безпечним та стабільним.
Можливо, вас зацікавить
Підключення до віддаленого Windows-сервера (VPS) по RDP
Підключення до Windows VPS відбувається через протокол RDP (Remote Desktop Protocol), який дозволяє працювати...
| Оновлено: 24.10.2025
Встановлення TeamSpeak 3 на сервер VPS
З цієї статті ви дізнаєтеся, як встановити TeamSpeak 3 на сервер VPS з ОС...
| Оновлено: 27.08.2025
Localhost не працює – причини та рішення
Повідомлення «Localhost відхилив підключення» сигналізує про те, що сервер не зміг встановити внутрішнє з’єднання...
| Оновлено: 13.08.2025
Як розпакувати і створити архіви в Linux: .zip, .tar, .gz, .rar
Коли потрібно об'єднати дані в одному файлі, незамінним інструментом є утиліти для архівування. Архів...
| Оновлено: 13.02.2025
Наш телеграм
з важливими анонсами, розіграшами й мемами
Приєднатися