[メモ]DNSリフレクター攻撃への対処:BINDへResponse Rate Limitting(RRL)の設置:CentOS5

ある日、プロバイダーから「お宅のサーバーからアタックされてるって報告来てます。
いついつまでに対処しないと通信止めます!」って来たらどうされます??

こんにちは!くまかけです!

今回は、そんな警告が来た事への顛末です(^^)

事の始め。。。

ある日、知り合いからの一本の電話が。。
「こんなメール来たんだけど、どうしよう??」

この度、ご利用サーバから発信される通信に対する申し立てが、弊社に寄せられましたので、ご連絡いたします。

以下提供されました情報からは恐らく本件は「DNSの再帰的な問い合わせを使ったDDoS攻撃」と呼ばれる手法によるものであると推測されます。

お客様におかれましては、サーバ管理者として調査いただき、必要に応じた設定の見直し等ご対応をいただきますようお願いいたします。

AL201_nomikai1020140830190414500

い、いや、期限切られてるし、対処せねば!
ってことで、今回のドタバタがスタートしました(^^)

状況確認

オープンリゾルバになってるかをテストするサイト
Test for Open Resolvers (The Measurement Factory)
でDNSサーバーのIPアドレスを入れてみると、見事にステータスが「Open」って表示されました。
当然と言えば、当然の結果なんですが。。(^^;

環境はどうなってんの?

まずは、DNSを動かしてるサーバー環境がどうなってるのかの確認からスタートです。
1)キャッシュサーバーと権限サーバーは同居している
2)複数のドメインを管理している
3)CentOS5.xで動作している ⇒ これがあとからあれこれと(^^;
4)BIND9.3が動作している

対策方針

会社とか、自分とこだけを管理しているのならJPSERTから出されている
■ DNS の再帰的な問合せを使った DDoS 攻撃の対策について
に記載されているallow-queryを使って、問い合わせを受ける先を絞ってしまえばいいんでしょうけど、3)の理由でその手は使えず。
今回は、Response Rate Limitting(RRL)によって、連続しての問合せ回数を制限する方法で挑む事としました。

作業方針

とにもかくにもBINDが古い!
まずは、RRLが使えるBINDにバージョンアップする必要が有ります。
RRLってBIND9.10から標準で実装されています。
それと、後の事を考えて、ソース+パッチからで無く、yumまたはrpmで対策をしたい。

作業開始

まずは、yumで検索してみると、CentOS5の標準リポジトリではBIND9.7までしかない!
※まぁ、CentOS6でもBIND9.8までなんですが。。。(^^;

BIND9.10を探していると、「510 SOFTWARE GROUP」にCentOS5でも使えそうなsrpmがアップされていました。
ダウンロードして、rpmbuildすると・・・いくつかモジュールがないだのなんだのの後、無事rpmができてくれました。

そして「rpm -Uvh 〜.rpm」すると、今入ってるBINDさんと、みごとにConflict!!
やっぱり、今のをremoveしないとダメみたい。。

#yum remove bind bind-libs bind-utils

ここでハタと気がついた・・・named止まってるorz
そりゃそうか。。。orz

作業自体は深夜にやってるんで、とっととbind9.10入れてしまえば問題ない(^^;
ってわけで、

#rpm -ivh bind-9.10.rpm

エラーがドバー!!!(**;

エラーメッセージを見てみると、どうやら、GeoIP-updateを要求されているんで、

#yum install GeoIP-update


またまたエラーがドバーーーー!!

よくよく見ると、Tempolary failure…
サーバーにアクセスできていない。。
そりゃ、named止まってるんだからアクセスできるわけか(^^;

とりあえず、ftp.riken.jpのIPアドレス調べて、/etc/hostsに書き込んで、再度yumしたんですが、モジュールが無いとの事。。
これ以上は止めるのもなんなんで、気休めにbind97をインストールして、第一日目の作業終了しました。

調査。。。

GeoIP-updateなんですが、CentOS6のリポジトリには有るんですが、CentOS5には無いんです。
geoupdateはできるんですけどね。。

ということは、BIND9.10にできない。。
とはいいながらも、GeoIP-updateを必要としないBIND9.9あたり+パッチでソースからってのも、やりたくないし。。
そんな事思いながらISCのサイトを見てると、BIND9.9.5にRRLのパッチが入ってるって情報が。。
BIND9.9.5のrpmを探していると、CentALTってリポジトリにある事を発見。。

そんなわけで、作業二日目開始。。

1)前回の失敗を踏まえて、/etc/hostsに必要なホストを記載する
142.4.206.151 mirror.sysadminguide.net
※本家のcentos.alt.ruのリポジトリにはアクセスできない模様。。

2)CentALT用のrepoファイルを作成。

[CentALT]
name=CentALT Packages for Enterprise Linux 5 - $basearch
#baseurl=http://centos.alt.ru/repository/centos/5/$basearch/
baseurl=http://mirror.sysadminguide.net/centalt/repository/centos/5/$basearch/
enabled=0
gpgcheck=0
priority=0

 



3)/etc/named.confと/var/named以下を退避

4)今入ってるBIND97を削除
#yum remove bind97,bind97-libs,bind97-utils

5)CentALTからBINDをインストール
#yum –enablerepo=CentALT install bind,bind-libs,bind-utils
BIND9.9.5がインストールされました。

6)/etc/named.confと/var/named以下を復帰

7)/etc/rc.d/init.d/named start
無事起動(^^)

8)/etc/named.confにRRLの設定をして
#named-confcheck /etc/named.conf
エラー無し!!

9)あらためて
#/etc/rc.d/init.d/named restart

インストール自体はこれで終了!!

エピローグ

改めてTest for Open Resolvers (The Measurement Factory)でチェックするとステータス自体は「Open」になっている。
しかし、/var/log/messageを見ると、
named: client xxx.xxx.xxx#yyy(hoge.com): rate limit drop REFUSED error response to xxx.xxx.xxx.0/24
がぎっしりと。
この状態をプロバイダーさんに報告したところ、確認と承認を得る事ができました。
止めるよ〜!って言われてたリミット2日前(^^;

回数制限してるだけなんで、ステータス自体が「Open」になっているのは仕方ない事なのか。。
ステータスを「Close」にできる方法の調査が必要です。

おまけ

RRLのパラメータの説明が書いてなく、あちこち探したところ見つけたので、機械翻訳させたのを掲載しています。
[メモ]DNS Response Rate Limiting(RRL)パラメータ説明

The following two tabs change content below.
くまかけ
齢50を過ぎたオッチャンプログラマーです。 元々は、COBOLerでしたが、いつからかCをやるようになり、いまはiPhoneアプリの開発を中心として、活動をしています。 ワードプレスとの関わりはFacebookと連携しての情報ストック源として考え始めてから。 一緒に活動するメンバーから、ワードプレスの使い方等を訪ねられるようになり、支援をしていく中で、月額500円(ワンコイン)で利用できるレンタルサーバーの提供およびワードプレスの設定代行を行っています。 レンタルサーバーの初期費用には、既存テーマを利用した、ワードプレスの基本設定も含まれています。 「顔の見えるサポート」が必要なレンタルサーバーや、ワードプレスの設定代行が必要な時は、ぜひお声がけ下さい。 主な情報提供はFacebookですが、@kumakake でもたま〜に、つぶやいています(^^)
くまかけ

最新記事 by くまかけ (全て見る)

Loading Facebook Comments ...

この投稿へのコメント

コメントはありません。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

この投稿へのトラックバック

トラックバックはありません。

トラックバック URL