サーバーを立ち上げてDNSサーバーをプライマリーにて運用していたところ、ある日『あなたのサーバーから大量のデータ送信が送られ、攻撃を受けた』とお叱りを受けました。

どうやらDNSのキャッシュ機能を悪用したDDoS攻撃の踏み台にされていたようです。

攻撃名は「DNSamp」や「DNSリフレクション攻撃」と呼ばれたりするようです。

DNSにはBIND9をしており、以下のような対策をしたので、メモしておきます。

BINDを最新バージョンにする

# yum update bind

問い合わせを受け付けるネットワークを制限する

条件

  • プライマリサーバーのIPは192.168.0.2
  • セカンダリサーバーのIPは192.168.0.3
  • プライマリで運用しているドメインはexample.com
  • セカンダリで運用しているドメインはexample2.com
# vi /etc/named.conf
// 許可するネットワークを定義
acl my-network {
    192.168.0.2/32;
    192.168.0.3/32;
};

options {
    directory "/var/named";
    dump-file "/var/named/data/cache_dump.db";
    statistics-file "/var/named/data/named_stats.txt";
    //fetch-glue no; // BIND9の場合は不要
    recursion yes; // キャッシュサーバーの場合 yes

    // 問い合わせを許可するネットワーク
    allow-query {
        localhost;
        my-network;
    };
    allow-transfer { none; }; // 転送は全部拒否
};

zone "example.com" IN {
    type master;
    file "example.com";
    allow-query { any; }; // 公開するゾーンなのでどこからでも問い合わせOK
    allow-transfer {
        192.168.0.3; // セカンダリに転送許可
    };
};

zone "example2.com" {
    type slave;
    file "example2.com";
    masters { 192.168.0.2; };
    allow-query { any; }; // 公開するゾーンなのでどこからでも問い合わせOK
};

これでexample.comとexample2.com以外についての問い合わせは応答しなくなるので、踏み台にされることは無くなるはずです。

確認方法

$ dig @192.168.0.2 yahoo.co.jp any

status: REFUSED などと出て、IPアドレスを引くことができなければ成功です。たぶん
もちろん自ドメインについて正引きができることも確認しておきましょう。

参考資料

警視庁資料
http://www.npa.go.jp/cyberpolice/server/rd_env/pdf/20060711_DNS-DDoS.pdf

JPRS資料
http://jprs.jp/tech/notice/2006-03-29-dns-cache-server.html

Web担当者Forum
http://web-tan.forum.impressrd.jp/e/2009/01/15/4414


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-09-19 (日) 19:09:18