Webアプリケーションの脆弱性を突いた攻撃による「サイト改ざん」や「情報流出」などのセキュリティ対策には、WAF(ワフ:Webアプリケーションファイアウォール)があります。
WAFとは外部に公開されているWebサーバへのアクセスを監視、不審な通信を遮断してサーバを防御するセキュリティツールです。
Mod SecurityはWAFの中でも数少ないオープンソースのソフトウェアで、無償で利用できます。
今回はMod Securityを選択するメリット、および導入方法と流れについて、概要を解説いたします。
Webアプリケーションの脆弱性を突いた攻撃からWebサイトを守るためのセキュリティ対策です。SQLインジェクションやクロスサイトスクリプティング(XSS)など、FW(ファイアウォール)やIPS/IDS(不正侵入防止システム/不正侵入検知システム)では守ることが出来ない攻撃を検知・遮断することができます。
Mod Securityは、Webサーバにインストールするホスト型のWAFで、Webアプリケーションの脆弱性を突いた攻撃を防ぎます。また、オープンソースで無償提供されており、自由に利用できるソフトウェアです。
WAFはベンダーが提供しているものが主流となっており、SaaSとして提供されるクラウド型や機器を設置するアプライアンス型などがありますが、オープンソースのMod Securityを選択するメリットには、次のような点があげられます。
ベンダーが提供するWAFは、提供形態にかかわらず最低でも数万円の初期費用やライセンス料が発生します。また、定期的に保守費用・運用費用が発生する場合があります。
Mod Securityは、オープンソースですので、ソフトウェア自体の導入コストは不要です。さらに、導入にあたってWebアプリケーションの改修や他のネットワーク機器の増設は不要なため、短期間・低コストで導入が可能です。
ただし、導入対象となるサーバ台数が多い場合や、専任の技術者が不在でアウトソースしなければならない場合などは運用コストが高額になってしまう可能性があります。そのような際は、ベンダーが提供するWAFの方が低コストとなることもあります。
Mod Securityはルール設定の柔軟性が高いことが特徴で、他のWAFと比較しても優れています。
また、オープンソースのメリットとして、開発者へのフィードバックが届きやすく、必要な機能の実装が早いことが挙げられます。
Mod Securityを直接Webサーバに組み込む場合、ネットワーク関連でのオーバーヘッドが発生しないため、レイテンシなく動作します。
それでは次は、Mod Securityの導入方法について見ていきましょう。
Mod Securityの動作には、本体モジュールと攻撃パターンのルールを定義した「Core Rule Set」(CRS)が必要となります。本体はTrastwave社がGPLv2として提供し、CRSはOWASPがメンテナンスを行っています。
ダウンロードおよび最新情報の確認は、Mod Securityの公式サイトから可能です。
CentOS を例にMod Securityのインストール方法を説明します。
インストールには、yumコマンドを用います。Mod SecurityとCRSを同時にインストールすることができます。
# yum install mod_security mod_security_crs
なお、インストール先がCentOS6以下の場合、EPELのリポジトリを追加したのちにyumコマンドを用いる必要があります。
インストール後、apacheを再起動するとMod Securityが有効となります。
# systemctl restart httpd
Mod Securityのデフォルト状態では、CRSに含まれるすべてのルールが適用されます。しかし、デフォルトでは条件が厳しく、誤検知によって必要なリクエストを遮断してしまう可能性や、CMSが動作しない可能性もあります。
そのため通常では、脆弱性対策が必要なルールのみが適用されるように設定ファイルを編集して運用を行います。
デフォルトの場合、設定ファイルは以下になります。
/etc/httpd/conf.d/mod_security.conf
mod_security.confを開き、適用したいルールを編集します。例えば、脆弱性リスクの高いSQLインジェクションのみを指定して適用させたい場合は、
Include modsecurity.d/activated_rules/modsecurity_crs_41_sql_injection_attacks.conf
以上のように追記します。
CRSのルールは、/etc/httpd/modsecurity.d/activated_rules/に格納されています。また、*.confのファイルを追加して、独自のルールを設定することもできます。なお、設定変更を反映させるには、apacheの再起動が必要です。
Mod Securityのログはmod_security.confで指定された場所にmodsec_audit.log(デフォルトの場合/var/log/httpd/modsec_audit.log)として出力されます。
しかし、ログファイルから検知された内容を瞬時に把握することは、慣れていないと難しいでしょう。そこで、ログ解析のためにGUI環境で確認が可能なサードパーティ製のツール「Audit Console」を導入しておくことがおすすめです。
Audit Consoleは、Javaを利用したアプリケーションで、Webブラウザ上から、イベントログの一覧確認や集計結果のレポートを作成することができます。
Audit Consoleは以下のURLからダウンロードできます。
WAFはルールに基づいて機械的に不審なリクエストを判定しますので、ルールにかかった場合は必要なリクエストでも遮断されてしまう誤検知の可能性があります。そのため、必要なルール設定後、十分に運用テストを行ってから本番導入を行います。
Mod Securityをテスト状態にするためには、
/etc/httpd/conf.d/mod_security.conf
にて、検知のみとする設定である
SecRuleEngine DetectionOnly
を追記します。
正常なリクエストが誤って攻撃と検知される場合(偽陽性判定)には、mod_security.confに除外設定を追記していきます。これを一定期間繰り返し、正しく検知が行われ、システムが停止しないかどうかを確認してから本番運用に入ります。
オープンソースのWAF「Mod Security」について、メリットと導入方法について概要をご説明しました。
Webアプリケーションをサイバー攻撃から守るためには、本来はアプリケーション自体の脆弱性の修正やアップデートが必要です。しかし、現実には即時対応が難しい場合もありますし、未知の脆弱性に対して攻撃を受ける場合も想定しなければなりません。
WAFを導入することで、脆弱性が存在した場合でも不審な通信を遮断することができ、サーバを防御することができます。セキュリティ対策の基本は多層防御ですが、WAFは特にWebアプリケーションに対する攻撃を防ぐことを目的としています。
Mod Securityはオープンソースですが、企業での採用実績も多数ある優れたソフトです。セキュリティやWAFについて学ぶために、自身の環境で実際に動作を確認してみましょう。
■ご案内■
CyberSecurityTIMESを運営している弊社サイバーセキュリティクラウドでは、Webセキュリティ対策のソフトウェア「攻撃遮断くん」を提供しております。
専門家によるサポートも充実しております。お気軽にお問合せください。
「攻撃遮断くん」の詳細資料は、こちらからダウンロード頂けます。
(2018/5/15 執筆、2019/11/26修正・加筆)
この記事と一緒に読まれています
2020.02.14
セキュリティ対策
2020.01.10
セキュリティ対策
2020.02.15
セキュリティ対策