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

Содержание:
Защита от брутфорс-атак на Ubuntu всегда требовала пристального внимания и применения внешних средств защиты, в частности, таких как Fail2Ban. Однако версия Ubuntu 26.04 получила внутренний механизм защиты, который по ряду критериев имеет лучшие характеристики и менее ресурсоемкий. Механизм реализован в виде опции PerSourcePenalties сервера OpenSSH 9.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 –V

Выход команды: OpenSSH_9.2p1 Debian-2+deb12u10, OpenSSL 3.0.20 7 апреля 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 апреля 2026 г.
Установленная версия OpenSSH_10.0p2, как известно, поддерживает работу PerSourcePenalties, поэтому можно переходить к следующему этапу.
Проверка активности PerSourcePenalties
Следующим этапом будет проверка активности внутреннего механизма защиты. Это можно сделать с помощью следующей команды:
$ sshd -T | grep -i penaltys

Выход команды:
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 поможет снизить риск проникновения в систему и снизить нагрузку на внутренние ресурсы сервера.
h2 id="13">Как отключить или изменить настройки
Выключить полностью или частично действие внутреннего механизма защиты 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