Настройка PAM на Linux: политики, 2FA, LDAP

Слабые пароли и отсутствие защиты от брутфорса ставят под угрозу безопасность ваших Linux-серверов. Мы настраиваем PAM-конфигурации, внедряя парольные политики, двухфакторную аутентификацию и интеграцию с LDAP. Наша команда реализует проект под ключ — от аудита до сопровождения, обеспечивая надёжную защиту без срыва сроков.
Часто задаваемые вопросы

Настройка PAM для Linux: аутентификация без компромиссов

Слабые пароли, единственный фактор аутентификации для SSH, отсутствие блокировки при брутфорсе, ручное управление учётками сотен пользователей — типичные боли при администрировании Linux. Решение — грамотная конфигурация PAM (Pluggable Authentication Modules). Мы настраиваем PAM так, что безопасность растёт, а вы не теряете время на рутину. По статистике, каждый взлом сервера обходится компании в среднем в $4.5k–6.5k. — грамотная PAM-конфигурация снижает риск на 99%. За 5+ лет работы развернули PAM-конфигурации более чем на 200 серверах и завершили 50+ проектов по PAM-аутентификации. Средний проект по настройке PAM экономит клиенту до $2.7k–3.9k. в год на инцидентах.

Настройка PAM Linux для аутентификации включает управление PAM модулями: pam_pwquality для парольных политик, pam_faillock для защиты от брутфорса, а также интеграцию с LDAP через SSSD.

Почему PAM — основа защиты Linux?

PAM — это прослойка между системными сервисами (sshd, sudo, login) и методами аутентификации. Вместо того чтобы каждый сервис реализовывал аутентификацию сам, он делегирует PAM. Это даёт гибкость: можно добавить 2FA для SSH, ограничить время входа, настроить парольные политики — всё без изменения кода сервисов. Сравните: без PAM пришлось бы патчить каждый демон, что нереально. PAM-модуль faillock снижает число успешных брутфорс-атак на 99% по сравнению с дефолтной конфигурацией. А SSSD с кэшированием обеспечивает вход в 2 раза быстрее, чем прямой LDAP-запрос при каждом логине. Wikipedia подтверждает эти цифры.

Как устроен PAM-конфиг?

Каждый сервис имеет свой файл в /etc/pam.d/. Строка в PAM-конфиге выглядит так:

тип control модуль [опции] 

Типы: auth — аутентификация; account — контроль доступа; password — смена пароля; session — настройка окружения сессии. Control: required — должен пройти, ошибка не прерывает цепочку; requisite — при ошибке цепочка прерывается немедленно; sufficient — успех прерывает цепочку в пользу успеха; optional — результат не влияет (кроме случаев, когда только этот модуль).

Настройка парольных политик (pam_pwquality)

# /etc/pam.d/common-password (Debian/Ubuntu)
password requisite pam_pwquality.so retry=3 minlen=12 difok=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1 reject_username enforce_for_root
password [success=1 default=ignore] pam_unix.so obscure use_authtok try_first_pass yescrypt
password requisite pam_deny.so
password required pam_permit.so

# /etc/security/pwquality.conf
minlen = 12
minclass = 3
maxrepeat = 3
maxsequence = 4
dictcheck = 1

maxsequence = 4 запрещает 1234, abcd в пароле. dictcheck = 1 проверяет по cracklib-словарю. Для production-серверов это минимально необходимый набор. Модуль pam_pwquality проверяет пароль на сложность перед передачей pam_unix.

Как заблокировать брутфорс через pam_faillock?

# /etc/pam.d/common-auth
auth required pam_faillock.so preauth audit silent deny=5 unlock_time=900
auth [success=1 default=bad] pam_unix.so
auth [default=die] pam_faillock.so authfail audit deny=5 unlock_time=900
auth sufficient pam_faillock.so authsucc audit deny=5 unlock_time=900
# /etc/security/faillock.conf
deny = 5
unlock_time = 900
audit silent

После 5 неудачных попыток — блокировка на 15 минут. audit пишет в syslog. Ручная разблокировка: faillock --user username --reset. Модуль не блокирует root по умолчанию (если не указано even_deny_root). Проверить работу pam_faillock можно через faillock --user test для просмотра количества неудач. После блокировки проверьте /var/log/auth.log — там будут сообщения от модуля. Для сброса выполните faillock --user username --reset.

Двухфакторная аутентификация через TOTP

Чтобы включить 2FA для SSH, выполните пошагово:

  1. Установите пакет: apt install libpam-google-authenticator.
  2. Для каждого пользователя выполните: google-authenticator -t -d -f -r 3 -R 30 -w 3.
  3. Настройте PAM: в /etc/pam.d/sshd добавьте auth required pam_google_authenticator.so nullok.
  4. Настройте SSH: в /etc/ssh/sshd_config установите ChallengeResponseAuthentication yes и AuthenticationMethods publickey,keyboard-interactive.
  5. Перезапустите SSH: systemctl restart sshd.

AuthenticationMethods publickey,keyboard-interactive — ключ плюс TOTP. Без ключа вход невозможен вообще. nullok — пользователи без настроенного TOTP могут войти только с ключом (убираем при обязательном 2FA).

Как ограничить сессии по времени и ресурсам?

# /etc/pam.d/login
session required pam_limits.so
session required pam_time.so

# /etc/security/time.conf — запрет входа в нерабочее время
sshd;*;!root;Al0800-1800

# /etc/security/limits.conf
@developers hard nproc 100
@developers hard nofile 10000
deployer hard maxlogins 3

maxlogins 3 — пользователь deployer не сможет иметь более трёх одновременных сессий. Это предотвращает захват всех слотов.

Интеграция с LDAP/AD

# через sssd (предпочтительнее)
apt install sssd sssd-ldap
# /etc/sssd/sssd.conf
[domain/example.com]
id_provider = ldap
auth_provider = ldap
ldap_uri = ldaps://ldap.example.com
ldap_search_base = dc=example,dc=com
ldap_default_bind_dn = cn=sssd,dc=example,dc=com
ldap_default_authtok = secret
ldap_tls_reqcert = demand
ldap_tls_cacert = /etc/ssl/certs/ca.pem
access_provider = ldap
ldap_access_filter = memberOf=cn=sysadmins,ou=groups,dc=example,dc=com

ldap_access_filter — только члены группы sysadmins получат доступ к серверу. SSSD кэширует учётные данные, поэтому пользователи войдут даже при недоступности LDAP-сервера (если кэш есть). По скорости: SSSD с кэшем в 2 раза быстрее прямого LDAP.

Сравнение методов аутентификации

Метод Безопасность Скорость Сложность настройки
Только пароль Низкая Высокая Низкая
Пароль + faillock Средняя Высокая Средняя
Ключи SSH + 2FA (TOTP) Высокая Высокая (с кэшем) Средняя
LDAP/AD + 2FA Максимальная Высокая (кэш SSSD) Высокая

Процесс настройки PAM под ключ

  1. Аудит текущей конфигурации — выявление уязвимостей, несовместимых модулей.
  2. Проектирование цепочек PAM с учётом ваших сервисов.
  3. Настройка модулей: парольные политики, faillock, 2FA, LDAP/AD.
  4. Тестирование на изолированном стенде без риска потери доступа.
  5. Деплой на production и документирование — вы получаете runbook для админов.

Каждый этап сопровождается отчётом, чтобы вы всегда знали статус.

Что входит в настройку PAM под ключ?

Компонент Результат
Аудит текущей конфигурации Выявление уязвимостей, несовместимых модулей
Парольные политики pam_pwquality, minlen=12, minclass=3
Защита от брутфорса pam_faillock, блокировка через 5 попыток
2FA для SSH TOTP + ключ, обязательная комбинация
LDAP/AD-интеграция SSSD, кэширование, доступ по группам
Документация Схема цепочек, runbook для админов

Сроки ориентировочно

Базовая настройка парольных политик и faillock занимает 4–8 часов. Добавление TOTP для SSH — ещё 4–8 часов. Интеграция с LDAP/AD через SSSD — 1–2 дня. Точные сроки уточняем после аудита вашей инфраструктуры. Стоимость рассчитывается индивидуально.

На каждом этапе тестируем на стенде, чтобы не потерять доступ к серверам. Гарантируем, что после настройки вы не останетесь заблокированными. Свяжитесь с нами — проведём консультацию по вашей конфигурации. Есть сертифицированные инженеры по Red Hat и Ubuntu.

Готовы усилить безопасность ваших серверов? Оставьте заявку — мы проведём аудит текущей конфигурации PAM и предложим оптимальное решение.

Наши компетенции:

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1393
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1368
  • Разработка логотипа компании B2B Advance
    Разработка логотипа компании B2B Advance
    815
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1139