Как контролировать попытки аутентификации в PAM?

Как контролировать попытки аутентификации в PAM?

Я хотел бы настроить количество раз, когда пользователю будет предложено ввести пароль (попытки аутентификации) для входа, прежде чем сеанс будет прерван. Поддерживает ли PAM этот случай, если да, можете ли вы помочь мне с необходимой для этого конфигурацией?

решение1

Для PAM существует модуль счетчика входов, который называетсяpam_tallyкоторый можно использовать для ведения подсчета попыток входа в систему и блокировки дальнейших попыток, если определенное количество попыток входа в систему оказывается неудачным.

Пример:

В Debian можно добавить следующие строки, чтобы /etc/pam.d/common-authпредоставить пользователям три попытки входа в систему, прежде чем учетная запись будет заблокирована:

auth required pam_tally.so onerr=fail deny=3 no_magic_root

Это no_magic_rootпредотвращает блокировку пользователя root.

КакпетерфКак было отмечено, эта unlock_timeопция может использоваться для указания количества секунд, по истечении которых заблокированная учетная запись будет автоматически разблокирована. Установив эту опцию на 1, т. е. заблокировав учетную запись на одну секунду, попытка входа может быть прервана после указанного количества попыток, при этом пользователь все еще может повторить попытку (почти) немедленно.

Добавление следующей строки /etc/pam.d/common-accountсбросит счетчик входов при успешном входе в систему:

account required pam_tally.so reset no_magic_root

В Fedora обе строки можно добавить в /etc/pam.d/system-auth.

Доступ к заблокированной userучетной записи можно восстановить с помощью прилагаемой pam_tallyутилиты следующим образом:

$ pam_tally --user user --reset=0

решение2

Если вы пытаетесь контролировать, сколько раз кто-то будет запрошен, а не сколько раз он может не пройти аутентификацию, у вас могут возникнуть проблемы с управлением этим через PAM. Например, у ssh есть своя собственная конфигурация для этого:

     NumberOfPasswordPrompts
         Specifies the number of password prompts before giving up.  The
         argument to this keyword must be an integer.  The default is 3.

Связанный контент