はじめに:
昨今のWebサーバに対する攻撃はますます多様化してきており、本テーマにするDDoS攻撃と呼ばれる攻撃にも実はさまざまな手法が存在しています。
SYN FloodなどはネットワークFirewall等で防御する手段がありますが、正常なHTTPリクエストを装った攻撃に対してはネットワークレベルで防御するのはなかなか難しいでしょう。システム全体の安全性を考えたときには各レイヤで適切な対処を複合的に行っていくのがベターなのではないでしょうか。

今回は、BIG-IPの特徴であるパケットのフルペイロードインスペクション機能を利用し、シンプルなDDoS攻撃対処の一例をご紹介します。
下記URLでもご確認いただけます。
http://devcentral.f5.com/wiki/default.aspx/iRules/Simple_DDOS_protection_for_HTTP_Requests.html

タイトル:シンプルなDDoS攻撃(HTTP flood)対処iRules

メリット:
HTTPパケットの中身を見て、HTTPリクエストを検査することが可能なためL7レベルでの”ブラックリスト”を作成していくことが可能です。

機能説明:
この例では、HTTPヘッダのAccecpt-Languageフィールドを検査し適切でない送信元からのアクセスを別サイトに誘導しています。

設定概要:
用途に応じて検査したiRules中のHTTPヘッダの名前や、値を変更/追加することによって柔軟に対応していくことが可能です。

【iRule定義】


when HTTP_REQUEST {
  if { [HTTP::uri] equals "/" }{
    #log "uri: [HTTP::uri] "
    HTTP::redirect "http://anotherserverpool"
  } elseif { [HTTP::uri] equals "/homepage.asp" } {
    #log "uri: [HTTP::uri] "
    HTTP::redirect "http://anotherserverpool"
  } elseif {[string tolower [HTTP::header "Accept-Language"]] contains "ru"} {
    HTTP::redirect "http://nullsite"
  } else {
    pool mypool
  }
}

※F5ネットワークスジャパンでは、サンプルコードについて検証を実施していますが、お客様の使用環境における動作を保証するものではありません。実際の使用にあたっては、必ず事前にテストを実施することを推奨します。