[メモ]DNSリフレクター攻撃への対処:BINDへResponse Rate Limitting(RRL)の設置:CentOS5
ある日、プロバイダーから「お宅のサーバーからアタックされてるって報告来てます。
いついつまでに対処しないと通信止めます!」って来たらどうされます??
こんにちは!くまかけです!
今回は、そんな警告が来た事への顛末です(^^)
事の始め。。。
ある日、知り合いからの一本の電話が。。
「こんなメール来たんだけど、どうしよう??」
この度、ご利用サーバから発信される通信に対する申し立てが、弊社に寄せられましたので、ご連絡いたします。
以下提供されました情報からは恐らく本件は「DNSの再帰的な問い合わせを使ったDDoS攻撃」と呼ばれる手法によるものであると推測されます。
お客様におかれましては、サーバ管理者として調査いただき、必要に応じた設定の見直し等ご対応をいただきますようお願いいたします。
い、いや、期限切られてるし、対処せねば!
ってことで、今回のドタバタがスタートしました(^^)
状況確認
オープンリゾルバになってるかをテストするサイト
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)パラメータ説明


最新記事 by くまかけ (全て見る)
- - 2015年5月27日
- 投稿のテスト - 2014年12月28日
- [ワードプレス]追加した写真を表示する - 2014年12月27日
この投稿へのコメント
この投稿へのトラックバック
トラックバックはありません。