Як заблокувати користувачів після 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 невдалих спроб входу? АБО ЯК ЗРОБИТИ ЦЕ?

ps:

/sbin/pam_tally --user USERNAME --reset

корисно щось робити, перш ніж робити це? Чи можу я заблокувати користувач root цим? Редагування PAM - дуже чутлива річ, тому що люди можуть закрити себе з сервера (я маю на увазі напр .: root user). Будь-які натяки при цьому?


модуль Tally - це спосіб зробити це, але я б рекомендував pam_tally2, оскільки оригінальний досить зламаний та неінтуїтивний. Крім того, root відкритий для блокування таким чином, але ви повинні ввімкнути це черезno_magic_root
Bratchley

До речі, я б не рекомендував робити якісь блокування в кореневому обліковому записі, ось ваш випускний люк повинен щось піти не так (як, наприклад, із блокуванням облікового запису), а зловмисники не повинні мати жодних прямих векторів на ньому.
Братчлі

Чи потрібен також SLES10 no_magic_root?
gasko peter

Усі дистрибутиви GNU / Linux базуються на тому ж самому базовому наборі проектів, що перебувають у потоці, тому, якщо Novell не докладе зусиль, щоб змінити свою версію модуля pam_tally таким чином, що бентежить людей, він повинен бути таким же на SuSE, як і в інших дистрибутивах.
Братчлі

1
Ви впевнені, що це гарна ідея? Таким чином, кожен користувач може легко запобігти входу будь-якого іншого користувача. Використання великої затримки IMO є більш практичним, але вирішуйте самі.
Марко

Відповіді:


17

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

http://www.fail2ban.org/wiki/index.php/Завантажити

Якщо ви дійсно серйозно ставитесь до використання pam_tally, ви, ймовірно, хочете скористатися pam_tally2натомість. Потрібно встановити з будь-яким поточним пакетом PAM. Ви можете зробити чоловіка pam_tally2, щоб побачити, як ним користуватися.

Ось приклад для початку роботи. Додайте наступне до початку розділу аутентифікації у файлі пам’яті /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 сек.)

Якщо ви не хочете заблокувати корінь, змініть even_deny_root на magic_root .

Сумнівно, чи хочете ви заблокувати кореневий рахунок. Ви можете замість цього зробити щось подібне, коли кореневий рахунок може бути заблокований, але лише на менший термін, ніж інші облікові записи:

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

Це заблокує кореневий рахунок лише на хвилину, а всі інші - звичайні 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

Список літератури


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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.