Как заблокировать пользователей после 5 неудачных попыток входа?

12

Как заблокировать пользователей после 5 неудачных попыток входа?

Я собрал несколько дистрибутивов / версий, как это сделать, но я не могу проверить это.

RHEL4 : добавив:

auth        required      /lib/security/$ISA/pam_tally.so no_magic_root
account     required      /lib/security/$ISA/pam_tally.so deny=5 reset no_magic_root

чтобы:

/etc/pam.d/system-auth
/etc/pam.d/login
/etc/pam.d/sshd

RHEL4 : ???

SLES9 : добавив:

auth required pam_tally.so no_magic_root
account required pam_tally.so deny=5 reset no_magic_root

чтобы:

/etc/pam.d/login
/etc/pam.d/sshd

SLES11 или SLES10 : добавив:

auth required pam_tally.so deny=5 onerr=fail per_user no_lock_time

чтобы:

/etc/pam.d/common-auth

И, добавив:

account required pam_tally.so

чтобы:

/etc/pam.d/common-account

ВОПРОС : Может ли кто-нибудь подтвердить, что это рабочий / хороший способ блокировки пользователей после 5 неудачных попыток входа? ИЛИ КАК ЭТО СДЕЛАТЬ?

пс:

/sbin/pam_tally --user USERNAME --reset

полезно сделать перед этим? Могу ли я заблокировать пользователя root с этим? Редактирование PAM - очень чувствительная вещь, потому что люди могут заблокировать себя от сервера (я имею в виду, например, пользователя root). Любые намеки при этом?

Гаско Питер
источник
модуль tally - это способ сделать это, но я бы порекомендовал pam_tally2, так как исходный довольно сломанный и не интуитивно понятный. Кроме того, root открыт для блокировки таким способом, но вы должны включить его черезno_magic_root
Bratchley
Кстати, я бы не рекомендовал делать какую-либо блокировку для учетной записи root, это ваш аварийный люк на случай, если что-то пойдет не так (как, например, с блокировкой учетной записи), и у злоумышленников не должно быть никаких прямых векторов.
Братчли
SLES10 тоже нуждается в no_magic_root?
Гаско Петр
Все дистрибутивы GNU / Linux основаны на одном и том же базовом наборе исходных проектов, поэтому, если Novell не предпримет попытку изменить свою версию модуля pam_tally таким образом, чтобы это могло сбить людей с толку, в SuSE она должна быть такой же, как и в других дистрибутивах.
Братчли
1
Вы уверены, что это хорошая идея? Таким образом, каждый пользователь может легко предотвратить вход в систему любого другого пользователя. Использование IMO с большой задержкой более практично, но решайте сами.
Марко

Ответы:

17

Возможно, вы захотите взглянуть на fail2ban. Можно настроить блокировку учетной записи после заданного количества неудачных попыток, а затем разблокировку через заданный промежуток времени.

http://www.fail2ban.org/wiki/index.php/Downloads

Если вы действительно серьезно относитесь к использованию pam_tally, вы, вероятно, хотите использовать pam_tally2вместо этого. Должен быть установлен с любым текущим пакетом PAM. Вы можете сделать man pam_tally2, чтобы увидеть, как его использовать.

Вот пример, чтобы вы начали. Добавьте следующее в начало раздела auth в файле pam /etc/pam.d/password-auth:

auth        required      pam_tally2.so  file=/var/log/tallylog deny=3 even_deny_root unlock_time=1200

В том же файле добавьте это в раздел аккаунта:

account     required      pam_tally2.so

Приведенные выше параметры следующие:

  • file=/var/log/tallylog - Файл журнала по умолчанию используется для сохранения количества входов в систему.
  • deny=3 - Запретить доступ после 3 попыток и заблокировать пользователя.
  • even_deny_root - Политика также распространяется на пользователя root.
  • unlock_time=1200 - 20 минут (60 секунд * 20 минут = 1200 секунд)

Если вы не хотите блокировать root, замените even_deny_root на magic_root .

Это сомнительно, если вы хотите заблокировать учетную запись root. Вместо этого вы можете захотеть сделать что-то вроде этого, где корневая учетная запись может быть заблокирована, но только на более короткий срок, чем другие учетные записи:

auth        required      pam_tally2.so  file=/var/log/tallylog deny=3 even_deny_root unlock_time=1200 root_unlock_time=60

Это блокирует учетную запись root только на одну минуту, все остальные - обычные 1200 секунд.

Пример файла журнала будет выглядеть следующим образом:

$ ssh me@somemachine
me@somemachine's password:
Permission denied, please try again.
me@somemachine's password:
Permission denied, please try again.
me@somemachine's password:
Account locked due to 4 failed logins
Account locked due to 5 failed logins
Last login: Mon Jun 4 21:21:06 2013 from someothermachine

Вы можете узнать о заблокированных учетных записях, используя команду pam_tally2:

$ pam_tally2 --user=me
Login           Failures  Latest    failure     From
me                   5    06/04/13  21:21:06    someothermachine

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

pam_tally2 --user=me --reset
Login           Failures  Latest    failure     From
me                  5     06/04/13  21:21:06    someothermachine

Теперь аккаунт отображается в pam_tally2 примерно так:

$ pam_tally2 --user=me
Login           Failures   Latest   failure     From
me                 0

Ссылки

SLM
источник
2

pam_tally2сначала смутил меня, но я понял это после следующего man pam_tally2-

  EXAMPLES
   Add the following line to /etc/pam.d/login to lock the account after 4 failed logins.
   Root account will be locked as well. The accounts will be automatically unlocked after
   20 minutes. The module does not have to be called in the account phase because the
   login calls pam_setcred(3) correctly.

   auth     required       pam_securetty.so
   auth     required       pam_tally2.so deny=4 even_deny_root unlock_time=1200
   auth     required       pam_env.so
   auth     required       pam_unix.so

приведенная выше формулировка немного сбивает с толку, потому что вы на самом деле только добавляете pam_tally2.soстроку.

так что вы можете отредактировать /etc/pam.d/loginи добавить его ниже всех других authстрок:

   auth     required       pam_tally2.so deny=4 even_deny_root unlock_time=1200

или, если у вас есть, /etc/pam.d/system-authвы можете добавить его там.

Никакой перезагрузки или перезагрузки какого-либо сервиса не требуется - он сразу становится активным для новых локальных входов в систему.

примечание: если вы хотите pam_tally2обратиться к sshdдругим удаленным службам, а также к ним, вам также необходимо добавить строку /etc/pam.d/sshdи / или/etc/pam.d/password-auth


чтобы проверить работоспособность, сделайте неудачную попытку входа в систему с действительным пользователем, затем запустите pam_tally2

например, для пользователя с именем jacobrun:

  $ sudo pam_tally2 -u jacob

и он выведет что-то вроде:

  Login           Failures Latest   failure     From
  jacob           1        01/01/01 11:00:00    tty1

если слишком много попыток входа в систему не удается и учетная запись заблокирована, вы можете вручную разблокировать учетную запись:

  $ sudo pam_tally2 -u jacob --reset
бесконечномерным и т.д.
источник