外部認証に接続するように LDAP クライアントを構成する方法
LDAP (Lightweight Directory Access Protocol の略) は業界標準であり、ディレクトリ サービスにアクセスするために広く使用されているプロトコルのセットです。
ディレクトリ サービスとは、簡単に言うと、読み取りアクセス用に最適化された集中型のネットワーク ベースのデータベースです。アプリケーション間で共有する必要がある情報、または高度に分散されている情報を保存し、その情報へのアクセスを提供します。
ディレクトリ サービスは、ユーザー、システム、ネットワーク、アプリケーション、およびサービスに関する情報をネットワーク全体で共有するのに役立ち、イントラネットおよびインターネット アプリケーションの開発において重要な役割を果たします。
LDAP の一般的な使用例は、ユーザー名とパスワードの集中ストレージを提供することです。これにより、さまざまなアプリケーション (またはサービス) が LDAP サーバーに接続してユーザーを検証できるようになります。
動作するLDAPサーバーをセットアップしたら、クライアントに接続するためのライブラリをインストールする必要があります。この記事では、外部認証ソースに接続するように LDAP クライアントを構成する方法を説明します。
LDAP ベースの認証用に LDAP サーバーをセットアップしていない場合は、すでに動作する LDAP サーバー環境があることを願っています。
Ubuntu および CentOS で LDAP クライアントをインストールおよび構成する方法
クライアント システムでは、認証メカニズムが LDAP サーバーで正しく機能するように、いくつかの必要なパッケージをインストールする必要があります。
Ubuntu 16.04 および 18.04 での LDAP クライアントの構成
まず、次のコマンドを実行して必要なパッケージをインストールします。
sudo apt update && sudo apt install libnss-ldap libpam-ldap ldap-utils nscd
インストール中に、LDAP サーバーの詳細の入力を求められます (環境に応じて値を入力します)。自動インストールされる ldap-auth-config パッケージは、入力した入力に基づいてほとんどの構成を実行することに注意してください。
次に、LDAP 検索ベースの名前を入力します。スクリーンショットに示すように、この目的でドメイン名のコンポーネントを使用できます。
また、使用する LDAP バージョンを選択し、[OK] をクリックします。
ここで、pam を使用するパスワード ユーティリティがローカル パスワードを変更する場合と同様に動作できるようにオプションを設定し、はい をクリックして続行します。
次に、次のオプションを使用して、LDAP データベースへのログイン要件を無効にします。
また、root の LDAP アカウントを定義し、「OK」をクリックします。
次に、ldap-auth-config が root の LDAP アカウントを使用して LDAP ディレクトリにログインしようとするときに使用するパスワードを入力します。
ダイアログの結果は、ファイル /etc/ldap.conf に保存されます。変更を加えたい場合は、お気に入りのコマンド ライン エディターを使用してこのファイルを開いて編集します。
次に、実行して NSS の LDAP プロファイルを構成します。
sudo auth-client-config -t nss -p lac_ldap
次に、PAM 構成を更新して、認証に LDAP を使用するようにシステムを構成します。メニューから、LDAP および必要なその他の認証メカニズムを選択します。これで、LDAP ベースの資格情報を使用してログインできるようになります。
sudo pam-auth-update
ユーザーのホーム ディレクトリを自動的に作成する場合は、共通セッション PAM ファイルでもう 1 つの構成を実行する必要があります。
sudo vim /etc/pam.d/common-session
この行をその中に追加します。
session required pam_mkhomedir.so skel=/etc/skel umask=077
変更を保存してファイルを閉じます。次に、次のコマンドを使用してNCSD (ネーム サービス キャッシュ デーモン) サービスを再起動します。
sudo systemctl restart nscd
sudo systemctl enable nscd
注: レプリケーションを使用している場合、LDAP クライアントは /etc/ldap.conf で指定された複数のサーバーを参照する必要があります。次の形式ですべてのサーバーを指定できます。
uri ldap://ldap1.example.com ldap://ldap2.example.com
これは、リクエストがタイムアウトになり、プロバイダ (ldap1.example.com) が応答しなくなると、コンシューマ (ldap2) が応答しなくなることを意味します。 .example.com)は、それを処理するために接続を試みます。
サーバーから特定のユーザーの LDAP エントリを確認するには、getent コマンドなどを実行します。
getent passwd tecmint
上記のコマンドで /etc/passwd ファイルから指定されたユーザーの詳細が表示された場合、クライアント マシンは LDAP サーバーで認証するように設定されており、LDAP ベースの認証情報を使用してログインできるはずです。 。
CentOS 7 で LDAP クライアントを構成する
必要なパッケージをインストールするには、次のコマンドを実行します。このセクションでは、root 以外の管理ユーザーとしてシステムを操作している場合は、sudo コマンドを使用してすべてのコマンドを実行することに注意してください。
yum update && yum install openldap openldap-clients nss-pam-ldapd
次に、クライアント システムが LDAP を使用して認証できるようにします。システム認証リソースを構成するためのインターフェイスであるauthconfig ユーティリティを使用できます。
次のコマンドを実行し、example.com を実際のドメインに置き換え、dc=example,dc=com を LDAP ドメイン コントローラーに置き換えます。
authconfig --enableldap --enableldapauth --ldapserver=ldap.example.com --ldapbasedn="dc=example,dc=com" --enablemkhomedir --update
上記のコマンドでは、--enablemkhomedir
オプションにより、ローカル ユーザーのホーム ディレクトリが存在しない場合、最初の接続時に作成されます。
次に、サーバーからの特定のユーザー (ユーザー tecmint など) の LDAP エントリがあるかどうかをテストします。
getent passwd tecmint
上記のコマンドは、/etc/passwd ファイルから指定されたユーザーの詳細を表示します。これは、クライアント マシンが LDAP サーバーで認証するように構成されていることを意味します。
重要: システムで SELinux が有効になっている場合は、mkhomedir によるホーム ディレクトリの自動作成を許可するルールを追加する必要があります。
詳細については、OpenLDAP ソフトウェア ドキュメント カタログから適切なドキュメントを参照してください。
まとめ
LDAP は、ディレクトリ サービスのクエリと変更に広く使用されているプロトコルです。このガイドでは、Ubuntu および CentOS クライアント マシンで外部認証ソースに接続するように LDAP クライアントを構成する方法を説明しました。以下のフィードバック フォームを使用して、ご質問やコメントを残すことができます。