■Linux SSHログイン認証をOpenLDAPで一元管理
LDAPサーバに登録したユーザでのSSHログインおよびパスワード変更をアプリ系サーバで実現するための流れを、下記のパートに分けて記載していきます。- (1) OpenLDAPのインストールと起動 <<本編
- (2) LDIFによるLDAPサーバへのデータ登録
- (3) LDAP登録ユーザでのSSHログイン認証とパスワード変更
■本編の概要
openldap-servers、openldap-clients、nss-pam-ldapdのインストールおよびslapd.confの 設定と変更方法、slapdサービスの起動およびLDAPサーバへの接続確認方法についてまとめます。 特に、CentOS 6系からslapdの設定はslapd.dディレクトリ以下のファイルで定義される方式に変更と なっているので注意が必要です。今回はDB_CONFIGを使用し、旧来のslapd.confに設定した内容を slapd.dディレクトリに出力する手順をまとめます。
OS: CentOS 6.5 (64-bit) openldap: 2.4.23 nss-pam-ldapd: 0.7.5 LDAPサーバホスト名: ty-ldap01 アプリ系サーバホスト名: ty-app01,ty-app02
■インストール済みOpenLDAP関連パッケージの確認
[root@ty-ldap01 ~]# yum list installed '*ldap*' Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached hostfile * base: www.ftp.ne.jp * extras: www.ftp.ne.jp * updates: www.ftp.ne.jp Installed Packages apr-util-ldap.x86_64 1.3.9-3.el6_0.1 @anaconda-CentOS-201311272149.x86_64/6.5 openldap.x86_64 2.4.23-32.el6_4.1 @anaconda-CentOS-201311272149.x86_64/6.5 python-ldap.x86_64 2.3.10-1.el6 @anaconda-CentOS-201311272149.x86_64/6.5 [root@ty-ldap01 ~]#
■最低限必要なパッケージのインストール
openldap-servers、openldap-clients、nss-pam-ldapd を追加インストール
[root@ty-ldap01 ~]# yum install openldap-clients.x86_64 openldap-servers.x86_64 nss-pam-ldapd.x86_64 (中略) =========================================================================== Package Arch Version Repository Size =========================================================================== Installing: nss-pam-ldapd x86_64 0.7.5-18.2.el6_4 base 152 k openldap-clients x86_64 2.4.23-34.el6_5.1 updates 165 k openldap-servers x86_64 2.4.23-34.el6_5.1 updates 2.0 M Installing for dependencies: nscd x86_64 2.12-1.132.el6 base 219 k pam_ldap x86_64 185-11.el6 base 88 k Updating for dependencies: openldap x86_64 2.4.23-34.el6_5.1 updates 265 k Transaction Summary =========================================================================== Install 5 Package(s) Upgrade 1 Package(s) (以下略)
■インストール済みOpenLDAP関連パッケージの再確認
[root@ty-ldap01 ~]# yum list installed '*ldap*' (中略) Installed Packages apr-util-ldap.x86_64 1.3.9-3.el6_0.1 @anaconda-CentOS-201311272149.x86_64/6.5 nss-pam-ldapd.x86_64 0.7.5-18.2.el6_4 @base openldap.x86_64 2.4.23-34.el6_5.1 @updates openldap-clients.x86_64 2.4.23-34.el6_5.1 @updates openldap-servers.x86_64 2.4.23-34.el6_5.1 @updates pam_ldap.x86_64 185-11.el6 @base python-ldap.x86_64 2.3.10-1.el6 @anaconda-CentOS-201311272149.x86_64/6.5 [root@ty-ldap01 ~]#
■DB_CONFIG準備
DB_CONFIGファイルは、OpenLDAPサーバが BerkeleyDB をドライブする際の環境定義を書いておくファイルであり、 slapd.confのdirectoryディレクティブで指定したディレクトリから探されます。
[root@ty-ldap01 ~]# cp -p /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
■slapd設定を変換
OpenLDAPサービスに必要となる設定がCentOS 6で変更になっています。 旧バージョンでは、slapdは /etc/openldap/slapd.conf から設定していました。 RedHatEnterpriseLinux 6のslapd設定は特殊なLDAPディレクトリ(/etc/openldap/slapd.d/) 内の事前定義済みのスキーマとDIT(ディレクトリ情報ツリー)と共に格納されるようになりました。 旧来の設定ファイルを新しいディレクトリで機能するように変換する方法を記述します。
## slapd.confの準備
[root@ty-ldap01 ~]# cp -p /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf## slapd.confのチェック
[root@ty-ldap01 ~]# slaptest -u -f /etc/openldap/slapd.conf config file testing succeeded [root@ty-ldap01 ~]### 新しいディレクトリの /etc/openldap/slapd.d/ の内容を削除
[root@ty-ldap01 ~]# rm -rf /etc/openldap/slapd.d/*## slaptestを実行して設定ファイルの有効性をチェックし、新しい設定ディレクトリを指定
[root@ty-ldap01 ~]# slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d bdb_db_open: database "dc=my-domain,dc=com": db_open(/var/lib/ldap/id2entry.bdb) failed: No such file or directory (2). backend_startup_one (type=bdb, suffix="dc=my-domain,dc=com"): bi_db_open failed! (2) slap_startup failed (test would succeed using the -u switch) [root@ty-ldap01 ~]### 新しいディレクトリ上でパーミッションを設定
[root@ty-ldap01 ~]# chmod -R 000 /etc/openldap/slapd.d [root@ty-ldap01 ~]# chmod -R u+rwX /etc/openldap/slapd.d [root@ty-ldap01 ~]# chown -R ldap: /etc/openldap/slapd.d [root@ty-ldap01 ~]# chown -R ldap: /var/lib/ldap
■LDAPサーバの起動
[root@ty-ldap01 ~]# /etc/init.d/slapd start slapd を起動中: [ OK ] [root@ty-ldap01 ~]### 自動起動設定
[root@ty-ldap01 ~]# chkconfig slapd on; chkconfig --list slapd slapd 0:off 1:off 2:on 3:on 4:on 5:on 6:off [root@ty-ldap01 ~]#
■LDAPサーバへの接続確認
[root@ty-ldap01 ~]# ldapsearch -x -h localhost -b dc=my-domain,dc=com -LLL No such object (32) [root@ty-ldap01 ~]#
## オプション説明 "-x" 匿名ユーザーでの簡易認証 "-h" OpenLDAPサーバを指定 "-b" ディレクトリツリーの検索ベースを指定 "-LLL"最もシンプルなLDIFフォーマットへ出力を整形 ## 結果補足 起動したばかりのOpenLDAPサーバからは、「検索条件に一致する結果はなし」との応答が返ります。 現時点ではまだエントリを登録していないため、これが正しい結果です。
■LDAPパスワードの作成
## 管理用
[root@ty-ldap01 ~]# slappasswd -s secret {SSHA}XZY46aVGlCElS13dN4ryN0kwglZCVKqG [root@ty-ldap01 ~]### 各ユーザ用(共通)
[root@ty-ldap01 ~]# slappasswd -s naisyo {SSHA}u1iYyUnYJtd4u32LN3FvpFEc34yCVoE5 [root@ty-ldap01 ~]#
■slapd.confの設定とチェック
[root@ty-ldap01 ~]# cp -p /etc/openldap/slapd.conf /etc/openldap/slapd.conf.org [root@ty-ldap01 ~]# vi /etc/openldap/slapd.conf [root@ty-ldap01 ~]# egrep -n "^suffix|^rootdn|^rootpw" /etc/openldap/slapd.conf 115:suffix "dc=open_ldap,dc=com" 117:rootdn "cn=Manager,dc=open_ldap,dc=com" 123:rootpw {SSHA}XZY46aVGlCElS13dN4ryN0kwglZCVKqG [root@ty-ldap01 ~]# slaptest -u -f /etc/openldap/slapd.conf config file testing succeeded [root@ty-ldap01 ~]#※rootpwには先ほど作成した管理者用のエンコードされたパスワード文字列を記述します。
※my-domain → open_ldap に変更してみました。
■slapd.confの設定変更反映
一連の作業をシェルスクリプト化しておきます。
[root@ty-ldap01 ~]# vi /usr/local/bin/change_slapd.sh [root@ty-ldap01 ~]# cat /usr/local/bin/change_slapd.sh #!/bin/sh # /etc/openldap/slapd.conf の設定を反映するスクリプト rm -rf /etc/openldap/slapd.d/* slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d chmod -R 000 /etc/openldap/slapd.d chmod -R u+rwX /etc/openldap/slapd.d chown -R ldap: /etc/openldap/slapd.d /etc/init.d/slapd restart exit 0 [root@ty-ldap01 ~]# chmod 755 /usr/local/bin/change_slapd.sh [root@ty-ldap01 ~]# change_slapd.sh config file testing succeeded slapd を停止中: [ OK ] slapd を起動中: [ OK ] [root@ty-ldap01 ~]#slaptestコマンドでslapd.confの内容に基づきslapd.dディレクトリ以下にファイルを 出力したいが書き込み権限が無いため更新されません。よって事前に削除しておきます。
■管理者で接続確認
[root@ty-ldap01 ~]# ldapsearch -x -h localhost -D "cn=Manager,dc=open_ldap,dc=com" -w secret # extended LDIF # # LDAPv3 # base <> (default) with scope subtree # filter: (objectclass=*) # requesting: ALL # # search result search: 2 result: 32 No such object # numResponses: 1 [root@ty-ldap01 ~]#正しく接続できました。登録されたデータはまだないため上記のように表示されます。 OpenLDAPのインストールおよび起動、接続までの手順は以上となります。
Next >> (2) LDIFによるLDAPサーバへのデータ登録
0 件のコメント:
コメントを投稿