パスワードを忘れた? アカウント作成
231870 journal

flied onionの日記: [BIND] update-policy ms-self について [Samba]

日記 by flied onion
Samba 4 alpha 12の設定マニュアルにあたる Samba4/HOWTO を訳したわけですが、 ためしてみたくて訳したわけで暇なときにちょろっと試してみました、 比較的にスムーズにいったものの、BINDでとりあえず立ち往生しました。 まとめ記事はまた別に書くとして(公開するかどうかは謎)、 BIND連携で発生した問題についてちょいと整理。
 
Cent OS 5.5にSamba4をインストールして、BINDへ設定を(Samba4 Provisionで作成されたnamed.confを)反映して namedを再起動すると

/usr/local/samba/private/named.conf.update:3: 'ms-self' unexpected

と出ます。
ようするに "ms-selfってなんじゃいコラ"ってbindがエラーをだしていると。

named.conf.updateを見てみると

update-policy {
   grant SAMDOM.EXAMPLE.COM ms-self * A AAAA;
(略)

という行をみつけることができます。

いろいろ調べた感じでは、
 

  • Cent OS 5.5で yum でインストールしたBINDのバージョンは 「BIND 9.3.6-P1-RedHat-9.3.6-4.P1.el5_4.2」だが
    Samba4/HOWTOでは「bind version 9.6.1 on Ubuntu」となっている。だからそもそもBINDを更新すればいけるのかも?
  • ms-self ってオプションはつかえるらしいけど、ドキュメントがねぇ!ってRedhatのBugzillaに上がっている
    https://bugzilla.redhat.com/show_bug.cgi?id=457931/
  • Google先生ではms-selfについてそれらしいドキュメントはなかった
  • 古いSamba4では(Sambaが自動生成する)named.confにms-selfについてのコメントがあった。
    (update-policyについてnamed.conf.updateに分割されたタイミングで消しちゃったっぽい)

てなことがわかったので、とりあえず古いSamba4によるms-selfについての説明を訳してみることにした。
 
 

[原文:昔のsamba4のソース source4/setup/named.conf から]
zone "${DNSDOMAIN}." IN {
        type master;
        file "${ZONE_FILE}";
        /*
        * Attention: Not all BIND versions support "ms-self". The instead use
        * of allow-update { any; }; is another, but less secure possibility.
        */
        update-policy {
               /*
                * A rather long description here, as the "ms-self" option does
                * not appear in any docs yet (it can only be found in the
                * source code).
                *
                * The short of it is that each host is allowed to update its
                * own A and AAAA records, when the update request is properly
                * signed by the host itself.
                *
                * The long description is (look at the
                * dst_gssapi_identitymatchesrealmms() call in lib/dns/ssu.c and
                * its definition in lib/dns/gssapictx.c for details):
                *
                * A GSS-TSIG update request will be signed by a given signer
                * (e.g. machine-name$@${REALM}).  The signer name is split into
                * the machine component (e.g. "machine-name") and the realm
                * component (e.g. "${REALM}").  The update is allowed if the
                * following conditions are met:
                *
                * 1) The machine component of the signer name matches the first
                * (host) component of the FQDN that is being updated.
                *
                * 2) The realm component of the signer name matches the realm
                * in the grant statement below (${REALM}).
                *
                * 3) The domain component of the FQDN that is being updated
                * matches the realm in the grant statement below.
                *
                * If the 3 conditions above are satisfied, the update succeeds.
                */
               grant ${REALM} ms-self * A AAAA;
       };

 
 

[訳]
zone "${DNSDOMAIN}." IN {
        type master;
        file "${ZONE_FILE}";
        /*
        * 注意: "ms-self"はBINDの全バージョンでサポートされてるわけではない。代わりに
        * " allow-update { any; }; " とかでも使えるけど、セキュリティは低下する。
        */
        update-policy {
               /*
                * "ms-self"オプションがまだどのドキュメントにも無いんで長い解説をここに
                * 書いときま(ソースからしか見つけられない)。
                *
                * 簡単に書くと、ホストが自身のAレコードとAAAAレコードの更新するとき、
                * 更新リクエストが自分でちゃんと署名してる場合だけ認められます。
                *
                * 詳しく書くと(詳細はdst_gssapi_identitymatchesrealmms()がlib/dns/ssu.c
                * で呼び出されるところと、lib/dns/gssapictx.c にある定義 を見てね):
                *
                * GSS-TSIG更新リクエスト は特定の署名者(例 machine-name$@${REALM})に
                * よって署名されるみたい。 署名者の名前はマシン部分(例 "machine-name")
                * とレルム部分(例 "${REALM}")に分割される。次の条件に合うなら、
                * 更新は許可される:
                *
                * 1) 署名者名のマシン部分がFQDNの最初の(ホスト)部分に合えば更新は開始される。
                *
                * 2) 署名者名のレルム部分が下のgrant文のレルム(${REALM})に一致するとき。
                *    ※ 訳注 下とはこのブロックコメント終わった次の行の設定のこと ※
                *
                * 3) FQDNのドメイン部分が下のgrant文のレルム(${REALM})に一致するとき。
                *    ※ 訳注 下とはこのブロックコメント終わった次の行の設定のこと ※
                *
                * 上の3つの条件が満たされれば、更新は成功する。
                */
               grant ${REALM} ms-self * A AAAA;
       };

翻訳開始2行で解決策が提示されておりますが、とりあえず最後まで訳してみました。
 
 
とりあえずyum updateで更新してみて、バージョンアップできなければ
update-policyなくして
allow-update{ any; }でいこかな。
 
 
# 本運用考えてる人でallow-update{ any; } 使用としてる人は危険性を調べてからにしてくださいね。
# これ参考にしてる人いないとは思うけど。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

にわかな奴ほど語りたがる -- あるハッカー

読み込み中...