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

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

Теги

 

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

Nessus — установка на Ubuntu

Понадобилось мне просканировать один хост на наличие уязвимостей. Нет ничего лучше для этих целей, чем сканер безопасноcти Nessus. Версия Essentials позволяет бесплатно просканировать до 16 IP адресов.

Теги