みなさまこんにちは。
サービスを運用していく中でも重要な指標である可用性を担保するため、日頃より十分なDoS攻撃、DDoS攻撃の対策は行えていますでしょうか?
近年では、たった数百円でDDoS攻撃を代行するサービスが存在することや、IoTに感染するボットにより大規模なボットネットが構築されるなど、DDoS攻撃の危険性が高まっています。
長期間にわたってサービスが停止した場合、停止期間のサービス提供が行えなくなるばかりでなく、サービスの信頼度が低下したり、検索順位が下がるといった影響が発生し得ます。
そのため今回は、先日のDoS攻撃の概要と対策手法についてお話したDoS攻撃とは?DoS攻撃の概要と対策についてご紹介!に引き続き、DoS攻撃の一種であり、その中でも特に脅威的な攻撃であるDDoS攻撃についての概要と対策手法をお話いたします。
DDoS攻撃とは
DDoS攻撃は、Distributed Denial of Service攻撃の略語であり、分散的サービス妨害攻撃と訳すことができます。
DoS攻撃がDenial of Service攻撃の略語でしたから、これを分散的に行ったものがDDoS攻撃であるといえます。
分散的とはどういうことでしょうか。それは、複数台のマシンから攻撃を行うという意味です。
最も原始的なDoS攻撃では、1台のマシンや非常に少ない数のマシンから攻撃を行います。
この場合、1台の攻撃マシンから与えられる負荷の量に限界があることから、サーバーは攻撃に耐えられる可能性がありました。
また、攻撃に利用されているIPアドレスからの通信をファイアウォールなどで拒否することでも比較的容易に攻撃からサービスを守ることが可能でした。
一方で、多数のマシンから攻撃が行われるDDoS攻撃では、1台の攻撃マシンが与える負荷が少なくとも、多数のマシンからサーバーに与えられる負荷の総量は大きなものとなるため、サーバーが攻撃に耐えられない可能性が増します。
また、攻撃に数個のIPアドレスが利用されていることから通信を拒否するだけでは、攻撃を防ぎ切ることはできず、サービスを守るためには攻撃に利用されている多くのIPアドレスからの通信を拒否する必要が生じます。
しかし、その数が膨大であることから手作業での設定は困難であることや、1台1台の攻撃マシンが与える負荷が小さいことから正規の利用者と攻撃者の区別がつきにくく拒否すべき通信の判断が難しいという問題があります。
DoS攻撃の場合
DDoS攻撃の場合
また、正規利用者のマシンが、ボットなどのマルウェアによってボットネットに組み込まれ、攻撃に加担させられている場合、単純に攻撃に利用されているIPアドレスからの通信を全て拒否してしまうと、かえって正規の利用を妨げてしまうという恐れもあります。
補足:ボットとは
ボットとは、攻撃者によってリモート操作可能なようにコンピューターを乗っ取るマルウェアです。このマルウェアに感染したマシンを多数接続したクラスタをボットネットと呼び、数十万〜数百万台規模のものが存在するといわれています。
これだけのマシンが接続されることで、攻撃者は大きなマシンリソースを得ることができ、これを利用してさらなる攻撃を行います。
ボットネットを利用して行われる攻撃の一つにDDoS攻撃が存在するのです。
近年ではIoT機器に感染するボットも現れ、急速にボットネットの規模が拡大しているといわれています。
DDoSの対策手法とは
各攻撃マシンが行う攻撃は通常のDoS攻撃と同じ攻撃です。そのため、まずは通常のDoS攻撃への対策を十分に行う必要があります。
DoS攻撃の概要とその対策手法についてはこちらの記事でお話しておりますので、参考にしてみてください。
DDoS攻撃の特徴は、攻撃マシン台数が多いことと、各攻撃マシンが与える負荷の量が少ないために正規の通信と分類することが難しいことでした。
そのため特に、以下のような対策が有効です。
・ ファイアウォールのルールを自動的に追加するようなシステムの構築
・ サーバーが処理できるリクエスト数を増やす対策
ファイアウォールのルールを自動的に追加するようなシステムの構築では、ボットネットに利用されている一般利用者のマシンは、時間ごとに割り当てられるIPアドレスが変化し、同じIPアドレスが他のユーザーに使い回されることを理解し、適切な時間経過後はリストから除外する様な配慮が必要でしょう。
また、サーバーが処理できるリクエスト数を増やす対策を実現する手法としては次のような手法が考えられます。
・ 追加でサーバーリソースを追加する
・ ネットワークリソースを追加する
・ サーバー構成を変更する
・ CDNなどのキャッシュサービスを利用する
これらの手法の実現は、一様にコストがかかります。可用性とコストはトレードオフであることを理解し、適切なレベルでの可用性の担保に努めましょう。
そのためには、サービスに要求される可用性の目標を事前にたて、どこまでの障害を許容するのかを検討しておくことが重要となります。また、「どの様な影響が発生した際にはどの様な対策を行う」といった取り決めを事前に行うことで、主観によらない客観的な意思決定に基づく対策を早急に講じることが可能となります。
一般的に、可用性の目標を100%に近づければ近づけるほど指数関数的にコストが増大していくことが知られていますので、サービスの性質をもとに適切な可用性の目標をたてましょう。
99.9%の可用性を目標とする場合では年間で8.76時間のサービス停止を許容することになり、99%の可用性を目標とする場合では年間で43.8時間のサービス停止を許容することになります。
なお、検索順位を低下させるネガティブSEOの一種として行われることのあるDDoS攻撃ですが、数日程度のサーバーダウンでは検索順位に大きな影響はないといわれています。
また、稼働時間という側面以外からも、可用性とコストのトレードオフは行えます。例えば、海外からの利用を想定していないサービスの場合、海外からの通信を全て拒否することで攻撃からサービスを守れる可能性があります。これは、多くの攻撃は海外のマシンから行われているためです。クラウドベンダーやISPによってこの様なサービスが提供されている場合がありますので確認してみてください。また、GeoIPなどを用いてファイアウォールのフィルタリングルールを自動で構築するミドルウエアなども存在します。
その他の手法としては、上流のISPで攻撃パケットをフィルタリングしてもらうという手法がありますが、この様なサービスの利用には非常にコストがかかるということが実情です。
DDoS攻撃に加担しないために
利用するサーバーやコンピューターなどがDDoS攻撃に加担してしまうと、リソースを浪費してしまうばかりでなく、攻撃マシンとしてブラックリストに掲載されることで信用を損なう可能性や、攻撃対象のサービスやISPによって通信が拒否され、正規のサービス利用が行えなくなるといった可能性があります。
そのため、DDoS攻撃から自身のサービスを守ることだけでなく、DDoS攻撃へ加担しないための対策も重要となります。
このため、ボットなどのマルウェアに感染しないための対策と、アンプ攻撃に利用されることを防ぐような対策が必要となります。
脆弱なミドルウエアを利用しないこと、不必要なポートを開放しないこと、エンドポイントセキュリティ製品(アンチマルウェアソフトなど)を導入することなどが有効です。
脆弱なミドルウエアの使用を防ぐには、JPCERT/CCやJVN、JVN iPediaなどより脆弱性の情報を収集し、必要に応じてミドルウエアのアップデートなどを行いましょう。
JPCERT/CCでは、流行している攻撃やクリティカルな脆弱性情報などを注意喚起という形でまとめており、各脆弱性情報のバックログはJVNにまとめられています。また、検索キーワードを元に脆弱性情報を探したい場合はJVN iPediaが利用できます。
また、利用しているミドルウエアのバージョン一覧を取得し脆弱性情報と照らし合わせるという作業を人手で行うのは煩雑であるとともにヒューマンエラーが介在する可能性があるため、IPAなどでも紹介されているVulsなどの脆弱性スキャナーの利用が便利です。
また、不必要なポート開放を防ぐためには、Nmapなどのツールを用いることで外部から自身のサーバー上に存在するどの様なサービスにアクセス可能なのかを確認し、不要なサービスの停止、ファイアウォールによるフィルタリングなどを行います。
パブリッククラウドサーバー ALTUS byGMO を使ったDos攻撃対策
ALTUS byGMOで提供しているサーバー管理ツールのPleskでは 拡張機能として、DoS攻撃などの不正アクセスに対抗するソフトウェア である「Imunify360」を提供しております。
「Imunify360」では、ファイアウォール/ WAF機能やIDS/IPS機能で 悪意ある第三者のDoS攻撃からWebサーバーを守ることができます。 「Imunify360」の機能詳細につきましては、以下の記事をご確認ください。 ぜひDoS攻撃などの不正アクセス対策にお役立ていただき、セキュアな Webサーバーのセキュリティレベルの向上の一助として「Imunify360」の導入をご検討ください。
あらゆる攻撃からWeb サーバーを守るAI 搭載完全自動化セキュリティ 「Imunify360」とは
まとめ
DDoS攻撃への対策手法としては通常のDoS攻撃の対策の中でも特に処理できるリクエスト数を向上させるような対策が有効です。
しかし、わずか数百円でDDoS攻撃代行サービスが利用できるのに対し、攻撃からサービスを守るにはサーバーリソースを増強したり上流でのフィルタリングサービスを利用したりと非常にコストがかかるのが実情です。
そのため、サービスが停止することで被る損害とサービスを守るのに必要となるコストを天秤にかけ、どこまでの被害を許容するかを事前に検討し、適切な対策を行うことが重要となります。
また、DDoS攻撃に加担してしまうとサービスの信頼が損なわれる他、正規のサービス利用が行えなくなるなどの問題が生じることがあります。そのため、ボットに感染しないような対策やアンプ攻撃に利用されないような配慮として、必要のないポートは閉じる、脆弱なミドルウエアを利用しないなどの対策を行うことも重要となります。