1. tukapai

    Posted

    tukapai
Changes in title
+ubuntuのLDAPでssh鍵を一括管理する時に詰まったこと
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,123 @@
+Ubuntuでsshの認証しようとした時、結構詰まったのでそのメモ書き
+
+参考
+OSバージョン:ubuntu16.04LTS
+sshに使うやつ:ssh-ldap-pubkey
+
+# とりあえずやりたかったこと
+
+- 踏み台サーバーからクライアントに対してsshをかける
+- 認証の際にLDAPサーバーの公開鍵を参照してログイン
+- クライアント側には秘密鍵も公開鍵も置かない状態になっていること
+
+# やり方
+
+### クライアントサーバーに必要なものを一括インストール
+
+サーバー
+
+```
+apt install slapd libnss-ldap libpam-ldap nslcd
+```
+
+クライアント
+
+```
+apt install libnss-ldap libpam-ldap nslcd
+```
+
+パスワードとかは任意のものを使用。
+
+ldap://はLDAPサーバーのIPを入れてます(基本はドメインだと思う)
+
+ついでに初期設定で聞かれるLDAPのドメインとかはそのサーバーのドメインをdc=ドメイン名で設定
+例:)
+xxx.example.comの場合
+dc=example,dc=com見たな感じ
+
+adminの設定もdcはさっき入力したやつを入力
+
+あとはデフォルト値にしたがってはいはいと進めていきます。
+
+### sshスキーマを作成してデータベースに入れる
+
+CentOSだとデフォルトでスキーマとか入っているらしいのですが、Ubuntuはその辺適当みたいで、むしろ自分で作れって言われました。
+
+デフォルトだとsshのObjactClassがないみたいなのでldifファイルを作成して食べさせます。
+
+このソースをviでコピペして作成する。
+↓これ
+[openssh-lpk.schema](https://github.com/jirutka/ssh-ldap-pubkey/blob/master/etc/openssh-lpk.schema)
+
+```
+vi openssh-lpk.ldif
+```
+
+そんで管理者権限でさっき作ったやつをしれっと入れます。
+
+```
+ldapadd -x -W -D cn=admin,dc=example,dc=com -H ldap:/// -f openssh-lpk.ldif
+```
+
+これでスキーマがスコンと入れは成功
+
+### ssh-ldap-pubkeyのインストール
+
+
+あとは最近ssh-ldap-pubkeyなるものが使えるようになったみたいなのでそれをクライアントとサーバー両方にインストール
+
+Pythonで書かれているらしくpipをあらかじめインストールしてから使ってください。
+
+```
+sudo pip install ssh-ldap-pubkey
+```
+
+あと、ライブラリが足りないみたいなのでこれも追加してインストール
+
+```
+sudo apt-get install libsasl2-dev python-dev libldap2-dev libssl-dev
+```
+
+これでssh-ldap-pubkeyが使えるのでログインしたいLDAPユーザーのホームディレクトリに公開鍵と秘密鍵があることを確認したらLDAPデータベースに公開鍵を以下のコマンドで入れます。
+
+```
+ssh-ldap-pubkey add ~/.ssh/id_rsa.pub
+```
+
+admin権限で入れろよと怒られた場合はadminをバインドして入れましょう
+
+```
+ssh-ldap-pubkey add -D cn=admin,dc=example,dc=com -u demouser ~/.ssh/id_rsa.pub
+```
+
+# クライアント側のsshdの設定の変更
+
+このままだとクライアント側が普通のsshの認証しかしないので/etc/ssh/sshd_configの設定をviで編集。
+
+```
+vi /etc/ssh.sshd_config
+```
+
+認証する際にssh-ldap-pubkeyを使うように追記します。
+
+その際にはパスワード認証はオフにしておくといいかも
+
+```
+AuthorizedKeysCommand /usr/bin/local/ssh-ldap-pubkey-wrapper
+AuthorizedKeysCommandUser nobody
+```
+
+最後にsshdの再起動して反映させれば完了です。
+
+```
+systemctl restart sshd.service
+```
+
+あとはLDAPに公開鍵を登録したユーザーでsshできれば完成
+
+参考URL
+[ubuntu OpenLDAP](https://help.ubuntu.com/lts/serverguide/openldap-server.html)
+[jirutka/ssh-ldap-pubkey](https://github.com/jirutka/ssh-ldap-pubkey)
+[Server world LDAPサーバーの設定](https://www.server-world.info/query?os=Ubuntu_16.04&p=openldap)
+
+