唐突に「DNS Firewallを作ってみよう」と思ったのは、spamhausのサイトを見て回ったから。
単に「見つけちゃったからやってみるかな」という安易な発想ですなぁ。
さて、spamhausには嬉しいことに、Power-DNSとBINDときちんと分けて設定の仕方が書いてある。
本当に有難いことだ。これで更新されていたらもっと有り難かった。拝んでいたかもしれない。
named.confには下記を追加する。
先ずはoptions。
|
1 2 3 4 5 6 7 8 9 |
options { ixfr-from-difference yes; response-policy { zone "local.rpz"; zone "drop.ip.dtq" POLICY PASSTHRU; zone "phish.host.dtq" POLICY PASSTHRU; }; }; |
こう書いてはあるけれど、実物は違うんだなぁ。
optionsの一番最後に追加する。
ixfr-from-differencegがコメントアウトしているのは、入れると通らないから。
local.rpzは自分で書くものでマスターになる。
phish.host.dtqはspamhausから貰ってくるスレーブですわ。これに(多分)山のようにデータが来るんだろう。
|
1 2 3 4 5 6 7 8 9 |
// DNS Firewall Settings // ixfr-from-difference yes; response-policy { zone "local.rpz"; # 手動ブラックリスト(最優先) // zone "drop.ip.dtq" POLICY PASSTHRU; zone "phish.host.dtq"; # Spamhausの自動フィッシングリスト }; |
さて、次はlog file。普段のログとは別に吐くらしい。
こっちもloggingの後ろに追加。
|
1 2 3 4 5 6 7 8 9 10 |
channel rpzlog { file "/opt/local/var/log/bind9/rpz.log"; print-time yes; print-category yes; print-severity yes; severity info; }; category rpz { rpzlog; }; |
そしてzone fileの定義。
これはnamed.confの最後に追加した。多分どこでも良いと思うが、見つけやすく最後に。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
// DNS Firewall zone zone "local.rpz" { type master; file "local.rpz"; allow-transfer {none; }; allow-query {localhost; }; }; zone "phish.host.dtq" { type slave; file "dbx.phish.host.dtq"; masters { MASTER_ZONE_IPS; }; allow-transfer { none; }; allow-query { localhost; }; }; masters "MASTER_ZONE_IPS" { 35.156.219.71; }; |
このまま動かすと、spamhausに怒られる。
ユーザー登録しないといけないそうだ。
ということで登録する。
DNS RESPONSE
POLICY ZONES (RPZ)から飛んだ先で名前とメールアドレスを入力し、国を選ぶ。最低これだけで登録できるらしい。
問題は、「フォームを送信しました」と言っておきながらメールが届かない。
「あれ?間違えたかな?」とページをバック(できるのだわ)し内容を再確認、送信し直す。
すると「ボットじゃね」判定されたらしい。これは本当に酷い仕様だと思う。
「やられた、騙された〜」って気分。
と言うことで今日はここから先に進めません。なので(その1)なのでした。
たまたまdocomoに
|
1 2 |
X-DCMSpam: 406 X-DCMCreditRating: 4 |
と言う「とても素敵な(こっちよこすな)」メールが来てね、踏み台のリンクがあったから、local.rpzに書き込んでみた。
これでテストができる。にししし……。
そうしたら普通に飛んじゃった。何かがおかしい。
|
1 2 3 4 5 |
% sudo named-checkzone local.rpz /opt/local/var/named/local.rpz dns_rdata_fromtext: /opt/local/var/named/local.rpz:8: near eol: unexpected end of input zone local.rpz/IN: loading from master file /opt/local/var/named/local.rpz failed: unexpected end of input zone local.rpz/IN: not loaded due to errors. |
と、エラーになる。
これspamhausにあったソースのコピーだよ。何でだよ。
色々あったけれど、結果、管理者用メールアドレスが無かったせいでした。
多分「自分とこのアドレス入れるのは当然だよね」と書かなかったんだろうけれど、サンプルくらいは入れて欲しい。
形態が違っているから、記載内容も違って当然と思ったじゃないかぁ。
ここにも罠があったのか〜。くっそう、くっそう。
rndc reloadではcacheが消えないので再立ち上げして、nslookupの結果、local.rpzに書き込んだドメインは「アドレスが見当たらない」になりました。
|
1 2 |
elettronicasalute.com IN CNAME www.k-in.co.jp. *hqg6a.cn IN CNAME . |
こんな感じに付け加えた。そしたら、
|
1 2 3 4 5 6 7 8 9 10 |
% nslookup elettronicasalute.com ;; Got SERVFAIL reply from 192.168.0.35, trying next server Server: 192.168.0.36 Address: 192.168.0.36#53 Non-authoritative answer: elettronicasalute.com canonical name = www.k-in.co.jp. Name: www.k-in.co.jp Address: 192.168.0.35 |
192.168.0.35に行こうとしているのは2台のDNSが並列に相互参照しているから。
別に深い意味はない。dhcpで設定しているからだと思う。35→36→1の順に聞きに行ったりする設計だわ。
ソレで今回DNS Firewallの実験は36側だけ行っている。
失敗しても35が生きていれば検索できるしね。
しかし、いつ迄経ってもspamhausからメールが来ない。
(その2)はいつ書けるのだろう……。

