- blogs:
- cles::blog

rbldnsdでプライベートなDNSBLを作ってみた

最近、ある方法で英文のspamはシャットアウトできるようになった*1ので安心していたのですが、日本語のspamで新手が現れました。MLM系の広告spam*2です。
これらを防ぐためにspamの疑いがあるdomainやipをblacklistに追加して防ぎたいと思ったのですが、普段spamを防ぐために使っているdnsblは当然のことながらこれらのdnsblはspamの疑いがあるだけではURLやIPをsubmitすることができません。*3。ということで、自分のポリシーですき放題domainやipを登録できるプライベートなdnsblを作ってみました。
ウチではメールサーバにもdnsblを活用しているのでそのあたりとブラックリストを共通化して管理できるというメリットもあります。また、万が一rbl.bulkfeeds.netなどが利用できなくなった場合でも、自前である程度の防御ができるというリスク分散の側面もあります。このあたりはNP_Blacklistの件で懲りました。備えあれば憂いなしということで。
† なぜrbldnsdか?
今回はrbldnsd*4を使いました。dnsbl自体はどのようなdnsサーバーでも構築することができるのですが、一般的に使われているbindなどで構築しようとするとゾーンファイルの定義やその更新の手間がかかってしまって結構大変です。その点、今回使ったrbldnsdはdnsblの構築に特化したツールなので、ゾーンファイルの定義も簡易で、なおかつプロセスの再起動などをしなくてもゾーンファイルのreloadも自動的に行ってくれます。
† ソースからインストール
結論から書きますが、実はバイナリのパッケージが配布されていたのでコンパイルしてインストールする必要はありませんでした。バイナリパッケージを使うと起動スクリプトを自分で書かなくていいのでオススメです。
とりあえず、今回紹介する設定は以下の前提条件のもとに書かれています。
前提条件
今回作業した手順はこのような感じです。
† セットアップ
インストールが終わったのでユーザーやディレクトリを作り、設定を行っていきます。
今回は/var/lib/rbldns以下にipアドレス登録用のipというファイルと、host名登録用のhostという2つのファイルを作りました。
/var/lib/rbldns/ip
/var/lib/rbldns/host
設定ファイルのフィールドセパレータは:です。上記の例だと一番上の行がデフォルト設定を表していて、2番目のフィールドにはdnsblにヒットしたときに返すipアドレス(Aレコード)、3番目のフィールドはdnsblにヒットしたときに返すメッセージ(TXTレコード)です。TXTレコードにおいて$はヒットしたドメイン/IPに置換されるようです。
上記の例では192.168.0.0/24や.example.com以下の部分が自分のブラックリストになるので、その部分に拒否したいipアドレスやドメインを列挙していきます。
最後にこれをdaemontoolsから動かせるようにするためのrunファイルを書きました。このサーバーには通常のDNSサーバー(BIND)がすでに動作しているため、port 553で起動させています。BINDとの連携については後述。
/service/rbldnsd/run
これで、daemontoolsでrbldnsdを起動することができるようになりました。
† BINDとの連携
前述の設定でrbldnsdは553という変なポートで起動させているため、このままでは作成したdnsblを参照することができません。このrbldnsdをBIND経由で参照することができるようにします。
/etc/named.confに以下の部分を追加
この設定により、port53のBINDにrbl.cles.netのリクエストがあった場合、127.0.0.1のport 553に問い合わせを回送するようになります。
† アプリケーションの設定
最後にdnsblを使っているアプリケーション(MTやNucleus、qmailなど)でrbl.cles.netを使うように設定を変更しておきます。
† ちなみに・・・・
これまでの設定を見るとrbl.cles.netは外部から参照可能になっているように見えますが、named.confで外部からの問い合わせに対してはrecursionが切ってあるので外部からrbl.cles.netを参照することはできません。(というか、rbl.cles.netの問い合わせだけrecursionをonにする方法がわかりませんでした。)とりあえず、プライベートdnsblの構築というミッションは果たせたのでこれでOKということにしました。
† 参考
・rbldnsdでスパム対策
・RBLDNSD
- *1: 詳しく述べるのは避けますが、ban asciiのような方法は採用していません。
- *2: ページが「だれでも成功できる→まずは資料請求→メールフォーム」という構成で、具体的なビジネス内容がほとんど記載されていなければMLMだと思って間違いないです。
- *3: そんなことができたら悪戯し放題になってしまうので。
- *4: 名前が紛らわしいのですがDJBのrbldnsとは違うツールです。サイトにはrbldnsにインスパイアされたとは書いてありますが。。。。。
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/1465
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(110791)
3 . 年次の人間ドックへ(110382)
4 . 2023 年分の確定申告完了!(1つめ)(109928)
5 . 三菱鉛筆がラミーを買収(109829)