BIND check-spf の動作を検証してみた [BIND]
BIND 9.9.3、9.8.5、BIND 9.6-ESV-R9 から、check-spf ステートメントが追加されたとの事で動作検証をしてみました。
検証をしたBINDのバージョン : 9.9.3-P2
●SenderID
対応してない(と思われる)
●spf
書式のチェックをしているのはTXTレコードのみ。
検証したレコード
★★ SPFレコード ★★
◆正しく記載したSenderID
home.nerima.jp. IN SPF "spf2.0/pra,mfrom +ip4:10.0.0.10 +ip4:10.0.0.11 ~all"
◆正しく記載したspf
home.nerima.jp. IN SPF "v=spf1 +ip4:10.0.0.10 +ip4:10.0.0.11 ~all"
◆誤記のSenderID
home.nerima.jp. IN SPF "spf5.9/pra,mfrom +ip4:10.0.0.10 +ip4:10.0.0.11 ~all"
◆誤記のspf
home.nerima.jp. IN SPF "v=spf1.0 +ip4:10.0.0.10 +ip4:10.0.0.11 ~all"
★★ TXTレコード ★★
◆正しく記載したSenderID
home.nerima.jp. IN TXT "spf2.0/pra,mfrom +ip4:10.0.0.10 +ip4:10.0.0.11 ~all"
◆正しく記載したspf
home.nerima.jp. IN TXT "v=spf1 +ip4:10.0.0.10 +ip4:10.0.0.11 ~all"
◆誤記のSenderID
home.nerima.jp. IN TXT "spf5.9/pra,mfrom +ip9:10.0.0.10 +ip4:10.0.0.11 ~all"
◆誤記のspf
home.nerima.jp. IN TXT "v=spf1.0 +ip9:10.0.0.10 +ip4:10.0.0.11 ~all"
下図は検証結果。
※1 SPFレコードを検知したが、対応するTXTレコードが無い。
named[28330]: [ID 873579 daemon.warning] zone home.nerima.jp/IN: 'home.nerima.jp' found SPF/SPF record but no SPF/TXT record found, add matching type TXT record
※2 TXTレコードを検知したが、対応するSPFレコードが無い。
named[28486]: [ID 873579 daemon.warning] zone home.nerima.jp/IN: 'home.nerima.jp.' found SPF/TXT record but no SPF/SPF record found, add matching type SPF record
どちらか一方を記載した場合
■ SPFレコードのみ記載している場合。
※いずれも、対応するTXTレコードが無い!とのWanningが表示される。(SPFレコードに反応している)
■ TXTレコードのみ記載している場合。
※ TXTレコードの書式が正しい時はWarnningが出力。
と言う事は、TXTレコードの書式が正しいかを確認出来ている。
書式が正しくないTXTレコードはWarnningが出ない。
今までの汎用的な使いかたとして判断していると思われる。
正しいペアを記載した場合
■ spf
正しいSPFレコードとTXTレコードを記載している場合。
ログは出ない。正しく記載出来ているから。
■ SenderID
正しいSPFレコードとTXTレコードを記載している場合。
Warnningが出る。(SenderID対応していないのでは?と疑い始める)
正しい記載と誤記のペアを記載した場合
■ spf :正しいSPFレコードと誤記のTXTレコードを記載している場合。
※1のwarnningが出る
■ spf :誤記のSPFレコードと正しいTXTレコードを記載している場合。
※3 ログが出ない(チェックが出来てないのでは?と疑い始める)
纏め
○ SPFレコードがある場合は、TXTレコードも無いとダメ!と怒られる
○ TXTレコードがspf ドだったら、対応するレコードのSPFレコードが無いとダメ!と怒られる。
が、SPFレコードの書式が正しいかどうかはチェックしていないので、
SPFレコードが誤記でも怒られない!
○ SenderIDは対応していない。
○ 正しいspf のSPFレコードとTXTのペアと、正しいSenderIDのSPFレコードとTXTレコードの
ペアが存在した場合Warnnigは出ない。
正しいspfレコードのペアが有れば1つあれば、他の記載が間違っていても
良いと言う事になる。
試しにspfのSPFレコードとTXTレコードのペアを2つ記載して試してみたが、warnningは出なかった。
おまけ
check-spf ステートメントの処理をフロー図にしてみました。
(sourceを読んだわけではありません。検証した内容を整理したものですので必ずしも正確ではありません)
検証をしたBINDのバージョン : 9.9.3-P2
●SenderID
対応してない(と思われる)
●spf
書式のチェックをしているのはTXTレコードのみ。
検証したレコード
★★ SPFレコード ★★
◆正しく記載したSenderID
home.nerima.jp. IN SPF "spf2.0/pra,mfrom +ip4:10.0.0.10 +ip4:10.0.0.11 ~all"
◆正しく記載したspf
home.nerima.jp. IN SPF "v=spf1 +ip4:10.0.0.10 +ip4:10.0.0.11 ~all"
◆誤記のSenderID
home.nerima.jp. IN SPF "spf5.9/pra,mfrom +ip4:10.0.0.10 +ip4:10.0.0.11 ~all"
◆誤記のspf
home.nerima.jp. IN SPF "v=spf1.0 +ip4:10.0.0.10 +ip4:10.0.0.11 ~all"
★★ TXTレコード ★★
◆正しく記載したSenderID
home.nerima.jp. IN TXT "spf2.0/pra,mfrom +ip4:10.0.0.10 +ip4:10.0.0.11 ~all"
◆正しく記載したspf
home.nerima.jp. IN TXT "v=spf1 +ip4:10.0.0.10 +ip4:10.0.0.11 ~all"
◆誤記のSenderID
home.nerima.jp. IN TXT "spf5.9/pra,mfrom +ip9:10.0.0.10 +ip4:10.0.0.11 ~all"
◆誤記のspf
home.nerima.jp. IN TXT "v=spf1.0 +ip9:10.0.0.10 +ip4:10.0.0.11 ~all"
下図は検証結果。
※1 SPFレコードを検知したが、対応するTXTレコードが無い。
named[28330]: [ID 873579 daemon.warning] zone home.nerima.jp/IN: 'home.nerima.jp' found SPF/SPF record but no SPF/TXT record found, add matching type TXT record
※2 TXTレコードを検知したが、対応するSPFレコードが無い。
named[28486]: [ID 873579 daemon.warning] zone home.nerima.jp/IN: 'home.nerima.jp.' found SPF/TXT record but no SPF/SPF record found, add matching type SPF record
どちらか一方を記載した場合
■ SPFレコードのみ記載している場合。
※いずれも、対応するTXTレコードが無い!とのWanningが表示される。(SPFレコードに反応している)
■ TXTレコードのみ記載している場合。
※ TXTレコードの書式が正しい時はWarnningが出力。
と言う事は、TXTレコードの書式が正しいかを確認出来ている。
書式が正しくないTXTレコードはWarnningが出ない。
今までの汎用的な使いかたとして判断していると思われる。
正しいペアを記載した場合
■ spf
正しいSPFレコードとTXTレコードを記載している場合。
ログは出ない。正しく記載出来ているから。
■ SenderID
正しいSPFレコードとTXTレコードを記載している場合。
Warnningが出る。(SenderID対応していないのでは?と疑い始める)
正しい記載と誤記のペアを記載した場合
■ spf :正しいSPFレコードと誤記のTXTレコードを記載している場合。
※1のwarnningが出る
■ spf :誤記のSPFレコードと正しいTXTレコードを記載している場合。
※3 ログが出ない(チェックが出来てないのでは?と疑い始める)
纏め
○ SPFレコードがある場合は、TXTレコードも無いとダメ!と怒られる
○ TXTレコードがspf ドだったら、対応するレコードのSPFレコードが無いとダメ!と怒られる。
が、SPFレコードの書式が正しいかどうかはチェックしていないので、
SPFレコードが誤記でも怒られない!
○ SenderIDは対応していない。
○ 正しいspf のSPFレコードとTXTのペアと、正しいSenderIDのSPFレコードとTXTレコードの
ペアが存在した場合Warnnigは出ない。
正しいspfレコードのペアが有れば1つあれば、他の記載が間違っていても
良いと言う事になる。
試しにspfのSPFレコードとTXTレコードのペアを2つ記載して試してみたが、warnningは出なかった。
おまけ
check-spf ステートメントの処理をフロー図にしてみました。
(sourceを読んだわけではありません。検証した内容を整理したものですので必ずしも正確ではありません)
BINDエラー 「not set: disabling RFC 1918 empty zones」 [BIND]
最近OpenSource版をインストールしてなかったのですが、久しぶりに9.7.6‐P1へバージョンアップ。
動作は問題なかったけど、ログを見ると何やら出ていた。
named[22174]: [ID 873579 daemon.warning] Warning: 'empty-zones-enable/disable-empty-zone' not set: disabling RFC 1918 empty zones
ググってもあまりネタを得られず。(時間がなく英語を訳してるのが面倒だった)
Webでどうにも解決できないときはREADME系を読むのが一番なのでSource内を見てみたところ、FAQがあった。
中を見てみると、ありました^^)
------------------------------------------------------
Q: What does "RFC 1918 response from Internet for 0.0.0.10.IN-ADDR.ARPA"
mean?
------------------------------------------------------
Ansに書かれている用に、
zone "10.IN-ADDR.ARPA" {
type master;
file "empty";
};
empty:
@ 10800 IN SOA <name-of-server>. <contact-email>. (
1 3600 1200 604800 10800 )
@ 10800 IN NS <name-of-server>.
を参考に追加。
ログも消えました。めでたしめでたし。
動作は問題なかったけど、ログを見ると何やら出ていた。
named[22174]: [ID 873579 daemon.warning] Warning: 'empty-zones-enable/disable-empty-zone' not set: disabling RFC 1918 empty zones
ググってもあまりネタを得られず。(時間がなく英語を訳してるのが面倒だった)
Webでどうにも解決できないときはREADME系を読むのが一番なのでSource内を見てみたところ、FAQがあった。
中を見てみると、ありました^^)
------------------------------------------------------
Q: What does "RFC 1918 response from Internet for 0.0.0.10.IN-ADDR.ARPA"
mean?
------------------------------------------------------
Ansに書かれている用に、
zone "10.IN-ADDR.ARPA" {
type master;
file "empty";
};
empty:
@ 10800 IN SOA <name-of-server>. <contact-email>. (
1 3600 1200 604800 10800 )
@ 10800 IN NS <name-of-server>.
を参考に追加。
ログも消えました。めでたしめでたし。
BIND の エラー 「no current owner name」 [BIND]
ゾーンファイルにゴミの空白が入っていた時のエラー
一行目を@で初めているつもりだったが、先頭に空白があったために出たエラー
------------
host named[22489]: [ID 873579 daemon.error] /usr/local/bind/var/named/db.empty:1: no current owner name
host named[22489]: [ID 873579 daemon.error] zone 168.192.in-addr.arpa/IN: loading from master file /usr/local/bind/var/named/db.empty failed: no owner
------------
まあそうですよね。named.confに記載している自分の管理ゾーンじゃない!(空白だから)
ゾーンファイルの行の先頭は大事。無視されるはずがないです。
一行目を@で初めているつもりだったが、先頭に空白があったために出たエラー
------------
host named[22489]: [ID 873579 daemon.error] /usr/local/bind/var/named/db.empty:1: no current owner name
host named[22489]: [ID 873579 daemon.error] zone 168.192.in-addr.arpa/IN: loading from master file /usr/local/bind/var/named/db.empty failed: no owner
------------
まあそうですよね。named.confに記載している自分の管理ゾーンじゃない!(空白だから)
ゾーンファイルの行の先頭は大事。無視されるはずがないです。
named-checkzone コマンドの -D オプションと -s オプション [BIND]
意外と知らなかった便利な使い方。
# named-checkzone -D hoge.jp hoge.zone
ファイルに保存したい場合は、-oで
# named-checkzone -o hoge_zone.txt hoge.jp hoge.zone
きれいに成形しなおしたい場合は
# named-checkzone -D -s relative hoge.jp hoge.zone
ん~ いい感じ ^^)
# named-checkzone -D hoge.jp hoge.zone
ファイルに保存したい場合は、-oで
# named-checkzone -o hoge_zone.txt hoge.jp hoge.zone
きれいに成形しなおしたい場合は
# named-checkzone -D -s relative hoge.jp hoge.zone
ん~ いい感じ ^^)