Стаття також доступна російською (перейти до перегляду).

Зміст:
Захист від брутфорс-атак на Ubuntu завжди вимагав пильної уваги та застосування зовнішніх засобів захисту, зокрема, таких як Fail2Ban. Однак версія Ubuntu 26.04 отримала внутрішній механізм захисту, котрий по ряду критеріїв має кращі характеристики та менш ресурсоємний. Механізм реалізований у вигляді опції PerSourcePenalties серверу OpenSSH9.7+ та може «працювати» без втручання користувача та будь-яких додаткових налаштувань. Розглянемо його більш детально та покажемо використання у реальному середовищі.
Що таке PerSourcePenalties в OpenSSH
PerSourcePenalties – це опція OpenSSH, увімкнення якої активує внутрішній механізм захисту SSH від спроб несанкціонованої аутентифікації в системі.
Вперше опція з’явилася ще у 2024 році в OpenSSH версії 9.7. Однак в Ubuntu 24.04 стандартно використовується OpenSSH 9.6 і тому тут механізм не працює. Так само, як і в Debian Bookworm із OpenSSH 9.2. Лише у випадку оновлення OpenSSH-сервера можна змінити ситуацію, оскільки механізм «прив’язаний» саме до нього.
Чому Ubuntu 26.04 увімкнула функцію за замовчуванням
Опція PerSourcePenalties з’явилася в Ubuntu лише наприкінці січня
поточного року із виходом ОС Ubuntu 26.04, стандартно укомплектованої
сервером OpenSSH версії 10.2. Тут вона стандартно увімкнена та готова до
забезпечення захисту.
Опція була увімкнена для забезпечення швидкого захисту SSH від атак
незначної інтенсивності без необхідності виконання налаштувань. У той час,
як Fail2Ban вимагає конфігурування, працює повільніше та захищає від быльш
тривалих та потужних атак.
Розбір параметрів authfail, noauth, crash, max
Інструмент має набір параметрів, за допомогою яких визначається рівень «легітимності» кожного клієнта. Розглянемо основні з них:
- Authfail – фіксує спроби невдалої аутентифікації будь-яким способом. За кожну з них накладається 5 сек штрафу.
- Noauth – «запам’ятовує» всі «пусті» підключення без спроб аутентифікації. Штраф – 1 сек.
- Crash – фіксує всі некоректні завершення sshd-процесу та збої у системі. Штраф – 90 секунд.
- Max – встановлює максимальне значення штрафу, котре не може перевищувати 600 сек.
- Min – встановлює мінімальне значення штрафу, при котрому IP клієнта блокується. Не може бути менше 15 сек.
Як працює механізм блокування IP
Вхідні TCP-з’єднання контролюються master-процесом sshd без використання таблиць iptables та nftables. Замість них використовується внутрішня таблиця штрафів із IP-адресами клієнтів, котра знаходиться у внутрішній пам’яті головного sshd-процесу. І тому обробка TCP-з’єднань відбувається миттєво.
Робота механізму блокування IP-адреси відбувається у наступній послідовності:
-
Приймається вхідне TCP-з’єднання;
-
Пошук IP-адреси клієнта у внутрішній таблиці штрафів для визначення його статусу;
-
Закриття сокету у випадку, якщо сума штрафу перевищила встановлений поріг.
Відмінності від Fail2Ban
У Таблиці 1 наведена порівняльна характеристика механізмів захисту на основі PerSourcePenalties та зовнішньої програми Fail2Ban.
Таблиця 1. Порівняльна характеристика механізмів захисту.
| Характеристика | Опція PerSourcePenalties в OpenSSH | Програма Fail2Ban |
|---|---|---|
| Інтеграція із sshd | + | - |
| Парсинг логів | - | + |
| Швидкість обробки TCP-з’єднань | Максимальна | Із затримкою |
| Ресурсоємність | Мінімальна | Значна |
| Тривалість блокування | Короткочасне | Тривале |
| Самозахист від DoS-атак | + | - |
| Автоматичне увімкнення | + | - |
Практичний тест із Hydra
Підготовчий етап
Спочатку нам треба з’ясувати, яка версія OpenSSH встановлена на нашому сервері та оновити її, якщо є така можливість.
Підкреслимо, що робота інструменту не залежить від типу ОС. Це може бути BSD, Debian, Ubuntu або інші системи. Головне – наявність потрібної версії OpenSSH (9.7+). І це є однією з його переваг.
На нашому VPS-сервері встановлена ОС Debian Bookworm, з нею ми і будемо працювати.
Перевіримо версію OpenSSH. Для цього введемо в терміналі:
$ ssh –

Вихід команди: OpenSSH_9.2p1 Debian-2+deb12u10, OpenSSL 3.0.20 7 Apr 2026
Отже, версія програмного забезпечення нижча за 9.7 і тому не підтримує PerSourcePenalties.
Виходом з ситуації може бути оновлення OpenSSH, але для цього необхідно під'єднати до Debian 12 backports-репозиторій.
Послідовність команд буде наступною:
-
Створюємо новий repo-файл та включаємо до нього відповідну директиву:
$ sudo nano /etc/apt/sources.list.d/debian-12-backports.list
Директива: deb http://deb.debian.org/debian bookworm-backports main
-
Оновлюємо індекс доступних пакетів та виконуємо оновлення системи:
$ sudo apt update && sudo apt upgrade
-
Встановлюємо OpenSSH:
$ sudo apt -t bookworm-backports install openssh-server openssh-client

Вихід команди:
................................................................................... Setting up openssh-client (1:10.0p1-7~bpo12+1) ... Installing new version of config file /etc/ssh/ssh_config ... Setting up openssh-sftp-server (1:10.0p1-7~bpo12+1) ... Setting up openssh-server (1:10.0p1-7~bpo12+1) ... Installing new version of config file /etc/pam.d/sshd ... Installing new version of config file /etc/ssh/moduli ...
Перевіряємо встановлену версію OpenSSH:
$ ssh –V

Вихід: OpenSSH_10.0p2 Debian-7~bpo12+1, OpenSSL 3.0.20 7 Apr 2026
Встановлена версія OpenSSH_10.0p2, як відомо, підтримує роботу PerSourcePenalties, тому можна переходити до наступного етапу.
Перевірка активності PerSourcePenalties
Наступним етапом буде перевірка активності внутрішнього механізму захисту. Це можна зробити за допомогою наступної команди:
$ sshd -T | grep -i penalties

Вихід команди:
persourcepenalties crash:90 authfail:5 noauth:1 grace-exceeded:10 refuseconnection:10 max:600 min:15 max-sources4:65536 max-sources6:65536 overflow:permissive overflow6:permissive
Можна переконатися, що функція увімкнена та має стандартні значення параметрів, котрі ми вже розглянули раніше.
Налаштування відображення логів системних журналів
Виведення всіх полів записів системних журналів дає змогу дослідити результати накладання штрафів на IP.
Для цього необхідно внести відповідні зміни до файлу sshd_config:
$ nano /etc/ssh/sshd_config
У файлі змінити значення параметру LogLevel:
LogLevel VERBOSE

Збережемо внесені зміни та закриємо файл (ctrl+O, ctrl+X).
Опція PerSourcePenalties з’явилася в Ubuntu лише наприкінці січня
поточного року із виходом ОС Ubuntu 26.04, стандартно укомплектованої
сервером OpenSSH версії 10.2. Тут вона стандартно увімкнена та готова до
забезпечення захисту.
Опція була увімкнена для забезпечення швидкого захисту SSH від атак
незначної інтенсивності без необхідності виконання налаштувань. У той час,
як Fail2Ban вимагає конфігурування, працює повільніше та захищає від быльш
тривалих та потужних атак.
Як виявити підозрілі спроби входу?
Налаштування PerSourcePenalties дозволяє автоматично реагувати на підозрілу активність SSH, але для повноцінного контролю важливо також регулярно аналізувати журнали аутентифікації системи. Саме в логах можна побачити невдалі спроби входу, перебір паролів, підключення з різних IP-адрес та інші ознаки атак.
Детально про те, де знаходяться SSH-логи в Ubuntu, як їх переглядати та фільтрувати — читайте у статті.
Імітація brute-force атаки з іншого хоста
Для імітації атаки скористаємося відомою програмою Hydra, встановленою на іншому хості. Це дасть нам змогу переконатися у дієздатності механізму PerSourcePenalties.
Нами була використана наступна команда для автоматичного підключення до серверу Debian по SSH:
$ hydra -l root -P pass.txt ssh://178.20.159.96 -s 22
Тут параметр -l використовується для вказання на логін користувача (root); параметр -P вказує на файл із набором паролів для перебору (pass.txt); 178.20.159.96 – IP-адреса нашого хоста; параметр -s вказує на порт підключення (22).

Перевірка результатів роботи внутрішньої системи захисту SSH
Перевіримо результати роботи функції захисту TCP-з’єднань на основі PerSourcePenalties. Для цього скористаємося можливостями системних журналів Linux, у котрих фіксуються всі події, у тому числі і невдалі спроби аутентифікації.
Введемо в терміналі:
journalctl --grep="penalty"

Вихід:
May 19 14:05:59 dedicated sshd[3168180]: drop connection #1 from [27.79.7.61]:51486 on [178.20.159.96]:22 penalty: failed authentica> May 19 14:06:02 dedicated sshd[3168180]: drop connection #0 from [27.79.7.61]:57806 on [178.20.159.96]:22 penalty: failed authentica> May 19 14:06:11 dedicated sshd[3168180]: drop connection #2 from [27.79.7.61]:44692 on [178.20.159.96]:22 penalty: failed authentica> ....................................................................................................................................
Ми бачимо, що всі записи для однієї й тієї ж IP-адреси містять строчку:
drop connection ........ penalty: failed authentica
Це означає, що для цієї адреси при будь-якій спробі під’єднатися TCP-з’єднання буде закрите та сокети для введення паролю вже не будуть створюватися. Це відбулося по причині накопичення критичної маси штрафів за параметром Authfail, котрий нами був розглянутий раніше.
Отже, механізм успішно працює і здатний захистити сервер від непроханих гостей.
Плюси та мінуси PerSourcePenalties
Як і будь-який інший механізм захисту, інструмент на основі PerSourcePenalties має як переваги, так і недоліки. Вкажемо основні з них.
Переваги:
-
Автоматичне увімкнення;
-
Незалежність від типу ОС;
-
Висока швидкість роботи;
-
Не використовує зовнішні команди та незалежна від ядра;
-
Не вимагає парсингу логів;
-
Низьке споживання ресурсів;
-
Безпечна у використанні.
Недоліки:
-
«Легкий» захист;
-
Блокування лише по IP;
-
Поступове впровадження – необхідність оновлення OpenSSH або ОС.
Коли залишати Fail2Ban
Програма Fail2Ban вже давно «довела» свою корисність для Linux-систем. Її можливості легкого налаштування читання будь-яких файлів логів, інтеграція із iptables та будь-якими зовнішніми сервісами дозволяють використовувати її для захисту хостів будь-якого типу та рівня навантаження.
При потужних брутфорс-атаках (кілька годин) внутрішнього захисту SSH, скоріш за все, буде недостатньо і тому використання Fail2Ban допоможе знизити ризик проникнення в систему та зменшити навантаження на внутрішні ресурси сервера.
Як вимкнути або змінити налаштування
Вимкнути повністю або частково дію внутрішнього механізму захисту SSH можна за допомогою окремого конфігураційного файлу:
$ nano /etc/ssh/sshd_config.d/99-pensourcepenalties-disable.conf
Повне вимкнення:
PerSourcePenalties no Вимкнення лише декотрих штрафів: PerSourcePenalties noauth:0 crash:0
Для того, щоб внесені в конфігурацію зміни запрацювали, слід виконати перезавантаження master-процесу ssh:
$ systemctl restart ssh
VPS з Ubuntu 26.04 LTS для ваших проєктів
Якщо ви плануєте використовувати PerSourcePenalties, сучасний OpenSSH та актуальні механізми захисту SSH-сервера — рекомендуємо звернути увагу на VPS-хостинг від FREEhost.UA. У нас вже доступні віртуальні сервери з Ubuntu 26.04 LTS готові до використання. Ви можете швидко розгорнути VPS для розміщення сайтів, VPN, Docker-проєктів, корпоративних сервісів або серверів розробки.
Висновки
В умовах постійного зростання кількості та потужності brute-force атак, вочевидь, необхідно застосовувати комплексний підхід для захисту свого серверу. Одним із варіантів є сумісне використання внутрішніх механізмів захисту, яким є PerSourcePenalties та старих перевірених засобів, зокрема, і Fail2Ban.
Внутрішній механізм потрібен, насамперед, для самозахисту SSH від DoS та інших атак із «простим» під’єднанням. Зовнішні засоби – для захисту від потужного брутфорсу та включення довготривалих та / або постійних банів.
Підписуйтесь на наш Telegram-канал https://t.me/freehostua, щоб бути в курсі нових корисних матеріалів.
Дивіться наш канал YouTube на https://www.youtube.com/freehostua.
Ми у чомусь помилилися, чи щось пропустили?
|
Дата: 26.05.2026 Автор: Олександр Ровник
|
|

Авторам статті важлива Ваша думка. Будемо раді його обговорити з Вами:
comments powered by Disqus