Я пытаюсь реализовать блокировку учетной записи в Ubuntu с помощью pam_tally. Я пробовал добавлять следующие строки в /etc/pam.d/common-auth
auth required pam_tally.so deny=3
account required pam_tally.so
Сбои регистрируются, но учетная запись не блокируется даже при достижении максимального количества сбоев. Я пробую это, напрямую войдя в систему (экран входа в GNOME).
Есть какие-нибудь советы? Нужно ли мне добавлять pam.d/gdm или файл входа?
решение1
Объяснение общей авторизации
Если вы просто ищете быстрое решение, перейдите ниже, чтобыКак настроить common-auth для блокировки.
Надеюсь, это поможет прояснить, как /etc/pam.d/common-auth
настраивается блокировка.
Если убрать все комментарии /etc/pam.d/common-auth
, то останется следующее:
auth [success=1 default=ignore] pam_unix.so nullok_secure
auth requisite pam_deny.so
auth required pam_permit.so
Давайте рассмотрим каждую строку этого файла и то, как она используется.
auth [success=1 default=ignore] pam_unix.so nullok_secure
Считывает введенный пароль.Если пароль правильный, то следующая строка файла пропускается (та, что с pam_deny.so
). Вы можете изменить количество пропущенных строк, установив значение в success=1
.
auth requisite pam_deny.so
Немедленно провалите попытку входа в систему.Слово requisite
здесь говорит аутентификации немедленно прекратиться в случае неудачи. Другие строки используют required
вместо этого, что ждет до конца модуля, чтобы сообщить о неудаче.
auth required pam_permit.so
Разрешает попытку входа в систему.Это делается с помощью pam_permit.so
.
Как только это будет установлено, можно будет лучше понять настройку модуля для блокировки пользователя.
Как настроить common-auth для блокировки
Для Убунту:
Добавьте следующую строкупосле pam_deny.so и перед pam_permit.so:
auth required pam_tally2.so onerr=fail deny=3 unlock_time=1800
Измените строку pam_deny.so на следующую:
auth required pam_deny.so
Весь файл будет выглядеть так:
auth [success=1 default=ignore] pam_unix.so nullok_secure
auth required pam_deny.so
auth required pam_tally2.so onerr=fail deny=3 unlock_time=1800
auth required pam_permit.so
Вы можете настроить следующие параметры в соответствии со своими потребностями:
deny=3
- Количество попыток, разрешенных до блокировки.unlock_time=1800
- Количество секунд, по истечении которых вам будет разрешено снова попытаться войти в систему.(Дополнительное примечание: если система разблокируется после серии неудачных попыток, и вы не сможете пройти аутентификацию снова, у вас не будет еще 2 попыток для аутентификации. Система заставит вас ждатьunlock-time
снова.)
Большинство ресурсов рекомендуют добавлять эту строку в начало файла, подчеркивая важность порядка; однако в настольных системах Ubuntu эта конфигурация может заблокировать вам доступ к экрану входа в графический интерфейс.
Почему это происходит? Похоже, что когда вы выбираете пользователя на экране входа в Ubuntu, модуль PAM немедленно запускается и ждет на строке pam_unix.so
(строке ввода пароля) перед продолжением. Если вы поместите строку pam_tally2.so
перед этой «точкой остановки», блокировка немедленно активируется, а если вы отойдете от пользователя, нажав клавиши со стрелками, модуль подаст сигнал о неудачной попытке входа в систему и pam_tally2
увеличится. Даже не введя пароль, вы вскоре застрянете в ситуации, похожей на ту, что приведена ниже:
Типичный экран входа в Ubuntu с неправильно настроенным файлом common-auth.
Размещение pam_tally2.so
строки в конце файла решает эту проблему. В этой конфигурации поддерживается правильный порядок; первая строка переходит к pam_deny.so
или pam_permit.so
основывается на действительности пароля, и к моменту pam_tally2.so
достижения этого момента любые неверные записи пароля уже указаны.
Даже если pam_permit.so
достигнуто независимо от введенного пароля, модуль всегда будет терпеть неудачу, если pam_deny.so
также достигнуто. Это потому, что pam_deny.so
строка содержит required
; это позволит остальным строкам работать, но сам модуль в конце концов даст сбой.
Для получения более подробной информации о том, как работает PAM, вы можете поискать в Google «Как работает PAM» или просто зайти сюда:http://www.tuxradar.com/content/how-pam-works
Этого должно хватить!
решение2
Прошло некоторое время с тех пор, как я это видел, но
Я думаю, вам нужно отредактировать/etc/pam.d/common-auth
Добавьте это ввершинафайла (порядок правил имеет значение).
auth required pam_tally.so per_user magic_root onerr=fail
Затем вы устанавливаете количество разрешенных попыток.
sudo faillog -m 3
Чтобы разблокировать аккаунт
faillog -u login_name -r
для получения дополнительной информации см.
Мой блогhttp://blog.bodhizazen.com/linux/ubuntu-how-to-faillog/
решение3
Вы также можете попробовать faillock, чтобы заблокировать учетные записи пользователей после n неудачных попыток входа в систему.
Мне удалось заставить его работать, следуя инструкциям по ссылке ниже, в которых используется pam_faillock.so, который, как я полагаю, работает как в Ubuntu, так и в CentOS.
В CentOS и подобных производных:
/etc/pam.d/system-auth
/etc/pam.d/password-auth
В Ubuntu/Debian и подобных производных:
/etc/pam.d/common-auth
/etc/pam.d/common-account
Блокировка учетной записи пользователя Linux после нескольких неудачных попыток входа в систему
надеюсь, это поможет и кому-то еще.