Slowloris攻撃は、Webサーバーを標的としたサービス拒否(DoS)攻撃の一種です。多数の接続を開いたままにして不完全なHTTPリクエストを送信することで、サーバーが接続を閉じるのを妨害します。その結果、サーバーは到着しない残りのリクエストデータを待機するため、リソース不足に陥ります。Slowloris攻撃は、受信リクエストの処理にスレッドベースのアーキテクチャを使用するApacheなどのWebサーバーに対して特に効果的です。
Slowloris攻撃は、ウェブサーバーが受信したHTTPリクエストを処理する方法を悪用します。ウェブブラウザなどのクライアントがサーバーにリクエストを送信する際、クライアントは完全なHTTPリクエストを送信し、レスポンスを期待します。しかし、Slowloris攻撃では、攻撃者はHTTPリクエストの一部を送信し、ヘッダーを非常にゆっくりと送信することで接続を開いたままにします。その仕組みは以下のとおりです。
部分的なHTTPリクエストの送信: 攻撃者はHTTPリクエスト(GETメソッドなど)の先頭部分とヘッダーを送信します。リクエストは完了せず、サーバーは追加のデータを待つ状態になります。
接続を開いたままにする: 接続を維持するために、攻撃者は HTTP リクエストの小さく不完全な部分を定期的に送信し、サーバーが接続を閉じるのを阻止します。
サーバーリソースの枯渇: サーバーはリクエストの残りの部分が完了するまで接続を開いたままにします。攻撃者が不完全なリクエストを大量に送信した場合、サーバーは利用可能なスレッドやプロセスを使い果たし、速度が低下したり、正当なユーザーへの応答が停止したりします。
Slowloris攻撃の主な利点は、最小限のトラフィックと攻撃者による比較的少ないリソース消費で、重大なサービス中断を引き起こすことができることです。Slowlorisを理解し、軽減することで得られるメリットは次のとおりです。
効率的なリソース消費: 大量のトラフィックを生成する従来の DDoS 攻撃とは異なり、Slowloris 攻撃はごくわずかなデータでサーバーを圧倒できるため、検出と軽減がより困難になります。
シンプルでステルス性が高い:Slowlorisは実行が比較的簡単で、単一のマシンから実行できます。また、大量のトラフィックを生成しないため、正規のトラフィックとの区別が難しく、ステルス性も高いです。
特定のウェブサーバーを標的とする:この攻撃は、特定の種類のウェブサーバー(例:Apache)に対して最も効果的です。企業がこのようなサーバー構成を使用している場合、Slowloris について知っておくことで、プロアクティブな保護対策を講じることができます。
その有効性にもかかわらず、Slowloris 攻撃に対する防御にはいくつかの課題と考慮事項があります。
検出の難しさ: Slowloris は異常に大量のトラフィックを生成しないため、正規のトラフィックとの区別が困難です。管理者は、サーバーに障害が発生するまで攻撃に気付かない可能性があります。
サーバーパフォーマンスへの影響: 少数の攻撃者であっても、大幅な速度低下やサービス拒否を引き起こす可能性があります。スレッドベースのモデル(Apacheなど)を使用するWebサーバーは、攻撃者が実際のデータを送信することなくサーバーのリソースを消費するため、特に脆弱です。
最新システムでは効果が限定的: 多くの最新サーバーでは、Slowloris攻撃の効果を弱める防御策が実装されています。サーバーによっては、接続の維持時間を制限したり、疑わしい動作を検知した場合に自動的に接続を切断したりすることがあります。
Slowloris 攻撃から保護するには、いくつかの戦略を実装できます。
タイムアウトと接続制限を設定する:サーバーに適切なタイムアウトと接続制限を設定することで、攻撃が成功する可能性を低減できます。例えば、一定時間経過後にアイドル状態の接続を閉じるようにサーバーを設定することができます。
リバースプロキシを使用する:NginxやHAProxyなどのリバースプロキシサーバーをWebサーバーの手前に導入すると、Slowloris攻撃の検出とブロックに役立ちます。これらのプロキシは、受信リクエストを処理し、正当なトラフィックをWebサーバーに渡すと同時に、不完全なリクエストや疑わしいリクエストをフィルタリングします。
レート制限: レート制限を設定すると、単一の IP アドレスからの着信接続数を制限できるため、悪意のある攻撃者が確立できる低速接続の数を減らすことができます。
侵入検知システム (IDS): IDS は、不完全な HTTP 要求や繰り返しの接続試行など、ネットワーク トラフィック内の異常なパターンを検出し、サーバーが過負荷になる前に警告を発します。
Webアプリケーションファイアウォール(WAF):WAFは、Slowloris攻撃の一部と思われるトラフィックをフィルタリングしてブロックするのに役立ちます。例えば、適切なヘッダーが欠落している接続や不完全な接続をドロップするようにWAFを設定できます。
非スレッドサーバーの使用:リクエストごとに個別のスレッドに依存しない、イベント駆動型または非スレッド型のウェブサーバー(例:Nginx、LiteSpeed)の使用を検討してください。これらのサーバーは、多数の接続をより効率的に処理するため、Slowloris攻撃に対する耐性が高くなります。
Slowloris攻撃は他のDDoS攻撃手法に比べると一般的ではありませんが、ウェブサーバー構成の特定の脆弱性を狙う攻撃者にとっては依然として有効なツールです。攻撃の仕組みを理解し、適切な緩和策を実施することで、組織はシステムの耐障害性を確保し、この種のサービス中断から保護することができます。