Налаштування PAM для Linux: аутентифікація без компромісів
Слабкі паролі, єдиний фактор аутентифікації для SSH, відсутність блокування при брутфорсі, ручне керування обліковками сотень користувачів — типові болі при адмініструванні Linux. Рішення — грамотна конфігурація PAM (Pluggable Authentication Modules). Ми налаштовуємо PAM так, що безпека зростає, а ви не втрачаєте час на рутину. За статистикою, кожен злом сервера призводить до значних збитків — грамотна PAM-конфігурація знижує ризик на 99%. За 5+ років роботи розгорнули PAM-конфігурації більш ніж на 200 серверах та завершили 50+ проєктів з PAM-аутентифікації.
Налаштування 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 = 1maxsequence = 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 і запропонуємо оптимальне рішення.







