プロジェクト

全般

プロフィール

OpenLDAPのインストール

  • OpenLDAPのインストールとユーザアカウントの認識までを行う

インストール

  • 下記のコマンドで必要なパッケージをインストールする
    # yum install openldap-clients openldap-servers
    
  • ConfigurationBackendではなくslapd.confを使って起動するように設定
    「slapd.conf.obsolete」がない場合、CentOS6用のrpmなどから取得する
    # cp -p /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf
    # vi /etc/init.d/slapd
    (/etc/sysconfig/slapd があれば、そちらに記載する)
    
    # OPTIONS, SLAPD_OPTIONS and KTB5_KTNAME are not defined
    SLAPD_OPTIONS="-f /etc/openldap/slapd.conf" 
    
  • 管理者用パスワードを設定する。コマンドを実行すると入力を促される。
    実行後に表示される{SSHA}の行をコピーしておく
    # slappasswd
    New password:
    Re-enter new password:
    {SSHA}***********************
    
  • 設定ファイルを編集する
    # vi /etc/openldap/slapd.conf
    
    suffix          "dc=example,dc=local" 
    rootdn          "cn=Manager,dc=example,dc=local" 
    rootpw  {SSHA}***********************
    
  • 初回起動
    # systemctl restart slapd
    
  • 問題がなければ起動設定を行う
    # systemctl enable slapd
    

設定

  • 下記の設定を行う
    # vi /etc/openldap/slapd.conf
    
    #database config
    #access to *
    #       by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" ma
    nage
    #       by * none
    
    database monitor
    access to *
            by dn.exact="cn=Manager,dc=example,dc=local" read
            by * none
    #        by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read
    #        by dn.exact="cn=Manager,dc=my-domain,dc=com" read
    
  • コンフィグのテストを行う
    # slaptest -u -f /etc/openldap/slapd.conf -v
    config file testing succeeded
    
  • サービスのリロードをこなう
    # systemctl restart slapd
    

データ投入

  • 下記のファイルを作成する
    # vi /etc/openldap/init.ldif
    
    dn: dc=example,dc=local
    objectclass: dcObject
    objectclass: organization
    o: TEST ORG
    dc: example
    
    dn: cn=Manager,dc=example,dc=local
    objectclass: organizationalRole
    cn: Manager
    
  • 次のコマンドでデータを投入する
    # ldapadd -x -W -D "cn=Manager,dc=example,dc=local" -f /etc/openldap/init.ldif
    Enter LDAP Password:
    adding new entry "dc=example,dc=local" 
    
    adding new entry "cn=Manager,dc=example,dc=local" 
    
  • 以下のコマンドでデータを検索できるか確認する
    # ldapsearch -x -W -D "cn=Manager,dc=example,dc=local" -b "cn=Manager,dc=example,dc=local" -s sub
    Enter LDAP Password:
    
    # extended LDIF
    #
    # LDAPv3
    # base <cn=Manager,dc=example,dc=local> with scope subtree
    # filter: (objectclass=*)
    # requesting: ALL
    #
    …
    ……
    
  • 検索できることを確認したら、同じように認証用のテンプレートを作成する
    userPasswordは新たにslappasswdコマンドで作成しておくこと
    # vi /etc/openldap/user.ldif
    
    dn: ou=Groups,dc=example,dc=local
    objectClass: organizationalUnit
    ou: Groups
    
    dn: cn=Users,ou=Groups,dc=example,dc=local
    objectClass: posixGroup
    objectClass: top
    cn: Users
    gidNumber: 2000
    memberUid: user001
    
    dn: ou=Members,dc=example,dc=local
    objectClass: organizationalUnit
    ou: Members
    
    dn: uid=user001,ou=Members,dc=example,dc=local
    objectClass: top
    objectClass: person
    objectClass: organizationalPerson
    objectClass: inetOrgPerson
    objectClass: posixAccount
    objectClass: shadowAccount
    uid: user001
    cn: user001 lastname
    sn: user001
    givenName: lastname
    mail: user001@example.local
    shadowLastChange: 11414
    shadowMax: 99999
    shadowWarning: 7
    loginShell: /bin/bash
    uidNumber: 2000
    gidNumber: 2000
    homeDirectory: /home/user001
    userPassword: {SSHA}**********************
    
  • 次のコマンドでデータを投入する
    # ldapadd -x -W -D "cn=Manager,dc=example,dc=local" -f /etc/openldap/user.ldif
    Enter LDAP Password:
    adding new entry "ou=Users,dc=example,dc=local" 
    
    adding new entry "uid=user001,ou=Users,dc=example,dc=local" 
    
  • 以下のコマンドでデータを検索できるか確認する
    # ldapsearch -x -W -D "cn=Manager,dc=example,dc=local" -b "ou=Users,dc=example,dc=local" -s sub
    Enter LDAP Password:
    
    Enter LDAP Password:
    # extended LDIF
    #
    # LDAPv3
    # base <ou=Users,dc=example,dc=local> with scope subtree
    # filter: (objectclass=*)
    # requesting: ALL
    #
    
    # Users, example.local
    …
    ……
    

サーバ側の認証クライアントの設定

  • 以下のコマンドを実行し、設定画面を表示する
    # authconfig-tui
    
  • 次の内容を設定する
    ユーザ情報
    [*] LDAP を使用
    
    認証
    [*] MD5 パスワードを使用
    [*] シャドウパスワードを使用
    [*] LDAP 認証を使用
    
    サーバー  ldap://127.0.0.1/
    ベース DN dc=example,dc=local
    
  • 次のコマンドでユーザ情報を取得できるかを確認する
    # id user001
    uid=2000(user001) gid=2000 所属グループ=2000
    
  • ホームディレクトリを作成するようにpamに設定を追加する
    # vi /etc/pam.d/system-auth
    
    ~末尾
    session     optional      pam_mkhomedir.so skel=/etc/skel umask=022
    
  • ユーザを切り替えてみる
    # su - user001
    ディレクトリ '/home/user001' を作成中
    
    $ exit
    

起動順の修正

そのままではLDAPサーバが起動する前にpam-ldapのクライアントが起動してしまい、
OS起動時にサーバ接続不可のメッセージが大量に記録されてしまうため、起動順
の再設定を行う。

  • 次の2つのファイルの「chkconfig~」行を調べる。
    # vi /etc/init.d/slapd
    -----------------------------
    # chkconfig: - 27 73
    

    # vi /etc/init.d/nslcd
    -----------------------------
    # chkconfig: - 12 88
    
  • 「nslcd」の「-」の次の数字を「slapd」の「-」の次の数字をインクリメントした値に変更する
    # vi /etc/init.d/nslcd
    -----------------------------
    # chkconfig: - 28 88
    
  • サービスの再登録を行う
    # chkconfig --del nslcd
    # chkconfig --add nslcd
    # chkconfig on nslcd
    
  • 再起動して「var/log/messages」にエラーが表示されないことを確認する

以上でuser001はunixユーザとして認証に利用できる