パンダのメモ帳

技術系のネタをゆるゆると

CentOS 6.3 に openssh-ldap を導入する

CentOS5 時代に書いた記事 が時代遅れになっていたので、2012年12月現在の最新版 CentOS6.3 で OpenSSH + LDAP による RSA鍵管理についてまとめてみた。

openssh-ldap とは?

openssh-ldap は openssh が導入されている環境に追加することで、LDAPサーバーに格納されている RSA公開鍵を使って SSH にログインできるようになる CentOS6 標準のパッケージ。 CentOS5 では、openssh そのものをサードパーティー製のパッケージに置き換える必要があったことを考えると、 標準でサポートされているのはうれしい限り。

要件と仮定

  • LDAP サーバーで RSA公開鍵を管理し、その RSA公開鍵を使って認証、SSHサーバーに接続できるようにする。
  • LDAP サーバーは構築済とする。参考記事

便宜上、設定等については次の通り仮定する。

  • LDAPサーバーのアドレスは ldap.example.jp, ベースDNは dc=example,dc=jp とする。
  • SSHサーバーのホスト名は hostname.example.jp とする。

LDAP サーバーの設定

LDAP サーバーが LPK(LDAP-Public-Key) に対応していない場合、次の手順で設定する。 設定・対応済の場合は次の手順へ。

CentOS6 の場合

openssh-ldap をインストールし /usr/share/doc/openssh-ldap-5.3p1 以下にインストールされるスキーマOpenLDAP サーバーで使えるようにする。 具体的には /etc/openldap/slapd.conf に次の行を追加すればOK。

include /usr/share/doc/openssh-ldap-5.3p1/openssh-lpk-openldap.schema

最後に LDAP サーバーを再起動する。

[root@localhost ~]# yum ldap restart

CentOS5 の場合

外部からスキーマを入手して使用する。

[root@localhost ~]# cd /etc/openldap/schema
[root@localhost schema]# wget http://dev.inversepath.com/openssh-lpk/openssh-lpk_openldap.schema

次に /etc/openldap/slapd.conf から読み込むように設定する。

include /etc/openldap/schema/openssh-lpk_openldap.schema

最後に LDAP サーバーを再起動する。

[root@localhost ~]# yum ldap restart

インストール済のパッケージを確認

openssh および openssh-server が導入されていることを確認する。

[user@localhost ~]$ yum list installed | grep openssh
openssh.x86_64          5.3p1-81.el6_3  @updates
openssh-server.x86_64   5.3p1-81.el6_3  @updates

インストールされていない場合は yum を使ってインストールする。

[user@localhost ~]$ sudo yum install openssh-server

openssh-ldap のインストールと設定

yum を使って openssh-ldap をインストールする

[root@localhost ~]# yum install openssh-ldap

次に /etc/ssh/ldap.conf を編集する(存在しない場合は作成する)。

[root@localhost ~]# cat > /etc/ssh/ldap.conf <<__EOF__
uri ldap://ldap.example.jp/
base dc=example,dc=jp
host hostname.example.jp

ssl no
#ssl start_tls
#tls_cacertdir /etc/openldap/cacerts
#tls_cacertfile /etc/pki/tls/certs/ca-bundle.crt
#tls_checkpeer no
__EOF__
[root@localhost ~]# chmod 600 /etc/ssh/ldap.conf

/etc/ssh/ldap.conf の設定が完了すると /usr/libexec/openssh/ssh-ldap-wrapper コマンドを使ってユーザーのRSA鍵が取得できるようになる 下記コマンドを実行し、RSA鍵が返ってくればOK。返ってこない場合は ldap.conf または LDAPサーバー側の設定を見直す。

[root@localhost ~]# /usr/libexec/openssh/ssh-ldap-wrapper username

続いて /etc/ssh/sshd_config に次の2行を追加する。

AuthorizedKeysCommand /usr/libexec/openssh/ssh-ldap-wrapper
AuthorizedKeysCommandRunAs root

もちろん RSAAuthentication および PubkeyAuthentication が yes である必要がある。 設定が間違いないか確認し、sshd を再起動する。

[root@localhost ~]# service sshd restart
sshd を停止中:                                             [  OK  ]
sshd を起動中:                                             [  OK  ]

試しにRSA鍵を使ってログインしてみて、無事に認証できればOK。

参考