Назад | Перейти на главную страницу

Кэширование учетных данных OpenLDAP для автономного использования на ноутбуках

Наши клиенты (Ubuntu 14.04) могут входить в систему с входом LDAP. Как только у них нет сети, они не могут войти в систему с помощью LDAP.

Есть ли способ кэшировать эти пароли и имена пользователей, чтобы ноутбуки могли работать, если у них нет соединения LDAP?

Debian и Ubuntu предоставляют пакет libpam-ccreds, который кэширует учетные данные для входа в сеть. Из описания пакета:

Этот пакет предоставляет рабочие станции Linux средства для локальной аутентификации с использованием корпоративной идентификации, когда сеть недоступна. Используемый вместе с утилитой nss_updatedb, он обеспечивает механизм для автономного использования сетевых каталогов. Они предназначены для работы с libpam-ldap и libnss-ldap.

Вы можете использовать демон sssd.

У него есть функция учетных данных кеша в файле конфигурации:

cache_credentials = true

После входа в систему учетные данные пользователя кэшируются, чтобы он мог снова войти в систему без доступа к серверу LDAP.

Мой OpenLDAP был базовой настройкой без SSL или TLS, я думаю, это была проблема.

Я загрузил устройство для OpenLDAP через http://www.turnkeylinux.org/openldap и настройте его за считанные минуты. Это устройство поддерживает SSL и TLS на основе самоподписанного сертификата.

Теперь с настроенным TLS и самоподписанным сертификатом параметр ldap_tls_reqcert = never должен использоваться в файле sssd.conf.

Для кеширования учетных данных в Linux в основном используются две программы sssd и ccreds как упоминалось в других ответах. Я попытался sssd но он установил большое количество дополнительных разделяемых библиотек и зависимых пакетов, которые мне не нужны. Поэтому я решил использовать легкий ccreds. Но мне не удалось найти подробных инструкций, как ее использовать, в основном только общие советы по использованию этой программы. Итак, я уточню ответ @AndrewSchulman поделиться с сообществом, как мне это удалось. Я использую установку Debian Buster и работаю онлайн-система аутентификации / авторизации Kerberos / OpenLDAP. Я получаю действующий билет Kerberos с kinit и при входе в систему.

Сначала установите необходимые программы:

~$ sudo apt install libnss-db nss-updatedb libpam-ccreds

С участием sudo pam-auth-update Я установил параметры

[*] Ccreds credential caching - password saving
[*] Ccreds credential caching - password checking

В /etc/nsswitch.conf Мне нужно изменить:

passwd:         files ldap [NOTFOUND=return] db
group:          files ldap [NOTFOUND=return] db

Теперь я могу проверить, созданы ли кеширующие базы данных:

~$ sudo nss_updatedb ldap
passwd... done.
group... done.
~$ ls -l /var/lib/misc/*.db
-rw-r--r-- 1 root root 8192 Feb 26 12:46 /var/lib/misc/group.db
-rw-r--r-- 1 root root 8192 Feb 26 12:46 /var/lib/misc/passwd.db

~$ su -l ingo
ingo: ~$ logout
~$ ls -l /var/cache/.security.db
-rw------- 1 root ingo 8192 Feb 26 12:55 /var/cache/.security.db

~$ sudo cc_dump
Credential Type  User             Service  Cached Credentials
----------------------------------------------------------------------------------
Salted SHA1      ingo             any     c2da4cd14bd00bd7ecd72ab15e565e9149b46fd5

Нет, это не мои учетные данные SHA1 ;-) Поскольку я использую пароль в виде открытого текста в командной строке, я не буду кэшировать его в истории bash.

~$ history -a
~$ sudo cc_test -validate any ingo <password>
pam_cc_validate_credentials: Success
~$ history -c
~$ history -r

Вы должны найти пользователей и группы, которые определены только в каталоге LDAP, и у вас должна быть возможность войти в систему, даже если вы не в сети:

~$ sudo ip link set eth0 down
~$ getent passwd|group
~$ su -l ingo
ingo: ~$ logout
~$ sudo ip link set if up

Я заметил некоторые задержки после установки, но они исчезают после перезагрузки.


Ссылки:
ubuntu - PamCcredsHowto