2017年7月21日金曜日

OpenLDAP と SSH 認証を連携してみた

概要

前回 CentOS 上に構築した LDAP サーバを今回は SSH の認証として使ってみたいと思います

環境

  • サーバ側
    • CentOS 7.3.1611
    • openldap (servers, clients) 2.4.40-13
  • クライアント側
    • Ubuntu 16.04
    • ldap-auth-client 0.5.3
    • nscd 2.23-0ubuntu9

必要なライブラリのインストール

  • apt install -y nscd ldap-auth-client

でインストールすると ldap サーバの設定をいろいろと聞かれます
今回は前回の設定をそのまま使うので以下のように回答しました
ldap サーバの IP やポート、cn, dc は各自で設定したものを記載してください

  • ldap://192.168.10.1:389
  • dc=example,dc=com
  • Protocol version: 3
  • Yes と回答
  • No と回答
  • cn=Manager,dc=example,dc=com
  • パスワードを設定します (たぶん ldap の設定を変更する際の root ユーザ以外に求められるパスワードです)

再度設定したい場合は dpkg-reconfigure ldap-auth-config コマンドを実行してください

pam の設定

  • pam-auth-update

これまた CUI での設定画面になります
項目内に「LDAP Authentication」と「Create home directory on login」があると思うのでそれぞれチェックをして有効にしてください

nsswitch.conf の設定

ldap を認証に使うように設定します

  • vim /etc/nsswitch.conf
passwd:         compat ldap
group:          compat ldap
shadow:         compat ldap

そして nscd を再起動します

  • systemctl restart nscd

おまけ: sshd の設定の確認

sshd の設定でパスワード認証がそもそも ON になっていない場合は ON にしましょう
また鍵認証のみが ON になっている場合は OFF にしておきます

  • vim /etc/ssh/sshd_config
PubkeyAuthentication no
PasswordAuthentication yes
  • systemctl restart sshd

動作確認

では動作確認です
設定したサーバに LDAP 上に作成したユーザで SSH ログインできるか確認してみましょう

  • ssh hawk@192.168.10.2

前回作成した hawk さんでログインできることを確認しました
また、ログイン後にホームディレクトリがあり、ログインシェルが bash になっていることも確認しました

hawk@ubuntu:~$ id
uid=1001(hawk) gid=1000(develop) groups=1000(develop)
hawk@ubuntu:~$ pwd
/home/hawk
hawk@ubuntu:~$ echo $BASH
/bin/bash

最後に

OpenLDAP と SSH の連携をしてみました
今回は nscd (Name Service Cache Daemon) というツールを使いましたが他にも sssd (System Security Services Daemon) というツールがあります
最近だと sssd を使うほうが主流らしいです

参考サイト

0 件のコメント:

コメントを投稿