Как включить блокировку учетной записи с помощью pam_tally?

Как включить блокировку учетной записи с помощью pam_tally?

Я пытаюсь реализовать блокировку учетной записи в 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/

иличеловек pam_tally

решение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 после нескольких неудачных попыток входа в систему

надеюсь, это поможет и кому-то еще.

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