SSSD — System Security Services
If you like this project, consider supporting me on Buy Me a Coffee ☕️
tags:
- identity
- sssd
- ldap
- authentication
- sysadmin
-
linux
🪪 SSSD Cheatsheet
Description
SSSD (System Security Services Daemon) is the standard PAM/nsswitch client for LDAP, FreeIPA, and Active Directory. It provides caching, offline auth, and HBAC/sudo integration. / SSSD — стандартный PAM/nsswitch-клиент для LDAP, FreeIPA и Active Directory. Кэширование, offline-аутентификация, интеграция с HBAC/sudo.
Common use cases / Типовые сценарии:
- LDAP/AD user auth on Linux servers / Аутентификация LDAP/AD на Linux
- Offline login with cache / Offline-вход с кэшем
- Sudo rules from directory / Sudo-правила из каталога
- HBAC-like access via AD groups / Доступ через AD-группы
Status: Actively maintained (SSSD upstream / distros). Alternatives: nslcd, pam_ldap, winbind (Samba). / Статус: активно развивается; альтернативы — nslcd, pam_ldap, winbind.
Paths: config /etc/sssd/sssd.conf (mode 0600); cache /var/lib/sss/db/; logs journalctl.
Cross-reference: OpenLDAP, FreeIPA, sudoers/PAM, Samba.
Installation
Install SSSD / Установка SSSD
# Debian/Ubuntu
apt install sssd sssd-ldap sssd-ad sssd-tools
# RHEL/Rocky/Alma/Fedora
dnf install sssd sssd-ldap sssd-ad
sssctl --version
systemctl enable --now sssd
Configuration
Main files / Основные файлы
/etc/sssd/sssd.conf
/etc/nsswitch.conf
/etc/pam.d/sshd
/etc/pam.d/system-auth
sssd.conf (LDAP) / sssd.conf (LDAP)
/etc/sssd/sssd.conf
[sssd]
domains = <DOMAIN>
config_file_version = 2
services = nss, pam, sudo, ssh
[domain/<DOMAIN>]
id_provider = ldap
auth_provider = ldap
access_provider = ldap
ldap_uri = ldap://<LDAP_HOST>
ldap_search_base = dc=example,dc=com
ldap_default_bind_dn = cn=admin,dc=example,dc=com
ldap_default_authtok = <SECRET_KEY>
ldap_default_authtok_type = password
cache_credentials = true
enumerate = false
default_shell = /bin/bash
fallback_homedir = /home/%u
use_fully_qualified_names = false
ldap_pwd_policy = shadow
access_provider = simple
simple_allow_groups = sysadmins
nsswitch / nsswitch
/etc/nsswitch.conf
passwd: files sss
shadow: files sss
group: files sss
sudoers: files sss
chmod 0600 /etc/sssd/sssd.conf
systemctl restart sssd
sssctl config-check
Core Management
sssctl / sssctl
sssctl config-check
sssctl domain-status <DOMAIN>
sssctl user-checks <USER>
sssctl cache-init
sssctl cache-remove
sssctl failover-show
Debug / Отладка
sssctl domain-debug <DOMAIN>
Sysadmin Operations
Logs / Логи
journalctl -u sssd --no-pager -n 50
journalctl -t sssd --no-pager -n 50
Logrotate / Ротация логов
/etc/logrotate.d/sssd
/var/log/sssd/*.log {
weekly
rotate 4
compress
delaycompress
missingok
notifempty
}
Security
Hardening / Ужесточение
sssd.confmust be mode 0600 root / Права 0600 root- Prefer TLS (ldaps/StartTLS) / Предпочитайте ldaps/StartTLS
- Limit
enumerate = falseunless needed / Не включайте enumerate без нужды - Restrict simple_allow_groups / Ограничьте simple_allow_groups
- Cache is local — protect host / Кэш локальный — защищайте хост
- Keep SSSD updated / Обновляйте SSSD
ls -l /etc/sssd/sssd.conf
# -rw------- 1 root root
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
getent passwd no users |
sssd down / wrong domain | systemctl status sssd |
| Auth fails | wrong bind DN/password | Check ldap_default_authtok |
| Offline login fails | cache empty | sssctl cache-init; enable cache |
sssctl config-check fails |
syntax | Fix sssd.conf |
| Slow logins | LDAP unreachable / timeout | Check network, reduce timeout |
sssctl config-check
sssctl domain-status <DOMAIN>
getent passwd <USER>
systemctl status sssd
Comparison Tables
NSS/PAM clients / NSS/PAM клиенты
| Client | Notes |
|---|---|
| SSSD | Cache, offline, multi-provider |
| nslcd | Simple LDAP client |
| winbind | Samba/AD focused |
| pam_ldap | Legacy LDAP PAM |
Production Runbooks
Runbook: Join server to LDAP via SSSD / Присоединение сервера к LDAP
- Install sssd packages / Установить пакеты
- Write sssd.conf with LDAP URI and bind DN / Настроить sssd.conf
chmod 0600 sssd.conf/ Исправить праваsssctl config-check/ Проверить конфигурациюsystemctl enable --now sssd/ Запустить sssdgetent passwd <USER>/ Проверить lookup- Test SSH login / Проверить SSH-вход
Runbook: SSSD cache rebuild / Пересборка кэша SSSD
- Stop sssd / Остановить sssd
sssctl cache-remove/ Очистить кэш- Start sssd / Запустить sssd
sssctl cache-init/ Инициализировать кэш- Verify user lookup / Проверить lookup