Linux

openladap

参考

Server

Install (以下 su - 権限)

yum install openldap openldap-servers openldap-clients

パスワードの準備

DB 環境構築

Service の起動

/etc/init.d/slapd start

loglevel の設定

LDAP の基本設定

データ用ディレクトリの管理情報の変更

初期データの登録(以下は CUI)

ssl 対応

前提

証明書の作成(ldap サーバー側)

  1. openssl のインストール
    yum -y install openssl
  2. ディレクトリへ移動
    cd /etc/pki/CA/
  3. index.txt の作成。(既にあったら消して作り直す)
    touch index.txt
  4. serial file の初期化
    echo 01 > serial
  5. ca.key の作成
    openssl genrsa -out ca.key 4096
  6. ca.cert.pem の作成
    openssl req -new -x509 -days 365 -key ca.key -out ca.cert.pem
    • 最初は国。例: JP
    • 県。例: Saitama
    • 市。例: Sakado
    • 会社名。例: Home
    • 組織。例: Home
    • Common name。host名など。例: hoge.domain.jp
    • Mail address。例: (空白)Enter
  7. サーバー証明書の作成
    • ディレクトリ移動
      cd private/
    • key の作成
      openssl genrsa -out ldap.domain.jp.key 4096
    • csr の作成
      req -new -key ldap.domain.jp.key -out ldap.domain.jp.csr
    • 1つ上のディレクトリへ移動
      cd ..
    • crt ファイルの作成
      y を2回押す。
      「Data Base Updated」と表示されれば完了。
      ca -keyfile ca.key -cert ca.cert.pem -in private/ldap.domain.jp.csr -out private/ldap.domain.jp.crt -extensions v3_ca
  8. index.txt の確認
    cat index.txt
    • V       220407123403Z           01      unknown /C=IN/ST=Karnataka/O=GoLinuxCloud/OU=Database/CN=server.example.com/emailAddress=admin@golinuxcloud.com
  9. 確認
    1. 1
      openssl verify -CAfile ca.cert.pem private/ldap.domain.jp.crt
    2. 2
      openssl x509  -noout -text -in private/ldap.domain.jp.crt  | grep -A 1 "Subject Alternative Name"
  10. openldap ディレクトリへコピー
    1. 1
      cp -v private/ldap.domain.jp.crt private/ldap.domain.jp.key /etc/openldap/certs/              
    2. 2
      cp -v ca.cert.pem /etc/openldap/cacerts/
  11. 現在のldap設定を確認
    slapcat -b "cn=config" | egrep "olcTLSCertificateFile|olcTLSCertificateKeyFile"
    • 例)
      olcTLSCertificateFile: "OpenLDAP Server"
      olcTLSCertificateKeyFile: /etc/openldap/certs/password
  12. openldap の設定を変更する ldif ファイルの作成
    1. cd
    2. vim tls.ldif
      dn: cn=config
      changetype: modify
      replace: olcTLSCertificateFile
      olcTLSCertificateFile: /etc/openldap/certs/ldap.domain.jp.crt
      -
      replace: olcTLSCertificateKeyFile
      olcTLSCertificateKeyFile: /etc/openldap/certs/ldap.domain.jp.key
    3. ファイルの owner の変更
      (CentOS6 だとユーザー名などは 「ldap」)
      chown -R ldap:ldap /etc/openldap/certs
      chown -R ldap:ldap /etc/openldap/cacerts
    4. tls.ldif の適用
      ldapmodify -Y EXTERNAL -H ldapi:// -f tls.ldif
  13. もう1つの設定変更ファイルの作成
    1. vim tls-1.ldif
      dn: cn=config
      changetype: modify
      add: olcTLSCACertificateFile
      olcTLSCACertificateFile: /etc/openldap/cacerts/ca.cert.pem
    2. 適用
      ldapmodify -Y EXTERNAL -H ldapi:// -f tls-1.ldif
  14. 再度設定の確認
    slapcat -b "cn=config" | egrep "olcTLSCertificateFile|olcTLSCertificateKeyFile|olcTLSCACertificateFile"
  15. ldap config file の変更
    (CentOS6 ではここの手順が違くてはまりました。。。
    CentOS6 では、SLAPD_URLS を空白にしておく必要があります。
    以下のSLAPD_LDAPS を yes に変更すれば、自動的に ldaps:/// が追加されます)
    • vi /etc/sysconfig/ldap
      • 変更前
        SLAPD_LDAPS=no
      • 変更後
        SLAPD_LDAPS=yes
  16. ldap.conf の変更
    • vim /etc/openldap/ldap.conf
    • 以下を追加。
      TLS_CACERTDIR /etc/openldap/certs
      TLS_CACERT /etc/openldap/cacerts/ca.cert.pem
      TLS_REQCERT allow
  17. slapd の再起動
    service slapd restart

クライアント側の設定

  1. (クライアント) 関連ソフトのインストール
    dnf -y install openldap-clients sssd sssd-ldap oddjob-mkhomedir openssl-perl
  2. (クライアント) openldap に証明書を入れるディクトリを作成する。
    mkdir /etc/openldap/cacerts
  3. (サーバー側) 関連ファイルをクライアントにコピーする。
    scp /etc/openldap/cacerts/ca.cert.pem ldap-client:/etc/openldap/cacerts/ca.cert.pem
  4. sssd.conf の設定
    (SSLなので以下)
    • (クライアント) vi /etc/sssd/sssd.conf
      [sssd]
      config_file_version = 2
      services = nss, pam,autofs
      domains = default
      
      [nss]
      homedir_substring = /home
      
      [pam]
      
      [domain/default]
      id_provider = ldap
      autofs_provider = ldap
      auth_provider = ldap
      chpass_provider = ldap
      ldap_uri = ldaps://ldap.domain.jp:636
      ldap_chpass_uri = ldaps://ldap.domain.jp:636
      ldap_search_base = dc=domain,dc=jp
      ldap_id_use_start_tls = False
      ldap_tls_cacertdir = /etc/openldap/certs
      cache_credentials = True
      ldap_tls_reqcert = never
      entry_cache_timeout = 600
      ldap_network_timeout = 3
      ldap_connection_expire_timeout = 60
  5. 権限の変更
    chmod 600 /etc/sssd/sssd.conf
    chown root:root /etc/sssd/sssd.conf
  6. (クライアント) ldap.conf の変更
    • 「TLS_REQCERT never」 はオレオレ証明書なので必要。
    • vi /etc/openldap/ldap.conf
      BASE    dc=domain,dc=jp
      URI     ldap://10.0.2.20
      TLS_CACERT      /etc/openldap/cacerts/ca.cert.pem
      TLS_CACERTDIR /etc/openldap/cacerts
      TLS_REQCERT     never
  7. (クライアント) 証明書のリフレッシュ
    openssl rehash /etc/openldap/cacerts
  8. (クライアント) sssd の設定を関連設定ファイルへ設定。
    authselect select sssd with-mkhomedir --force
  9. (クライアント) 関連サービスの実行
    • sssd
      systemctl enable sssd.service --now 
    • oddjobd
      systemctl enable oddjobd.service --now
  10. (クライアント) ldap の user 名が引けるか確認
    id testUser
  11. (他のPCから) ログインできるか確認
    ssh testUser@clientComputer

error, daemon: listen(ldap:///, 5) failed errno=98 (Address already in use)

Client

common

Redhat系

  1. sudo yum install openldap-clients nss-pam-ldapd
  2. sudo authconfig-tui
    • ユーザー情報
      ユーザー情報         認証                          │ 
      [ ] キャッシュ情報   [ ] MD5 パスワードを使用      │ 
      [*] LDAP を使用      [*] シャドウパスワードを使用  │ 
      [ ] NIS を使用       [*] LDAP 認証を使用           │ 
      [ ] IPAv2 の使用     [ ] Kerberos 5 を使用         │ 
      [ ] Winbind を使用   [ ] 指紋読み取りを使用        │ 
                           [ ] Winbind 認証を使用        │ 
                           [*] ローカル認証は十分です   
    • [ ] TLS を使用
      • サーバー: ldap://123.456.789.012/
      • ベース DN: dc=tar3,dc=net

Debian系

  1. sudo apt-get install libpam-ldap libnss-ldap nss-updatedb libnss-db
    • 失敗した時の再設定
      sudo dpkg-reconfigure ldap-auth-config
    1. Should debconf manage LDAP configuration?
      <はい>
    2. LDAP server Uniform Resource Identifier:
      ldap://123.456.789.012/
    3. Distinguished name of the search base:
      dc=tar3,dc=net
    4. LDAP version to use:
      3
    5. Make local root Database admin:
      <はい>
    6. Does the LDAP database require login?
      <いいえ>
    7. LDAP account for root:
      cn=Manager,dc=tar3,dc=net
    8. LDAP root account password:
      [LDAP root account password]
    9. The meanings for selections are:
      <了解>
    10. Local crypt to use when changing passwords:
      exop
  2. sudo vi /etc/pam.d/sshd
    # Create home directory automatically.
    session required pam_mkhomedir.so skel=/etc/skel/ umask=0007
  3. sudo vi /etc/nsswitch.conf
    passwd: files ldap
    group: files ldap
    shadow: files ldap
     
    netgroup: ldap
  4. 確認
    getent passwd
  5. sudo 時、password を2回聞かれる問題
    sudo vi /etc/pam.d/common-auth
    1. before
      auth    [success=1 default=ignore]      pam_ldap.so use_first_pass
    2. after
      auth    [success=1 default=ignore]      pam_ldap.so try_first_pass
  6. x ログイン時にユーザー名が表示されない
    • ctrl + alt + F1 を押してコンソールへ。一度、ldap ユーザーでログインする。

ApacheDirectoryStudio?

setButton(GtkWidget?*): アサーション `!_button._widget' に失敗しました。


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS