助け合いフォーラム

LinuC

LinuC Lv3-300
問題ID : 27552
問題を開く
「slapd.conf」の簡易認証の設定で、匿名バインドを禁止するdisallowディレクティブのオプションは次のうちどれか。

この問題はプレミアムコンテンツです。

上に戻る

allow, disallowの設定について

投稿日 2025/05/10

匿名バインドはバインドDNもパスワードも無しのバインド
非認証バインドはバインドDNのみがあるバインド
とping-tの解説等のとおり明確に区別した前提で質問です。

①allow bind_anon_cred、 disallow bind_anon が許可/禁止する対象は
 どちらも「匿名バインド」のみですよね?非認証バインドも含んでいたりしませんよね?
②disallow側には、なぜ「非認証バインド」の禁止設定が無いのでしょうか
③ping-tのディレクティブの表のallow側の説明にて、わざわざ"(DNが指定されていない場合)" "(DNが指定されている場合)"などの
 注釈カッコ書きがあるのはなぜですか。単純に匿名バインドの許可,禁止と書けばよいのでは。
④他サイトですが
 https://linuc.org/study/samples/3328/
ここの回答と解説にて
 非認証バインドはデフォルトでは使用不可になっており、slapd.confに"allow bind_anon_cred"を指定することで使用可能となる
と書かれています。ping-tを信じるとallow bind_anon_cred は匿名バインドの許可であり非認証バインドの許可ではありませんよね。
 上記サイトの解説側が間違っているということになりますか。

冒頭で書いた「匿名バインド」「非認証バインド」の定義は本当に徹底されているんですかね。
実は「匿名バインド」が広義の意味で、狭義の匿名バインドと非認証バインドを 合わせて呼んでいたり
ブレてたりしませんかね。

2025/05/10 23:29

LDAP 詳しくないので間違ってたらごめんなさい。そして論点が違っていたらごめんなさい。

簡易認証の定義って RFC 4513 5.1 のなかで「匿名(Anoymouns)」「非認証(Unauthenticated)」「名前/パスワード認証(name/password authentication)」の3つがきちんと定義されていて、匿名と非認証は明確に区別されているようです。
https://tex2e.github.io/rfc-translater/html/rfc4513.html#5-1--Simple-Authentication-Method

種別をざっくり読んだ感じだと

  • 匿名:ユーザー名、パスワードの長さが0(ゼロ)。意図的に匿名状態とする目的で使用。
  • 非認証:ユーザー名あり、パスワードの長さが0(ゼロ)。トレースなどでログに名前を記載する目的で使用。デフォルトでは受け付けないようにすべき。
  • 名前/パスワード認証:ユーザー名、パスワードの長さが0(ゼロ)以外。

ってちゃんと違いはあるようですね。


コメント

m miki_y

2025/05/12 23:45

ありがとうございます。 あとは①〜④ですね。 ping-tさんは明らかに問題の誤りがあって修正するケースでないと こういう不明点が宙ぶらりんになっても反応してくれないので お蔵入りになってしまいそうですね。

この返信に対して
コメントを記入できます

2025/05/14 22:09

同じくあんまり有識でもない&推測まじりですが、
特に④については私も学習時に気になって調べたのでお力になれるかもです。

①allow bind_anon_cred、 disallow bind_anon が許可/禁止する対象は
 どちらも「匿名バインド」のみですよね?非認証バインドも含んでいたりしませんよね?

こちらはYESと思います。
man 5 slapd.conf を抜粋します。

allow
Specify a set of features (separated by white space) to allow (default none). snip
bind_anon_cred allows anonymous bind when credentials are not empty (e.g. when DN is empty). bind_anon_dn allows
unauthenticated (anonymous) bind when DN is not empty

・allow bind_anon_cred は匿名バインド(anonymous bind)を許可

disallow
Specify a set of features (separated by white space) to disallow (default none). bind_anon disables acceptance of
anonymous bind requests. Note that this setting does not prohibit anonymous directory access (See "require
authc").

・disallow bind_anon は匿名バインド要求の受け入れを無効

②disallow側には、なぜ「非認証バインド」の禁止設定が無いのでしょうか

man にも記述はないので推測ですが、
非認証バインドはデフォルトで禁止であり、許可の定義を書かなければ禁止扱いだからでしょうか。

③ping-tのディレクティブの表のallow側の説明にて、わざわざ"(DNが指定されていない場合)" "(DNが指定されている場合)"などの
 注釈カッコ書きがあるのはなぜですか。単純に匿名バインドの許可,禁止と書けばよいのでは。

ここも推測ですが"匿名バインド"と"非認証バインド"の説明をあえて説明欄に入れてるってことですかね。。
ただ↑で引用した man の記述の通りではあるようです。

④他サイトですが
 https://linuc.org/study/samples/3328/
ここの回答と解説にて
 非認証バインドはデフォルトでは使用不可になっており、slapd.confに"allow bind_anon_cred"を指定することで使用可能となる
と書かれています。ping-tを信じるとallow bind_anon_cred は匿名バインドの許可であり非認証バインドの許可ではありませんよね。
 上記サイトの解説側が間違っているということになりますか。

ちなみに以下にも同様に書かれてます。
https://www5f.biglobe.ne.jp/inachi/openldap/admin21/security-ja.html

非認証バインドは結果として匿名認可になります。非認証バインドはデフォルトでは利用できませんが、 slapd.conf(5) に "allow bind_anon_cred" を指定することにより利用できるようになります。

が、これはどちらも誤り(誤訳?)かなと思っています。
slapd.conf の man にある通り、「bind_anon_cred は 匿名バインドを許可」と理解してよいはずです。

bind_anon_cred allows anonymous bind when credentials are not empty (e.g. when DN is empty).
bind_anon_dn allows unauthenticated (anonymous) bind when DN is not empty

とはいえ文章だけではやっぱり不安だったので、学習時に検証してみたログをくっつけておきます。
結果としては man の記述の通りの挙動でした。

■ allow bind_anon_cred(匿名バインドの許可)

<匿名バインド(バインドDNなし)>
# ldapsearch -x -w XXXXX -b 'dc=example,dc=com' '(objectClass=*)'
→ 戻り値 0

<非認証バインド(バインドDN(-D)あり、パスワード(-w/-W)無し)>
# ldapsearch -x -D 'uid=XXXXX,ou=xxx,dc=example,dc=com' -b 'dc=example,dc=com' '(objectClass=*)'
ldap_bind: Server is unwilling to perform (53)
        additional info: unauthenticated bind (DN with no password) disallowed
(⇒ unauthenticated bind(非認証バインド)は許可されていない)

■ allow bind_anon_dn(非認証バインドの許可)

<匿名バインド(バインドDNなし)>
# ldapsearch -x -w XXXXX -b 'dc=example,dc=com' '(objectClass=*)'
ldap_bind: Invalid credentials (49)

<非認証バインド(バインドDN(-D)あり、パスワード(-w/-W)無し)>
# ldapsearch -x -D 'uid=XXXXX,ou=xxx,dc=example,dc=com' -b 'dc=example,dc=com' '(objectClass=*)'
→ 戻り値 0


コメント

m miki_y

2025/05/15 22:38

かなり詳しい情報いただきありがとうございます。 man記述どおりになったという検証もされているのですね。 すばらしい!勉強になります。 迷いがなくなりました。

この返信に対して
コメントを記入できます

この投稿に対して返信しませんか?