DNSサーバーを運用している方や、ネットワークセキュリティに興味のある方ならば、「オープンリゾルバ」という言葉を耳にしたことがあるかもしれません。
オープンリゾルバは、設定の不備によって誰でも利用できる状態になったDNSサーバーのことであり、DDoS攻撃やDNSアンプ攻撃の踏み台として悪用される重大なセキュリティリスクを抱えています。
本記事では、オープンリゾルバの意味・仕組み・セキュリティリスク、そして具体的な対策方法までわかりやすく解説していきます。
自社のDNSサーバーがオープンリゾルバになっていないか確認したい方にも参考になる内容です。
オープンリゾルバとはアクセス制限のないDNSサーバーのことである
それではまず、オープンリゾルバの定義と基本的な意味について解説していきます。
オープンリゾルバ(Open Resolver)とは、インターネット上のすべての送信元からのDNSクエリを受け付けて名前解決を行ってしまう、アクセス制限のないフルサービスリゾルバのことです。
本来、フルサービスリゾルバは自社・自組織のユーザーのみが利用できるよう、アクセス制限を設けるべきです。
しかし、設定が不適切であったり、デフォルト設定のまま運用されていたりする場合に、外部の誰でも利用できるオープンリゾルバが生まれてしまいます。
オープンリゾルバは攻撃者にとって非常に都合のよい踏み台となるため、発見された場合には早急な対処が必要です。
JPCERTコーディネーションセンター(JPCERT/CC)や各国のセキュリティ機関は、オープンリゾルバの存在をセキュリティ上の重大な脅威として継続的に警告しています。
自社のDNSサーバーがオープンリゾルバになっていないかどうか、定期的に確認することが強く推奨されます。
オープンリゾルバが引き起こすセキュリティリスク
続いては、オープンリゾルバが引き起こす具体的なセキュリティリスクについて確認していきます。
DNSアンプ攻撃(DNS Amplification Attack)とは
オープンリゾルバを悪用した最も代表的な攻撃がDNSアンプ攻撃(DNS増幅攻撃)です。
DNSアンプ攻撃の仕組みは次の通りです。
1. 攻撃者は送信元IPアドレスを標的サーバーのIPアドレスに偽装する(IPスプーフィング)
2. 偽装した送信元IPで、オープンリゾルバに対して大きなDNS応答を返すクエリを送信する
3. オープンリゾルバは偽装されたIPアドレス(=標的サーバー)に大量の大きなDNS応答を送り続ける
4. 標的サーバーは大量のトラフィックに晒され、サービス不能状態(DDoS)に陥る
DNSアンプ攻撃の恐ろしい点は、小さなクエリで数十倍〜数百倍の応答トラフィックを生成できる「増幅効果」にあります。
ANYクエリやDNSSEC対応ゾーンへの問い合わせを使うと、特に大きな増幅率を実現できるため攻撃者に好まれます。
DDoS攻撃への加担リスク
自社のDNSサーバーがオープンリゾルバになっている場合、意図せず第三者へのDDoS攻撃に加担してしまうリスクがあります。
攻撃に加担した場合、法的責任や対外的な信頼失墜につながる可能性もゼロではありません。
実際に多くの企業がオープンリゾルバを原因としたセキュリティインシデントを経験しており、早期発見と対策が重要です。
DNSキャッシュポイズニングへの悪用
オープンリゾルバはDNSキャッシュポイズニング攻撃の標的にもなりやすい存在です。
外部からの大量クエリに晒されることで、キャッシュに偽の情報を注入される攻撃を受けやすくなります。
キャッシュポイズニングが成功すると、利用者を偽のウェブサイトに誘導するフィッシング詐欺などに悪用される危険性があります。
オープンリゾルバの確認方法
続いては、自社のDNSサーバーがオープンリゾルバになっていないか確認する方法を確認していきます。
digコマンドを使った確認方法
Linuxやmacのターミナルからdigコマンドを使って確認する方法があります。
dig @[確認したいDNSサーバーのIP] google.com
外部から上記コマンドを実行して正常なDNS応答が返ってきた場合、そのサーバーはオープンリゾルバである可能性が高いです。
自社ネットワーク外から実行することで、外部アクセスが可能かどうかを確認できます。
オープンリゾルバ確認サービスの活用
「Open Resolver Project」などのウェブサービスを使って、特定のIPアドレスがオープンリゾルバかどうかを確認することも可能です。
これらのサービスを活用することで、より手軽に自社サーバーの状況を把握できます。
| 確認方法 | 特徴 | 難易度 |
|---|---|---|
| digコマンド | 外部から直接問い合わせて確認 | 中 |
| nslookupコマンド | Windows/Linuxで利用可能 | 低 |
| オープンリゾルバ確認サービス | ウェブ上から手軽に確認 | 低 |
| ポートスキャンツール(nmap) | 詳細なポート・サービス確認 | 高 |
オープンリゾルバの対策方法
続いては、オープンリゾルバを防ぐための具体的な対策方法について確認していきます。
ACL(アクセスコントロールリスト)の設定
最も基本的な対策は、DNSサーバーにACL(アクセスコントロールリスト)を設定して、許可するクライアントのIPアドレスやネットワーク範囲を制限することです。
BINDの場合は、named.confのallow-recursionオプションで再帰問い合わせを許可するIPアドレス範囲を設定します。
options {
allow-recursion { 192.168.0.0/24; };
};
上記設定で192.168.0.0/24のネットワークからのみ再帰問い合わせを許可します。
ファイアウォールによるポート制限
DNSサーバーのUDPポート53・TCPポート53への外部からのアクセスをファイアウォールでブロックすることも有効な対策です。
ファイアウォールとDNSサーバーのACL設定を組み合わせて多層防御を実現することが、セキュリティの観点から最も推奨されます。
権威サーバーとリゾルバの分離運用
権威DNSサーバー(外部公開用)とフルサービスリゾルバ(内部利用用)を物理的・論理的に分離して運用することも重要な対策のひとつです。
権威サーバーは外部からのクエリを受け付けますが再帰問い合わせを行わず、リゾルバは内部からのみアクセスを許可するという構成が理想的です。
まとめ
本記事では、オープンリゾルバの意味・セキュリティリスク・確認方法・対策方法について解説しました。
オープンリゾルバはDNSアンプ攻撃やDDoS攻撃の踏み台として悪用される重大なセキュリティリスクです。
ACLの設定やファイアウォールによるポート制限、権威サーバーとリゾルバの分離運用によって、オープンリゾルバへの対策を確実に実施することが求められます。
自社のDNSサーバーがオープンリゾルバになっていないかどうか、定期的に確認する習慣をつけましょう。