1.WAFとは?
WAF(Web Application Firewall)とはWebアプリケーションの脆弱性に対する攻撃を防御するファイアウォールです。入口対策に分類され、Webアプリケーションとの通信で利用される、HTTP/HTTPS通信の内容をもとに攻撃を検知します。WAFで検知できる攻撃の代表例としては、SQLインジェクション、クロスサイトスクリプティング(XSS)等があります。
2.攻撃の検知方法
ここでは、WAFがどのように通信を制御するか具体的に見ていきたいと思います。WAFが通信を制御する方法を「表1 WAFの通信制御方式」に記載しています。また、それぞれの方式のメリット/デメリットを「表2 各通信制御方式のメリット/デメリット」に記載しています。
はなくとの経験では、シグネチャを利用した、ブラックリスト方式を採用するケースが多いように見受けられます。ホワイトリスト方式を採用する場合、「正しい通信」を定義するために自社の業務すべてに精通したエンジニアが必要となります。それだけでなく、業務や環境の変化に応じて都度「正しい通信」を再定義する必要があるため、運用負荷が非常に高いことが理ホワイトリスト方式の採用を阻む壁となっています。ただし、未知の攻撃に強いため、うまく運用できるならホワイトリスト方式による制御の方がブラックリスト方式よりも望ましいです。
表1 WAFの通信制御方式
項番 | 検知方式 | 説明 |
1 | ホワイトリスト方式 | あらかじめ「正しい通信」を定義し、「正しい通信」のみを |
2 | ブラックリスト方式 | 不正通信や攻撃パターンを定義したシグネチャと呼ばれる |
表2 各通信制御方式のメリット/デメリット
項番 | 検知方式 | メリット | デメリット |
1 | ホワイトリスト方式 | 未知の攻撃に強い。 | 「正しい通信」の定義が難しい。 |
2 | ブラックリスト方式 | 既知の攻撃に強い。 | 未知の攻撃を検知できない。 |
3.ファイアウォール、IPS/IDSとの違い
ネットワークに対するセキュリティ対策として、WAFの他にもファイアウォールやIPS/IDSがあります。これらの違いについてみていきたいと思います。
ファイアウォールは、IPアドレスとポート番号をもとに通信を制御し、ネットワークレイヤへの攻撃を検知・遮断します。通信の中身を見ることができないため、正常な通信を装った攻撃を検知することはできません。
IPS/IDSは、トラフィックやパケットを解析し、OS/ミドルウェアレイヤへの脆弱性をついた攻撃を検知・遮断します。ただし、難読化という、悪意のあるコードを隠すために文字列をエンコードされている攻撃の場合、シグネチャとのパターンマッチングができないため、このような攻撃の検知は難しいです。
WAFは、IPS/IDSと同様にトラフィックやパケットを解析します。ただし、IPS/IDSと異なり、リバースプロキシとして動作することで通信を終端させ、難読化を解除してからトラフィックやパケットを解析します。そのため、SQLインジェクションやクロスサイトスクリプティングといった、IPS/IDSでは検知できないWebアプリケーションレイヤへの攻撃を検知・遮断します。
このようにファイアウォール、IPS/IDS、WAFでは、検知・遮断できる攻撃が異なるため、組み合わせて利用することが重要と言えます。