現在位置: ホーム / セキュリティ ブログ / nginxでWAF(Web Application Firewall) を作る(第一回)

nginxでWAF(Web Application Firewall) を作る(第一回)

これから数回に分けて、「nginxでWAFを作る」というコンテンツを公開していきます。 まず第一回は、WAFの概略と必要性、WAFの種類について説明します。

こんにちは。SIOS OSSエバンジェリスト/セキュリティ担当の面です。

今回から数回に分けて、nginxでWAFをつくる方法を紹介します。


Web Application Firewall(WAF)とは

 

Web Application Firewall(以下WAF)とは、その名の通り「Webアプリケーションの脆弱性を通してサーバを狙った攻撃から、Webアプリケーションを保護するためのファイアウォール機器/ソフト」です。

WAFに関しての詳しい説明・情報はIPAの「Web Application Firewall(WAF)読本」に詳しく載っています。ここでは、簡単に概略と、どのような時に必要になるのかについてまとめます。

Internet上では、依然Webアプリケーションを狙った攻撃が常に発生しています。脆弱性を突くことにより、機密データを不正に取得したり、Webサービス自体を停止させる事が出来る可能性があるため、攻撃者にとっては魅力的なためです。ペンタセキュリティ社の調査によると、2015年上半期にはWebアプリの脆弱性スキャンが多発していた様です。

実際、適切にセキュリティを考慮した安全なWebアプリ/Webサイトを作るには、一定の知識が必要になります。IPAでは、2006年から「安全なウェブサイトの作り方」というドキュメントを公開しており、常に更新しています。また、脆弱性を体験できるように「脆弱性体験学習ツール AppGoat」も公開しています。

本来は、公開しているWebサイト・Webアプリをチェックし、全て安全に作り直すのが正しい対応方法です。しかし、サイトの規模が大きい場合には、実際には対応に時間とコストがかかってしまい、なかなか難しいのが実状です。また、ベンダーからの機器に関しても、Webインターフェースの管理コンソールなどに脆弱性が発見される事があります。

このような現実に対応しながらリスクを軽減できるものとして、「Web Application Firewall(WAF)」という機器の導入が挙げられます。

このWAFとは、Webアプリケーションとユーザの間の通信間に配置されるもので、パターンを検出して通信を制御するFirewallのようなものになります。ちょうど攻撃をパターン検出により弾くIPSと似ていますが、IPSと異なる点としては、特にWebアプリケーションを狙った攻撃に特化した制御を行うものがWAFになります。

nginx_01_WAF_1.jpg

このWAFを導入することのメリットとしては、IPSと同様に「実際の環境の脆弱性を取り除くまでの時間稼ぎが出来る」というものも挙げられます。

実際に運用している環境では、新しく(Webのコンテンツツールなどに)脆弱性が発見された場合に、実運用環境の修復・バージョンアップに時間がかかってしまうことが多々あります。

そのような場合でも、WAFである程度の時間該当の脆弱性に対処しておき、その間に実運用環境に手を入れることが出来ます。


WAFの種類について

WAFには大きく分けて、アプライアンス型とソフトウェア型の二種類があります。

どちらを選ぶかに関してはケースバイケースですが、性能を極限まで(所謂ワイヤーレベルまで)求める場合にはアプライアンス型が適しています。また、最近のようにクラウド上のシステムをクラウド内で制御する際には、ソフトウェア型のWAFが必要になります。

nginx_02_WAF_2.jpg

その他、一般的なサーバにOSを載せて、ソフトウェア型のWAFを置く場合もあります。昨今のHW性能の向上によって、性能的にもアプライアンス型に大分近づいてきています。また、一般的なサーバはアプライアンス型よりも廉価なため、複数台置いてバランスする際にはコストメリットで比較してサーバ+ソフトウェアWAFを選択するというユーザも増えています。

nginx_03_WAF_3.jpg

このようなWAFですが、ソフトウェア型で出ているものにも、商用のものとOSSのものが存在します。

OSSのWAFで代表的なものは、modsecurityNaxsiなどが挙げられます。

まとめ

今回はWAFの必要性と代表的なWAFの種類について説明しました。

次回は実際にnginxとmodsecurityを用いて、WAFのインストールを説明します。


[参考]
OSSよろず相談室

サイオスOSSよろず相談室(2)

問い合わせボタン

最新の記事
linux kernelの脆弱性( CVE-2017-7477 ) 2017年04月25日
linux kernelの脆弱性( CVE-2017-8106 ) 2017年04月25日
MySQLの脆弱性情報(Oracle Critical Patch Update Advisory April) 2017年04月24日
QEMUの脆弱性( CVE-2017-7980 ) 2017年04月24日
Oracle Javaの脆弱性(Oracle Critical Patch Update Advisory - April 2017) 2017年04月22日
Nessusの脆弱性(CVE-2017-7849, CVE-2017-7850) 2017年04月20日
OpenIDMに複数の脆弱性情報(CVE-2017-7589, CVE-2017-7590, CVE-2017-7591) 2017年04月19日
linux kernelの脆弱性( CVE-2017-7645 ) 2017年04月19日
LightDMに特権昇格の脆弱性 (CVE-2017-7358 ) 2017年04月19日
linux kernelの脆弱性( CVE-2017-7889 ) 2017年04月17日
GnuTLS の 脆弱性 (GNUTLS-SA-2017-3 : CVE-2017-7869 ) 2017年04月14日
wiresharkに複数の脆弱性(CVE-2017-7700, CVE-2017-7701, CVE-2017-7702, CVE-2017-7703, CVE-2017-7704, CVE-2017-7705, CVE-2017-7745, CVE-2017-7746, CVE-2017-7747, CVE-2017-7748 ) 2017年04月14日
linux kernelの脆弱性( CVE-2017-2618 ) 2017年04月14日
bind 9 に複数の脆弱性 ( CVE-2017-3136 , CVE-2017-3137 , CVE-2017-3138 ) 2017年04月13日
linux kernelの脆弱性( CVE-2017-7616, CVE-2017-7618 ) 2017年04月11日
Tomcatに複数の脆弱性 ( CVE-2017-5647, CVE-2017-5648, CVE-2017-5650, CVE-2017-5651 ) 2017年04月11日
linux kernelの脆弱性( CVE-2017-7286, CVE-2017-7319 ) 2017年04月11日
binutilsの脆弱性( CVE-2017-7614 ) 2017年04月10日
elfutilsに複数の脆弱性(CVE-2017-7607, CVE-2017-7608, CVE-2017-7609, CVE-2017-7610, CVE-2017-7611, CVE-2017-7612, CVE-2017-7613 ) 2017年04月10日
linux kernelの脆弱性( CVE-2017-2671 ) 2017年04月05日
Xenの脆弱性 ( XSA-212: CVE-2017-7228 ) 2017年04月05日
linux kernelの脆弱性( CVE-2016-10229 ) 2017年04月04日
linux kernelの脆弱性( CVE-2017-7374 ) 2017年04月01日
linux kernelの脆弱性( CVE-2017-2647 ) 2017年04月01日
linux kernelの脆弱性( CVE-2017-7308 ) 2017年03月30日
curlの脆弱性 ( CVE-2017-2628 ) 2017年03月30日
linux kernelの脆弱性( CVE-2017-7277 ) 2017年03月29日
ntpに複数の脆弱性(CVE-2017-6451, CVE-2017-6452, CVE-2017-6455, CVE-2017-6458, CVE-2017-6459, CVE-2017-6460, CVE-2017-6462, CVE-2017-6463, CVE-2017-6464 ) 2017年03月28日
linux kernelの脆弱性( CVE-2017-7273 ) 2017年03月28日
AppArmorの脆弱性( CVE-2017-6507 ) 2017年03月26日
linux kernelの脆弱性( CVE-2017-7261 ) 2017年03月25日
Sambaに共有以外のファイルにアクセスされる脆弱性(CVE-2017-2619) 2017年03月24日
Subscription-managerの脆弱性( CVE-2017-2663 ) 2017年03月22日
binutilsに複数の脆弱性( CVE-2017-6965, CVE-2017-6966, CVE-2017-6969, CVE-2017-7209 , CVE-2017-7210 , CVE-2017-7223, CVE-2017-7224, CVE-2017-7225, CVE-2017-7226, CVE-2017-7227 ) 2017年03月22日
linux kernelの脆弱性( CVE-2017-7187 ) 2017年03月21日
linux kernelの脆弱性( CVE-2017-6353 , CVE-2017-5986 ) 2017年03月21日
kernelの脆弱性( CVE-2017-7184 ) 2017年03月20日
pcreの脆弱性( CVE-2017-7186 ) 2017年03月20日
binutilsの脆弱性( CVE-2017-6965 , CVE-2017-6966 , CVE-2017-6969 ) 2017年03月19日
MySQL(MariaDB) 5.5/5.6のmysql clientの脆弱性( Riddle : CVE-2017-3305 ) 2017年03月18日
linux kernelの脆弱性( CVE-2017-6951 ) 2017年03月17日
Apache Struts2の脆弱性 ( CVE-2017-5638 ) 2017年03月15日
linux kernelの脆弱性( CVE-2017-6874 ) 2017年03月15日
tomcatに情報漏えいの脆弱性( CVE-2016-8747 ) 2017年03月14日
QEMUの脆弱性( CVE-2016-9603 ) (Xen: XSA-211) 2017年03月14日
lxcの脆弱性(CVE-2017-5985) 2017年03月10日
wgetの脆弱性(CVE-2017-6508) 2017年03月08日
linux kernelに特権昇格の脆弱性( CVE-2017-2636 ) 2017年03月08日
( PoC ) linux kernel特権昇格脆弱性( CVE-2017-6074 ) の暫定回避策の確認 2017年03月06日
linux kernelの脆弱性( CVE-2016-9083 , CVE-2016-9084 ) 2017年03月03日
linux kernelに複数の脆弱性( CVE-2017-6345 , CVE-2017-6346 , CVE-2017-6347 , CVE-2017-6348 ) 2017年03月01日
Katello/Foremanによる運用管理 (Part4) 2017年02月28日
util-linux / coreutils の脆弱性(CVE-2017-2616) 2017年02月24日
linux kernelの脆弱性( CVE-2017-6214 ) 2017年02月24日
linux kernelに特権昇格の脆弱性( CVE-2017-6074 ) 2017年02月23日
curlの脆弱性 ( CVE-2017-2629 ) 2017年02月22日
QEMUの脆弱性( CVE-2017-2620 ) (Xen: XSA-209) 2017年02月22日
Tomcatの脆弱性 ( CVE-2017-6056 ) 2017年02月21日
Katello/Foremanによる運用管理 (Part3) 2017年02月21日
OpenSSLの脆弱性 ( CVE-2017-3733 ) 2017年02月16日
最新の記事 - もっと...