web-dev-qa-db-ja.com

ラップトップでオフラインで使用するためのOpenLDAP資格情報のキャッシュ

クライアント(Ubuntu 14.04)はLDAPログインでログインできます。ネットワークがなくなると、LDAPでログインできなくなります。

それらのパスワードとユーザー名をキャッシュして、LDAP接続がなくてもラップトップが機能するようにする方法はありますか?

6
Joeri Feyen

DebianとUbuntuは、ネットワークログイン認証情報をキャッシュするlibpam-ccredsパッケージを提供しています。パッケージの説明から:

このパッケージは、ネットワークが利用できない場合に、LinuxワークステーションがエンタープライズIDを使用してローカルで認証するための手段を提供します。 nss_updatedbユーティリティと組み合わせて使用​​すると、ネットワークディレクトリを切断して使用するためのメカニズムが提供されます。これらは、libpam-ldapおよびlibnss-ldapと連携するように設計されています。

7
Andrew Schulman

sssdデーモン を使用できます。

設定ファイルにキャッシュ資格情報機能があります:

cache_credentials = true

ログイン後、LDAPサーバーにアクセスせずに再度ログインできるように、ユーザーの資格情報がキャッシュされます。

4
undefine

私のOpenLDAPはSSLまたはTLSを使用しない基本的なセットアップでしたが、これが問題だったと思います。

http://www.turnkeylinux.org/openldap を介してOpenLDAP用のアプライアンスをダウンロードし、数分でセットアップしました。このアプライアンスには、自己署名証明書に基づくSSLおよびTLSがあります。

これで、TLSが構成され、自己署名証明書が設定されたので、sssd.confファイルでオプションldap_tls_reqcert =を使用する必要はありません。

1
Joeri Feyen

Linuxで資格情報をキャッシュするには、他の回答で述べたように、主に2つのプログラムsssdおよびccredsが使用されます。 sssdを試してみましたが、必要のない追加の共有ライブラリと依存パッケージが大量にインストールされました。そこで、軽量のccredsを使用することにしました。しかし、私はそれを使用する方法の多くの詳細な説明を見つけることができませんでした、主にこのプログラムを使用するための一般的なヒントのみ。そこで、私は@ AndrewSchulmanの答えを詳しく説明し、私がそれをどのように管理したかをコミュニティと共有します。私はDebianバスターインストールを使用していて、動作する オンラインKerberos/OpenLDAP認証/承認システム を使用しています。 kinitおよびログオン時に有効なKerberosチケットを取得します。

まず、必要なプログラムをインストールします。

~$ 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

インストール後に遅延が発生しましたが、再起動後には消えます。


参照:
buntu-PamCcredsHowto

0
Ingo