'Memo/Linux/OpenLDAP/' には、下位層のページがありません。

OpenLDAP


バイナリ値: base64

属性に "::" がついているとバイナリ値。base64でエンコードされている。

例:

# 通常の場合
sshPublicKey: ssh-rsa ...

# 末尾に"\r\n"が入っている場合
sshPublicKey:: c3NoLXJ...

パスワード変更時に「Must supply old password to be changed as well as new one」


index


loglevel


標準入力を使う


ACL(Access Control Lis) / アクセス制限


ブラウザから一般ユーザのパスワード/公開鍵変更

LDAPの一般ユーザが以下の事をブラウザから簡単に行いたい。


トラブル


local userでもLDAPに問い合わせてしまう


Can't contact LDAP server


/etc/pam.d/以下がsymlinkの場合にauthconfigを使うと壊れる場合がある


attribute 'c' not allowed

diff -uwr schema/inetorgperson.schema schema.2.4.40-12/inetorgperson.schema
--- schema/inetorgperson.schema 2012-11-30 22:38:35.000000000 +0900
+++ schema.2.4.40-12/inetorgperson.schema       2016-05-11 08:32:09.000000000 +0900
@@ -151,5 +151,5 @@
                labeledURI $ mail $ manager $ mobile $ o $ pager $
                photo $ roomNumber $ secretary $ uid $ userCertificate $
                x500uniqueIdentifier $ preferredLanguage $
-               userSMIMECertificate $ userPKCS12 $ c )
+               userSMIMECertificate $ userPKCS12 )
        )

LDAPスキーマの追加

slapadd等でLDAPスキーマが不足している場合は、「str2ad(sudoUser): attribute type undefined」の様なエラーが出る。


デバッグ


認証方式の変更


LDAPでssh認証する場合に、sudoできない時


LDAPでssh公開鍵認証を使う

現状2つ方法があるようだ。


ldapdelete:エントリの削除


バージョンアップ


password hash methodの変更

sudo vim /etc/openldap/slapd.conf
----
# database config より上に記述
password-hash {SHA}
----
sudo service slapd stop
sudo rm -rf /etc/openldap/slapd.d/{cn=config,cn=config.ldif}
sudo -u ldap slaptest -f  /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
sudo service slapd restart

slappasswd : パスワード生成

ハッシュ化パスワードを生成する。

# 入力待ち
slappasswd
New password: 
Re-enter new password: 
{SSHA}CfGz6P2+x1YoIAjBnIsezTJvROGXQFMw

# パスワード指定
slappasswd -s secret
{SSHA}H8R+xa45GRrDhntW8NzXO0pP5btUnAz3

# Hash methodの指定: {SHA}, {SSHA}, {MD5}, {SMD5}, {CRYPT}, {CLEARTEXT}
slappasswd -s secret -h {SHA}
{SHA}5en6G6MezRroT3XKqkdPOmY/BfQ=

ldappasswd : パスワード変更


objectClass: value #0 invalid per syntax


LDIFファイル

# 1つめのエントリ
dn: uid=user01,ou=People,dc=my-domain,dc=com
uid: user01
cn: Test User 01
objectClass: account
objectClass: posixAccount
objectClass: top
loginShell: /bin/bash
uidNumber: 5001
gidNumber: 3001
homeDirectory: /home/user01

# 2つめのエントリ
dn: uid=user02,ou=People,dc=my-domain,dc=com
uid: user02
cn: Test User 02
objectClass: account
objectClass: posixAccount
objectClass: top
loginShell: /bin/bash
uidNumber: 5002
gidNumber: 3002
homeDirectory: /home/user02

uidNumberの最大値を検索

ldapsearch -x -H 'ldap://localhost' -b 'dc=my-domain,dc=com' -D 'cn=Manager,dc=my-domain,dc=com' -w 'YOUR PASSWORD' '(objectClass=posixAccount)' -LLL | \
    grep uidNumber: | \
    cut -f 2 -d ' ' | \
    sort -nr        | \
    head -n 1

ldapsearch : 登録済みエントリーの検索


ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)

ldaps://での通信時に発生。SSL自己証明書等を利用していると出る。
openldap-clientsのみの場合でも有効。


sshログインにldapを使う

  1. クライアント側
    # インストール
    yum install pam_ldap nscd nss-pam-ldapd
    
    # デフォルトでTLS認証が嫌な場合は以下をyesに変更
    vim /etc/sysconfig/authconfig
    ----
    FORCELEGACY=yes
    ----
    
    # 認証情報設定(/etc/nsswitch.conf, /etc/pam.d/system-auth-ac, /etc/openldap/ldap.conf が変更される)
    authconfig --enableldap --enableldapauth --ldapserver="ldap://[LDAP SERVER]/" --ldapbasedn="dc=my-domain,dc=com" --update
    authconfig --test | grep -i ldap
    chkconfig nslcd on
    
    # ホームディレクトリが無い場合は自動作成
    echo "session     optional      pam_mkhomedir.so skel=/etc/skel umask=022" >> /etc/pam.d/system-auth-ac
  2. sshログインできるかテスト

設定(cn=config) 監視(cn=monitor) データベースを有効にする

デフォルトでは以下のディレクトリはadminユーザでも見えない。


レプリケーション/冗長化


readonly replica


監視


監視


CN=Monitor - 管理ツール


Apache Directory Studio - 管理ツール


phpLDAPadmin - 管理ツール


バックアップ/リストア


インストール


CentOS 7/8

記事:


CentOS 6


添付ファイル: fileldap-backup.sh 1666件 [詳細] fileldap-status.sh 1611件 [詳細] fileldif-example.zip 1660件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2022-06-17 (金) 17:12:50