DDoS(Distributed DoS; 分散型サービス拒否攻撃)については別記事「DDoS攻撃|サクッと読めるセキュリティ用語解説」で説明しましたが、今回はDDoSからいかにシステムを守るかを見ていきましょう。
そもそもDoSとなる原因としては以下の3つがあります。
(1)対象サービスと接続するためのネットワーク帯域を使い切ってしまうこと
(2)サーバ内の実行リソース(メモリ、CPU、ディスク)などの枯渇
(3)アプリケーションやミドルウェア、OSの不具合によって、サービスを提供するためのプログラムの実行が停止、あるいは再起動を強制されてしまう
分散によってDoSを引き起こすDDoSでは、サービスのソフトウェア構成についての事前調査がいらない(1)または(2)を突く攻撃が多いですが、明らかな意図を持った攻撃を仕掛ける場合は、調査のコストを払って(3)を突けば効率的に攻撃が可能であるため、いずれのタイプについてもしっかり対策を行うことが大切です。
古典的なDoSで用いられた攻撃は、攻撃パケットに特徴があるため、検知手段、あるいは攻撃を軽減する対策は十分普及してきました。しかしDDoSでは「特別なパケットではなく、大量に攻撃ノードを用意して大量のパケットを送り付ける」という力業なため、このような保護機構は十分に働きません。ですので、初心に返って運用監視にて異常なアクセスを検知する仕組みを用意し、アクセス元のIP(場合によってはIPレンジごと)をすばやく遮断するのが効果的です。IPアドレスは偽装されることもあるため、合わせてMACアドレスを対象とすること等も考えられます。
基本的な考え方はネットワークリソース枯渇DDoSと変わりません。まずは監視で異常を検知し、迅速に対応できることが大事です。アプリケーションやミドルウェアの提供するプロトコル(例えばHTTP)を経由して攻撃するので、HTTPベースの防御機構はある程度の予防になります。また、アクセス数に対するリソース消費が適切な範囲になるよう設計することや、ロードバランサで負荷を分散する設計なども有効です。これと合わせて、実際にアクセスが集中した状態を作り出し、適切なリソース消費の範囲に収まるか、想定されるパフォーマンスが発揮できるかを負荷テストにより確認することも有効です。
プログラムの不具合にはサービス停止やリソース消費、パフォーマンスの悪化等、可用性に影響するものがあります。これらの不具合をDDoSに利用されないためにはシンプルに「安全な状態を保ち続ける」「脆弱性を作りこまない」ことが大事です。OSやミドルウェアは定期的に更新し、アプリケーション自体はフレームワークの機能を正しく使って安全なコーディングをすることで、DDoSで突かれやすい既知の脆弱性に対応できます。
大規模なアクセスへ対応する場合、独自の回線やサーバに頼るだけでなく、クラウドサービスを利用することも効果的です。クラウドサービス(IaaS)の利点として必要に応じて計算資源や回線等のリソースを増強でき、物理的なサーバ構成に比べてスケーラビリティを確保しやすい事が挙げられます。、また、PaaS等ではOSやミドルウェアの更新をクラウドサービス側で対応したり、WAFやIPS等のセキュリティ機能が提供されている場合もあるため、DDoS対策という面でもクラウドを活用していくことは効果的と言えます。
お見積り・ご相談など、お気軽にご相談ください
サイトTOPへ