インターネット上には十分なセキュリティ対策が施されていないコンピュータがいくつもあります。それらの脆弱性のあるコンピュータは、悪意のある人に目をつけられて、様々なセキュリティ攻撃に悪用されることがあります。中でもDNSリフレクション攻撃は、脆弱性のあるDNSサーバを悪用した攻撃です。
今回はDNSリフレクション攻撃の概要と対策方法について徹底解説します。
DNSリフレクション攻撃とは
DNSリフレクション攻撃とは、送信元のIPアドレスを偽装してDNSサーバにDNSリクエストを送信し、偽の送信元(攻撃対象)に大量のDNSパケットを送信して、攻撃対象をダウンさせる攻撃のことです。「DNSアンプ攻撃」や「DNSリフレクター攻撃」と呼ばれることもあります。
DNSリフレクション攻撃は、攻撃対象を直接攻撃するのではなく、インターネット上で稼働している複数のDNSサーバを経由して間接的に攻撃を仕掛けます。そのため、攻撃元の特定が難しいという特徴があります。
DNSリフレクション攻撃の仕組み
DNSリフレクション攻撃は、攻撃者がボットネットに対して指令を出し、ボットネットにある大量のコンピュータからDNSサーバに対してDNSリクエストを送信します。このDNSリクエストには、送信元として偽のIPアドレスが含まれており、DNSリクエストを受け取ったDNSサーバは偽のIPアドレスに対して結果を送信します。サーバから送信される結果のことをレスポンスと言います。
ボットネットから送信されたDNSリクエストをDNSサーバが受信し、DNSサーバから攻撃対象にレスポンスを鏡のように反射して送信することから、DNSリフレクション攻撃と呼ばれています。
DNSリフレクションとは
DNSリフレクション攻撃におけるDNSリフレクションとは、DNSサーバに送信したリクエストの結果を、攻撃対象のコンピュータに対して反射させるような形で攻撃する手法です。この仕組みを理解するために、まず「クライアント」と「サーバ」の仕組みについて説明します。
インターネット上には「クライアント」と「サーバ」という役割の異なる2種類のコンピュータが存在しています。サーバとは何らかの機能を提供しているコンピュータであり、クライアントとはサーバが提供している機能を利用するコンピュータです。
クライアントはサーバの機能を利用したい場合、サーバに対してリクエストを送信します。クライアントからのリクエストには、様々な情報が含まれていますが、その中に自分自身のIPアドレスが含まれています。サーバは、クライアントからのリクエストに応じて、レスポンスをクライアントに送信します。
この時、サーバへのリクエストの中に「偽のIPアドレス」を入力されているとしましょう。そうするとサーバは偽のIPアドレスに対してレスポンスを送信してしまいます。
DNSリフレクションとは、偽のIPアドレスが含まれたリクエストをDNSサーバに送信し、DNSサーバから偽のIPアドレス先にDNSレスポンスを送信することです。
一般的に、DNSサーバに対するリクエストよりも、DNSサーバから送信されるレスポンスのデータ量の方が多く、さらに複数のDNSに対して同様のリクエストが送信された場合、大量のデータが偽のIPアドレス先(攻撃対象)に送信されます。攻撃対象は処理できないほどの大量のデータを受信してしまい、ダウンしてしまいます。
DDoS攻撃とは
DDoS攻撃とは「Distributed Denial of Service attack」とつづり、日本語では「分散型サービス不能攻撃」と訳されます。ボットネット上の脆弱性のある複数のコンピュータを使って仕掛けるDoS攻撃のことです。
通常のDoS攻撃では、攻撃者は手元のコンピュータ1台を使って攻撃を仕掛けますが、DDoS攻撃の場合、攻撃者は手元のコンピュータからボットネットに指令を出し、ボットネットにある複数のコンピュータを使ってDoS攻撃をしかけます。これにより1台のコンピュータからDoS攻撃を仕掛けるときより、膨大なサイズのデータを攻撃対象に送信することが可能となります。
今回紹介しているDNSリフレクション攻撃はDDoS攻撃の一種です。他にもDDoS攻撃を仕掛ける手法はいくつか存在しており、最近ではIoTデバイスを使った攻撃も確認されています。
DNSリフレクション攻撃の対策
攻撃元の特定が難しいDNSリフレクション攻撃ですが、どのように対策すれば良いのでしょうか。有効な方法を3つ紹介します。
オープンリゾルバを使用しない
DNSリフレクション攻撃では、外部にあるDNSサーバがリクエストを受け付けてレスポンスを送信することで成り立つ攻撃です。つまりDNSサーバがリクエストを受け付けても、レスポンスを送信しなければ防ぐことが可能です。
外部からのDNSリクエストに対してレスポンスを送信するようなDNSサーバのことを「オープンリゾルバ」と言います。このオープンリゾルバはDNSサーバの設定変更によって、機能を停止させることが可能であり、それによってDNSリフレクション攻撃への加担を防げます。
なお、インターネット上にオープンリゾルバとして動作しているDNSサーバが存在することは、以前から問題となっており、DNSサーバの設定を見直すように啓発する活動もされています。
参照DNSサーバーの不適切な設定「オープンリゾルバー」について
また家庭用のWi-FiルータにDNSサーバ機能が設けられている場合があります。中でも一部のWi-Fiルータの初期設定では、オープンリゾルバとして動作するようになっているケースがあります。Wi-Fiルータを設置している一般家庭のユーザにとっては、Wi-Fiルータの設定変更は難易度が高いため、Wi-Fiルータを販売している一部のメーカーはファームウェアの更新によって対策を実施しています。
送信元を検証し、偽装データを送信できないようにする
DNSリフレクション攻撃では、送信元IPアドレスを偽装したDNSリクエストによる攻撃です。そのため送信元IPアドレスが正しいものであるかどうか検証することで、偽装されたデータの送信を防ぐことが可能です。
サーバを分離する
DNSサーバには「コンテンツサーバ」と「キャッシュサーバ」の2つの機能があります。コンテンツサーバとは、クライアントに提供する情報の保有と管理をしているサーバで、キャッシュサーバとは、クライアントから要求があった時に、コンテンツサーバの代わりにコンテンツを配信するサーバのことです。
このキャッシュサーバとコンテンツサーバを分離したうえで、インターネット側からキャッシュサーバへのリクエストを受け付けないようにすることで、DNSリフレクション攻撃の対策となります。
例えば、キャッシュサーバはイントラネット上に配置して、さらにアクセス制限をかけてインターネットからアクセスできない設定にするなどです。この方法ならばキャッシュサーバ自体に特殊な設定は不要です。
まとめ
DNSはインターネットを使う上で欠かせない技術ですが、設定や環境によっては、DNSリフレクション攻撃のために悪用されてしまうリスクがあります。
しかしDNSリフレクション攻撃における攻撃者の特定は難しいながらも、DNSサーバの設定変更や運用の仕方によって、攻撃を防ぐことは可能です。もしDNSサーバの管理をしているのであれば、この機会に一度設定を見直してみてはいかがでしょうか。