Безопасность SSH является главным приоритетом при настройке вашего сервера. Но вот настройки SSH, по умолчанию, обычно недостаточно надежны, чтобы защитить ваш сервер от внешних атак.
Поэтому необходимы дополнительные настройки, чтобы обеспечить достойную защиту от атак методом перебора. Одним из них является внедрение Fail2ban для предотвращения несанкционированных пользователей после определенного количества неправильных попыток входа в систему. Аналогичным образом вы можете использовать модуль pam_faillock для реализации политики блокировки учетной записи.
В этой статье рассмотрим, как заблокировать учетную запись системного пользователя после определенного количества неудачных попыток входа в систему по SSH в дистрибутивах на основе RedHat. В дистрибутивах на основе Debian вам необходимо использовать модуль pam_tally2 для блокировки неудачных входов в систему SSH.
Здесь основное внимание уделяется обеспечению простой безопасности сервера путем блокировки учетной записи пользователя после нескольких последовательных неудачных аутентификаций SSH.
Что такое модуль pam_faillock?
Модуль pam_faillock является частью Linux PAM (подключаемые модули аутентификации), утилиты, состоящей из общих библиотек, которая отделяет приложения от стандартных методов аутентификации.
Он принимает проверки подлинности от таких программ, как sshd, gdm, login и многих других, и аутентифицирует пользователя в этих службах или приложениях в системах Linux.
Модуль записывает неудачные попытки аутентификации для каждого пользователя и временно блокирует учетную запись пользователя, если количество неудачных попыток аутентификации превышает определенный лимит. Неудачные попытки входа сохраняются в файлах для каждого пользователя в каталоге Tally, который по умолчанию называется /var/run/faillock/.
Модуль pam_faillock заменяет модули pam_tally и pam_tally2, которые были убраны в RHEL 7 и RHEL 8. Он предлагает больше гибкости и возможностей, чем эти два модуля.
Как заблокировать пользователя после неудачного входа в систему по SSH
Вы можете настроить вышеуказанную функциональность в файлах /etc/pam.d/system-auth и /etc/pam.d/password-auth, добавив записи в раздел auth.
Чтобы заблокировать или запретить пользователям доступ к системе после 3 неудачных попыток SSH и разблокировать учетную запись пользователя через 1200 секунд, добавьте следующие строки в раздел аутентификации.
auth required pam_faillock.so preauth silent audit deny=3 unlock_time=1200 auth [default=die] pam_faillock.so authfail audit deny=3 unlock_time=600
Где:
- audit — включает аудит пользователей.
- deny — используется для определения количества попыток (в данном случае 3), после которых учетная запись пользователя должна быть заблокирована.
- unlock_time – устанавливает время (600 секунд = 10 минут), в течение которого учетная запись должна оставаться заблокированной.
Обратите внимание, что порядок этих строк очень важен, неправильные конфигурации могут привести к блокировке всех учетных записей пользователей.
Раздел auth в обоих файлах должен иметь содержимое, расположенное ниже, в следующем порядке:
auth requisite pam_succeed_if.so uid >= 1000 quiet_success auth required pam_deny.so auth required pam_faillock.so preauth silent audit deny=3 unlock_time=1200 auth [default=die] pam_faillock.so authfail audit deny=3 unlock_time=600 account required pam_unix.so account sufficient pam_localuser.so
Затем перейдите в раздел учетной записи и добавьте следующую строку в оба вышеуказанных файлах
account required pam_faillock.so
После добавления вышеуказанных настроек оно должно выглядеть, примерно, следующим образом.

Блокировка root после неудачного входа по SSH.
Вы можете добавить параметр even_deny_root в раздел auth, чтобы заблокировать как пользователя root, так и обычного пользователя. В этом примере время разблокировки для обычных пользователей составляет 1200 секунд (20 минут) и 3600 секунд (60 минут или 1 час) для пользователя root после 3 неудачных попыток входа по SSH.
auth required pam_faillock.so preauth silent audit deny=3 even_deny_root unlock_time=1200 auth [default=die] pam_faillock.so authfail audit deny=3 even_deny_root unlock_time=3600
После того, как вы все настроили. Нужно перезапустить службы удаленного доступа, такие как sshd, чтобы вышеуказанная политика вступила в силу. В данном случае для использования ssh при подключении к серверу.
sudo systemctl restart sshd
Теперь проверим работоспособность наших изменений.
Просмотреть неудачные попытки входа.
Вы можете просмотреть все журналы неудачной аутентификации SSH с помощью утилиты Faillock, которая используется для отображения и изменения журнала неудачной аутентификации. Для этого используется следующая команда:
# faillock --user имя_пользователя

Чтобы просмотреть все неудачные попытки входа в систему, запустите Faillock без каких-либо аргументов:
# faillock
Разблокировать пользователя после неудачного входа в систему по SSH.
Чтобы очистить журналы ошибок аутентификации пользователя, выполните следующую команду.
# faillock --user user --reset или # faillock --reset //для разблокировки всех пользователей
Отключить блокировку пользователя после неудачного входа в систему по SSH.
Чтобы сообщить системе не блокировать пользователя или учетные записи пользователей после нескольких неудачных попыток входа в систему, добавьте запись, чуть выше места первого вызова pam_faillock в разделе аутентификации в обоих файлах (/etc/pam.d/system). -auth и /etc/pam.d/password-auth) следующим образом.
auth required pam_env.so auth [success=1 default=ignore] pam_succeed_if.so user in tecmint:aaronkilik auth required pam_faildelay.so delay=2000000 auth required pam_faillock.so preauth silent audit deny=3 even_deny_root unlock_time=1200 auth sufficient pam_unix.so nullok try_first_pass auth [default=die] pam_faillock.so authfail audit deny=3 even_deny_root unlock_time=600 auth requisite pam_succeed_if.so uid >= 1000 quiet_success auth required pam_deny.so
Как отключить модуль Faillock.
Чтобы отключить модуль pam_failock, выполните следующую команду:
# authconfig --disablefaillock --update
Дополнительную информацию можно найти на страницах руководства pam_faillock и Faillock.
# man pam_faillock # man faillock
Заключение.
Способов блокировки пользователей множество, в том числе и ограничение попыток входа. В этой статье рассмотрели один из них. Надеюсь будет полезно.
Was this helpful?
0 / 0