Налаштування PAM на Linux: політики, 2FA, LDAP

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

Налаштування 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 = 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