NGINXを利用してWAFを作る。
WAFとは Web Application Firewallの略であり。Web Serverに対する HTTP レイヤからの攻撃を観測・遮断する機能を持つものである。
一般にWAFには、遮断モードと観測モードがある。
WAFやIPSは、その挙動から、Proxy-WAFとTransparent-WAF(透過WAF)がある。
WAFの攻撃検知方法としては、Signature型とAnomaly型がある。
NGINXで実装可能なWAFは、mod_securityによるものがSignature型、NAXIによるものがAnomaly型といえる。
一般に、Security保護系のシステムは、定常的な運用と定常的な保守が必要となる。特にSignature型WAFであれば、適正なSignatureを維持し、できる限り最新の情報に更新されていることが望ましい。
したがって、WAF(に限らないが)の利用は「設置すればOK」のような考えではむしろ問題が大きくなることがある。例えば、Signatureの更新もせず、logの確認もしていない状況では、自サイトに誰かが攻撃しているのか、どんな攻撃をしているのかが把握できず、古い、比較的一般化している攻撃は防げても、新しい攻撃には対応できないなどの状況になりやすいからである。
以上より、本番環境へのWAFの導入にあたっては、
ことが重要となる。
本記事でNGINX + mod_security3を導入する場合、OWASP CRSは、「一般的な攻撃」のSignatureは提供するが、最新の攻撃や比較的特殊な攻撃には対処できない。したがって。その種の攻撃に対する対策をどうするのかの検討は必要になる。
以上より、筆者のオススメは、外部に攻撃を仕掛けないようにする程度の隔離環境を構築した上で、 学習用 としてmod_security環境+OWSP CRSやNAXIを利用しつつ、実サービス環境には「 Security事業者 」のサービスを導入することである。これによって、
というメリットもある。