PAM、NSSとLDAPの連携
- LinuxでLDAPと連携して認証を行うには、PAMとNSSを使う
- PAM: pluggable authentication module
- NSS: name service switch
LDAPサーバの設定
- LDAP上に、accountオブジェクトクラスとposixgroupオブジェクトクラスを使ってユーザアカウントとグループのデータを格納する
- これらのオブジェクトは cosine.scheme と nis.scheme に定義されているので、これらをLDAPサーバで読み込むことが必要(slapd.confに記述)
データの追加
- ユーザデータはLDIFで記述してaddしてもよいが、MigrationToolを使うとローカルのアカウント情報をLDAPに移行することもできる
- パスワードは slappasswd でハッシュ化して登録する
クライアントホストの設定
NSSとPAMの設定が必要
NSSの設定
LDAPのアカウント情報を参照するために用いる
LDAP参照用のNSSモジュールは古いnss_ldap
と新しいnslcd(nss-pam-ldapd)
がある
-
参照するLDAPサーバの設定
- nss_ldap ⇒
/etc/ldap.conf
または/etc/pam_ldap.conf
または/etc/pam_ldap.secret
- nslcd(nss-pam-ldapd) ⇒
/etc/nslcd.conf
- nss_ldap ⇒
-
LDAPのアカウント情報をアカウントマスタとして使用することの設定
/etc/nsswitch.conf
に ldap を追記する。記載順序が参照順序になるので、LDAPアカウントを優先的に見るならfilesより前に記述。
paswd: files ldap
shadow: files ldap
group: files ldap
- /etc/openldap/ldap.conf の設定
ldapsearchなどのコマンドのデフォルト値の設定
pamの設定
認証をつかさどる。NSSが取得したLDAPの情報で認証することを許可する
/etc/pam.d/system-auth
または /etc/pam.d/password-auth
に追記
設定とテスト
-
authconfig-tui
NSSとPAMの設定を一括で実施する(RHEL系) -
getent
クライアントでLDAPの参照ができているかどうかテストするとき使う
キャッシュ
- nscd(Name Service Chache Daemon)を使うとLDAP認証情報をクライアント側でキャッシュできる
Active Directory、KerberosとLDAPの連携
Kerberosとは
-
身元を保証するチケットを使ってシングルサインオンを実現する機構
-
認証された対象をプリンシパルと呼ぶ
- ユーザプリンシパル
- サービスプリンシパル
- ホストプリンシパル
-
Kerberosサーバには秘密鍵を置く。ユーザは秘密鍵を生成するためのパスワードを記憶しておく
-
KerberoからTGTを取得するにはkinitコマンドもしくは pam_krb5を用いる
- kinit パスワードを直接入力する
- pam_krb5 OSログインパスワードを使う
Kerberoの設定
- kdc.conf サーバの設定ファイル
- krb5.conf クライアントの設定ファイル
Kerberosの構築手順
- confの作成
- kdbの作成
- rootのユーザプリンシパルの作成
アクセス制御を行わずにKerberosデータベースを制御できるkadmin.local
コマンドを使う - サーバの起動
service kadmin start
service krb5kdc start
- ユーザプリンシパルの作成
kadmin: add_princで生成
-
LDAPサーバ用のサービスプリンシパルの作成
- LDAPサーバで
kadmin
コマンドを使用し、Kerberosサーバにプリンシパルを作成する -
ktadd
コマンドで秘密鍵をKerberosサーバの/etc/openldap/ldap.keytab
に保存する
- LDAPサーバで
-
LDAPサーバにKerberos用の設定を追加して再起動
/etc/slapd.conf
と/etc/sysconfig/ldap
に設定を追記して再起動 -
各ホストでポストプリンシパルを作成
-
pam nssの設定にKerberosを追加
-
上記完成すると、ポストログイン時にKerberosでチケットが発行され、ほかホストへパスワードなしでログインできる
※sshではGSSAPIAutentication yes の設定必要。