Настройка 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, выполните пошагово:
- Установите пакет:
apt install libpam-google-authenticator. - Для каждого пользователя выполните:
google-authenticator -t -d -f -r 3 -R 30 -w 3. - Настройте PAM: в
/etc/pam.d/sshdдобавьтеauth required pam_google_authenticator.so nullok. - Настройте SSH: в
/etc/ssh/sshd_configустановитеChallengeResponseAuthentication yesиAuthenticationMethods publickey,keyboard-interactive. - Перезапустите 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 3maxlogins 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 под ключ
- Аудит текущей конфигурации — выявление уязвимостей, несовместимых модулей.
- Проектирование цепочек PAM с учётом ваших сервисов.
- Настройка модулей: парольные политики, faillock, 2FA, LDAP/AD.
- Тестирование на изолированном стенде без риска потери доступа.
- Деплой на 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 и предложим оптимальное решение.







