BindとSASL認証
LDAP の Bind は、LDAP クライアントが LDAP サーバーに認証する操作である。Simple Bind と SASL Bind がよく使われる。
Bindとは何か
Section titled “Bindとは何か”Bind は、LDAP 接続上で「自分は誰か」を LDAP サーバーに示す操作である。
Bind した認証 ID により、LDAP サーバーは ACL に基づいて検索・変更・削除などを許可するか判断する。
client -> Bind -> slapd -> access controlBind せず匿名で検索できる設定もあるが、運用では必要な範囲だけ許可する。
Simple Bind
Section titled “Simple Bind”Simple Bind は、Bind DN とパスワードで認証する方式である。
ldapwhoami \ -x \ -D "uid=ldapuser,ou=people,dc=example,dc=com" \ -W| オプション | 意味 |
|---|---|
-x |
SASL ではなく Simple Bind を使う |
-D |
Bind DN を指定する |
-W |
パスワードを対話入力する |
Simple Bind ではパスワードが認証情報になるため、平文の ldap:// で流すべきではない。StartTLS または ldaps:// を使って通信を保護する。
SASL は Simple Authentication and Security Layer の略で、LDAP に限らない認証フレームワークである。
LDAP では、SASL を使って次のような認証方式を利用できる。
- EXTERNAL
- GSSAPI
- DIGEST-MD5(旧式)
OpenLDAP のローカル管理では、特に EXTERNAL がよく出てくる。
SASL EXTERNAL
Section titled “SASL EXTERNAL”SASL EXTERNAL は、LDAP プロトコル内のパスワードではなく、接続経路の外側で確立済みの認証情報を使う方式である。
OpenLDAP では、 ldapi:/// の Unix ドメインソケット経由で接続し、OS の接続元資格情報を使う構成がよく使われる。
sudo ldapwhoami \ -Y EXTERNAL \ -H ldapi:///概念的には次の流れである。
Linux root -> Unix domain socket -> slapd checks peer credentials -> SASL EXTERNAL identity -> ACLDebian 系では、ローカル root 相当の SASL EXTERNAL identity に cn=config の管理権限を与える構成がよく使われる。ただし、これは普遍的な仕様ではなく ACL 設定による。
よく使うオプション
Section titled “よく使うオプション”| オプション | 役割 |
|---|---|
-x |
Simple Bind を使う |
-D "dn" |
Bind DN を指定する |
-W |
Bind パスワードを対話入力する |
-w password |
Bind パスワードをコマンドラインで指定する |
-Y EXTERNAL |
SASL EXTERNAL を使う |
-H ldap://host |
接続先 URI を指定する |
-ZZ |
StartTLS を要求する |
-w は履歴やプロセス一覧に残る可能性があるため、学習用以外では避ける。通常は -W で対話入力する。
LDAP認証とLinuxログイン認証
Section titled “LDAP認証とLinuxログイン認証”Linux ログインで LDAP を使う場合、PAM が LDAP Bind を利用してパスワードを確認する構成がある。
user enters password -> login program -> PAM -> nslcd / SSSD -> LDAP Bind as user -> success or failureこのときの LDAP Bind は、LDAP サーバーから見ると普通の認証操作である。Linux ログインから見ると、PAM が使う認証手段のひとつになる。
| URI | 接続方法 |
|---|---|
ldap://host |
TCP 389。通常の LDAP 接続。StartTLS で暗号化できる |
ldaps://host |
TCP 636。最初から TLS で接続する |
ldapi:/// |
Unix ドメインソケット経由のローカル接続 |
ldap:// は常に危険という意味ではなく、StartTLS で TLS へ昇格できる。ただし、Simple Bind のパスワードを平文のまま送らないことが重要である。
OpenLDAP 公式ドキュメント
Section titled “OpenLDAP 公式ドキュメント”- OpenLDAP Administrator’s Guide: Security Considerations OpenLDAP の認証、TLS、SASL、セキュリティ。