Перейти к основному содержанию

Linux — не пускает пользователя на сервер по SSH (pam_tally2)

Пользователя не пускает на сервер под доменной учётной записью на сервер Linux по SSH с ошибкой:

Access deny

Active Directory аутентификация в Linux может быть настроена разными способами. Сразу скажу, что здесь рассматривается частный случай одного Linux сервера, который каким-то образом настроен на AD аутентификацию. Причём проблема оказалась не в AD.

Первая мысль: что-то не так с учётной записью в AD. Linux — он же стабильный, что в нём может сломаться? А винда дырявая...

Проверил контроллеры домена, нигде в логах нет неуспешной аутентификации. Все аутентификации на месте, но они успешны. Учётная запись pupkin не заблокирована. Полезем в Linux на машину, к которой у пользователя нет доступа по SSH.

В логах auth.log имеется:

sshd[9867]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=10.11.12.13  user=pupkin
sshd[9867]: pam_krb5(sshd:auth): user pupkin authenticated as pupkin@DOMAIN.LOCAL
sshd[9867]: pam_tally2(sshd:auth): user pupkin (10060) tally 23, deny 5
sshd[9714]: error: PAM: Authentication failure for pupkin from 10.11.12.13

Первая строка, собственное, меня и смутила. Из-за надписи "authentication failure" я почему-то полез проверять саму учётную запись, однако, нужно было смотреть дальше.

Смотрим на строку:

sshd[9867]: pam_krb5(sshd:auth): user pupkin authenticated as pupkin@DOMAIN.LOCAL

Пользователь pupkin успешно аутентифицировался в домене DOMAIN.LOCAL. Можно было на контроллер и не смотреть. Kerberos аутентификация УСПЕШНА.

Смотрим дальше:

pam_tally2(sshd:auth): user pupkin (10060) tally 23, deny 5

И здесь всё становится понятно. Учетная запись ЗАБЛОКИРОВАНА из-за превышения лимита неудачных попыток входа.

  • Счетчик неудачных попыток: 23
  • Лимит блокировки: 5 попыток
sshd[9714]: error: PAM: Authentication failure for pupkin from 10.11.12.13

Итоговый отказ в доступе. Учетная запись pupkin заблокирована модулем pam_tally2 несмотря на успешную Kerberos-аутентификацию.

Что сделать?

Разблокировать учетную запись:

# Сбросить счетчик неудачных попыток
pam_tally2 --user pupkin --reset

# Или в некоторых системах:
faillock --user pupkin --reset

Проверить текущий статус:

# Посмотреть счетчик блокировок
pam_tally2 --user pupkin

# Или
faillock --user pupkin

Проверить настройки PAM. Посмотрите конфигурацию /etc/pam.d/sshd:

grep -A5 -B5 pam_tally2 /etc/pam.d/sshd

Для предотвращения в будущем:

  • Рассмотреть увеличение лимита deny в настройках pam_tally2
  • Проверить, почему происходят множественные неудачные попытки
  • Убедиться, что клиенты правильно настроены для Kerberos-аутентификации

pam_tally2.so

pam_tally2 — это модуль PAM (Pluggable Authentication Modules), который отслеживает количество неудачных попыток аутентификации и может блокировать учетные записи при превышении лимита, что предотвращает brute-force атаки.

В более новых системах рекомендуется использовать модуль pam_faillock.

Конфигурация pam_tally2

В /etc/pam.d/sshd или /etc/pam.d/system-auth:

# Добавить для учета неудачных попыток
auth required pam_tally2.so onerr=fail deny=5 unlock_time=300

# Обнулить счетчик при успешном входе
account required pam_tally2.so

Основные параметры:

  • deny=N - количество неудачных попыток до блокировки (по умолчанию 3)
  • unlock_time=N - время блокировки в секундах (0 = навсегда)
  • onerr=fail|succeed - поведение при ошибках модуля
  • no_lock_time - не показывать время разблокировки
  • magic_root - не учитывать попытки от root
  • even_deny_root - блокировать и root тоже
  • root_unlock_time=N - время блокировки для root

Неудачные попытки входа можно смотреть в файле /var/log/faillock (или /var/log/tallylog).

Команды управления

Просмотр статистики:

# Показать счетчики для всех пользователей
pam_tally2

# Для конкретного пользователя
pam_tally2 --user username

# Подробный вывод
pam_tally2 --user username --verbose

# Для конкретного пользователя faillock
faillock --user username

Сброс счетчика:

# Разблокировать пользователя
pam_tally2 --user username --reset

# Сбросить все счетчики
pam_tally2 --reset

# Сброс faillock
faillock --user username --reset

Проверка файла базы данных:

# Просмотр бинарного файла (если используется)
faillock --user username

# или в некоторых системах
pam_tally2 --user username --file /var/log/faillock

Теги

 

Похожие материалы

Установка и настройка keepalived на примере MultiFactor Ldap Adapter

Есть два сервера с операционной системой Ubuntu 20.04.4 LTS. Но обоих серверах развёрнут LDAP proxy сервер на базе Multifactor. По сути это обычные LDAPS сервера, которые неплохо было бы объединить в один отказоустойчивый кластер Master— Slave с плавающим виртуальным IP-адресом. Сделаем это с помощью keepalived.