モーグルとカバとパウダーの日記

モーグルやカバ(EXカービング)山スキー(BC)などがメインの日記でした。今は仕事のコンピュータ系のネタが主になっています。以前はスパム対策関連が多かったのですが最近はディープラーニング関連が多めです。

rbldnsdを利用して公開DNSBLを立ち上げる

(追記)

この設定そのままだと、自サーバから普通に引くことは可能なのですが、外からは引けないようです。
recursiveの問題かと思っていろいろ設定してみたのですが、recursiveを許可してもダメでした。
あと、普段はrecursiveを許可せずに、DNSBLの問い合わせだけrecursive許可という設定にしたいのですが、良く分からず。viewを使うのかなあ。
はまりです。

(途中経過)rbldnsdを利用して公開DNSBLを立ち上げる - モーグルとカバとパウダーの日記
(途中経過2)rbldnsdを利用して公開DNSBLを立ち上げる - モーグルとカバとパウダーの日記

        • -

rbldnsd というツールを利用することで、簡単に自家用DNSBLや公開DNSBLを立ち上げることができました。
というわけで、簡単に設定の紹介。

rbldnsdのインストール

rbldnsd自体は、debianにパッケージが入っていたため、aptでインストール

# aptitude install rbldnsd

rbldnsdの設定

rbldnsdはポート10053で起動して、ブラックリストのファイル自体は/var/lib/rbldnsに置いている。

/etc/default/rbldnsd に追加

RBLDNSD="- -r /var/lib/rbldns -b 127.0.0.1/10053 ip.dnsbl.example.jp:ip4set:ip host.dnsbl.example.jp:dnset:host"

ブラックリストファイルを作成

192.168.1.*と192.168.5.1、example.comブラックリストの場合。

/var/lib/rbldns/ip ファイル作成(例)

:127.0.0.2
192.168.1.0/24 20080611173000
192.168.5.1 20080612184715

/var/lib/rbldns/host ファイル作成(例)

:127.0.0.2
example.com 20080611173000

ちなみに、ブラックリストファイルに変更を加えると、デフォルトでは1分以内で読み込み直しが行われて反映されるようになっている。

DNS設定

ドメインがexample.jpで、ネームサーバがns.example.jp、DNSBLを引くためのサブドメインdnsbl.example.jpの場合。
dnsbl.example.jpにアクセスされた場合、自サーバ内の10053ポート、つまりrbldnsdへと転送して、そちらの返答を返す様にする。
example.jpを架空のものにして、内部だけで使うDNSBLとして使うのはすぐにできたのだけど、現在使用しているドメインで公開DNSBLとして使える設定にするのが、なかなかできなくてはまった。
dnsbl.example.jpをNSとして設定してないとだめなのね。

/etc/bind/example.jp.zone に追加

dnsbl           IN      NS              ns.example.jp.

/etc/bind/named.conf.local に追加

zone "dnsbl.example.jp" {
        type forward;
        forward first;
        forwarders {
                127.0.0.1 port 10053;
        };
};

追加したら、シリアルの変更と再読み込みを忘れずに。

# rndc reload

テスト

nslookupやdigなどで、まずはrbldnsdに対して直に引いて試してみる。

# dig @localhost -p 10053 1.5.168.192.ip.dnsbl.example.jp

;; ANSWER SECTION:
1.5.168.192.ip.dnsbl.example.jp. 2100 IN A       127.0.0.2

と、/var/lib/rbldns/ip の最初で指定した「127.0.0.2」が返ってくればOK。
引きたいIPやドメイン部分が、「192.168.5.1」を引きたいときは「1.5.168.192」と逆順になることに注意。

次に、ポート指定せずに試す。

# dig @localhost 1.5.168.192.ip.dnsbl.example.jp

ポートフォワードされていればこちらでも答えが返ってくるので終了。

後はipやhostのファイルに、追記していく仕組みを作ればよい。