ようこそゲストさん

Magical Diary, beta version

[spam] 国別DNSBL with rbldnsd

2007/07/29 8:39 HIRATA Yasuyuki

以前、特定の国からのメールをすべて拒否で、Postfix のみに利用できる方法を解説したが、他のソフト (Apache + mod_access_rbl や CGIプログラムなど) から利用可能にするには、DNSBLとして利用できる形態が望ましい。(DNSBLについては、Apache 1.3 + mod_access_rbl を参照。)

DNSBLの運用にBINDを利用することも可能ではあるが、ある程度規模があるDNSBLを運用する場合には設定ファイルの再読み込みに時間がかかるなどの問題があるため、ここでは rbldnsd を利用する方法を解説する。

導入するべきソフト

  • dns/rbldnsd

方針

rbldnsdは 127.0.0.1:10053 で待ち受けする。BINDは特定のゾーン (rbldnsd.local) のクエリのみ rbldnsd を参照する。

         +------+     +---------+
query -->| *.53 | --> | L:10053 |
         | BIND |     | rbldnsd |
         +------+     +---------+

設定方法

  1. 設定ファイルの作成・修正
    # mkdir /usr/local/etc/rbldnsd
    # cd /usr/local/etc/rbldnsd
    # vi rbldnsd.rbl
    # vi /etc/namedb/named.conf
    # vi /etc/rc.conf
    # /usr/local/etc/rc.d/rbldnsd.sh start
    
    rbldnsd.rbl の記載内容は以下の通り (実際のデータの一部):
    $DATASET ip4set:ad ad
    :127.0.0.1:Andorra
    194.158.64.0-194.158.95.255
    85.94.160.0-85.94.191.255
    91.187.64.0-91.187.95.255
    $DATASET ip4set:ae ae
    :127.0.0.1:United Arab Emirates
    194.170.0.0-194.170.255.255
    195.229.0.0-195.229.255.255
    213.132.32.0-213.132.63.255
    
    named.confの追加内容は以下の通り:
    zone "rbldnsd.local" {
      type forward;
      forward first;
      forwarders { 127.0.0.1 port 10053; };
    };
    
    rc.confの追加内容は以下の通り:
    rbldnsd_enable="YES"
    rbldnsd_flags="-u bind:bind -r /usr/local/etc/rbldnsd -b 127.0.0.1/10053 -c 0 rbldnsd.net:combined:rbldnsd.rbl"
    
  2. 194.158.64.0 は Andorra に割り当てられたアドレスなので、"ad.rbldnsd.local" にはレコードが存在し、"jp.rbldnsd.local" には存在しないことを確認する。
    % host 0.64.158.194.ad.rbldnsd.local
    0.64.158.194.ad.rbldnsd.local has address 127.0.0.1
    % host -t txt 0.64.158.194.ad.rbldnsd.local
    0.64.158.194.ad.rbldnsd.local descriptive text "Andorra"
    % host 0.64.158.194.jp.rbldnsd.local
    Host 0.64.158.194.jp.rbldnsd.local not found: 3(NXDOMAIN)
    
  3. 外部からの利用を許したくない場合、ゾーン設定に allow-query を追加すればよい。(以下の例は127.0.0.1, 192.168.1.0/24 のみを許可する場合。)
    allow-query { 127.0.0.1; 192.168.1.0/24; };
    
  4. 必要に応じて Apache や Postfix などの設定を行う。

とりあえず、試験的に countrycode.dnsacl.net を立ち上げてみた。たとえば、kr.dnsacl.net は韓国のアドレスをブロックするDNSBLになっている。("acl" は access control list; ホワイトリストにも利用できるため。)


#  非公開コメント   

  • TB-URL(確認後に公開)  http://diary.asuka.net/027/tb/
© 2007 HIRATA Yasuyuki <yasu@asuka.net>, all rights reserved