Я использую pam_tally2 для блокировки учетных записей после 3 неудачных попыток входа в систему для каждой политики, однако подключающийся пользователь не получает сообщение об ошибке, указывающее на действие pam_tally2. (Через SSH.)
Ожидаю увидеть с 4-й попытки:
Account locked due to 3 failed logins
Никакой комбинации обязательный или реквизит или порядок в файле, кажется, помогает. Это под Красная шляпа 6, и я использую /etc/pam.d/password-auth
. Локаут работает как ожидалось но пользователь не получает описанную выше ошибку. Это вызывает много путаницы и разочарования, поскольку они не могут узнать, почему аутентификация не удалась, если они уверены, что используют правильный пароль.
Реализация следует за АНБ Руководство по безопасному наращиванию Red Hat Enterprise Linux 5. (стр.45) Насколько я понимаю, это единственное в PAM изменилось то, что /etc/pam.d/sshd теперь включает /etc/pam.d/password-auth вместо system-auth.
Если вашей политикой безопасности требуется блокировка учетных записей после ряда неправильных попыток входа в систему, используйте pam_tally2.so.
Чтобы принудительно заблокировать пароль, добавьте следующее в /etc/pam.d/system-auth. Сначала добавьте в начало строк auth:
auth required pam_tally2.so deny=5 onerr=fail unlock_time=900
Во-вторых, добавьте в начало строк учетной записи:
account required pam_tally2.so
РЕДАКТИРОВАТЬ:
Я получаю сообщение об ошибке, сбрасывая pam_tally2 во время одной из попыток входа в систему.
user@localhost's password: (bad password)
Permission denied, please try again.
user@localhost's password: (bad password)
Permission denied, please try again.
(сбросить pam_tally2 из другой оболочки)
user@localhost's password: (good password)
Account locked due to ...
Account locked due to ...
Last login: ...
[user@localhost ~]$
Вам также понадобится ChallengeResponseAuthentication yes
в /etc/ssh/sshd_config
.
Чтобы отобразить ошибку, pam
нужна функция разговора.
Эта опция указывает ssh предоставить более полную функцию диалога PAM, которая охватывает, среди прочего, предоставление вывода и запрос произвольного ввода (вместо того, чтобы просто передать пароль пользователем sshd
).
Редактировать: Ты захочешь PasswordAuthentication no
чтобы гарантировать, что ввод пароля всегда проходит через этот диалог PAM.
К сожалению, то, что вам нужно, недоступно. OpenSSH разрешает или запрещает аутентификацию. Это не даст злоумышленнику или неуклюжему пользователю никакой дополнительной информации, и это стандартное поведение. PAM не знает о сетевом взаимодействии, которое OpenSSH использует, или о любом другом поведении, зависящем от конкретного приложения.. Это просто набор модулей для аутентификации.
Кроме того, pam_tally2 не предоставляет никаких определяемых пользователем директив сообщений об ошибках, поэтому вы в любом случае можете полагаться только на то, что находится в вашем системном журнале.
Один из методов, который вы можете использовать, - это изменение кодовой базы OpenSSH (не слишком сложно), но это выходит за рамки этого вопроса.