ModSecurity2のインストール

6月 27, 2010

ModSecurity2のインストール備忘録。
先に注意点を書かせてもうらうと、英語を読むのが面倒でつい日本語の情報に飛びついて
しまいがちだが、1.x系と2.x系とではいろんなことがガラリと変わるので注意が必要である。
(はっきりいって日本語の情報は古いのが多いです)
ルールの文法もかなり違っているので、はまった。SecFilterなんて、もう使えないし。
今ここで書いていることもしばらくしたら変わっているだろう。
2010年6月現在の情報であることをお断りしておく。

それから、導入前にファイルシステム構成を考えておいたほうがよい。
例えばログやルールファイル、設定ファイルの格納先をApacheのベースディレクトリ
以下にするのか、それともModSecurity専用のベースディレクトリを作るのか、など。
後でやり直しはきくことだが、時間があるのなら先にプランニングしておいた方が
スムーズに作業できると思う。ここで書いたディレクトリ構成はあくまで一例なので、
環境に合わせて読み替えて頂きたい。

ここでは、バージョンはModSecurity2.5.x、Apache2.2.x、OSはRedHat系Linuxでの例となる。
流れは大まかにいって、依存関係のあるツールをインストール、Apacheのリコンパイル、
ModSecurityのインストール、という感じになる。

(1) 付随する追加導入ツール。
1. libxml2(及びlibxml2-devel)
2. pcre (及びpcre-devel)
3. Lua (リオデジャネイロ大学で開発された言語。必須ではない)
4. mod_unique_id

1.と2.はyum install libxml2-develなんかでOK。
ソースからの場合はこちら。
↓ ↓ ↓
http://xmlsoft.org/downloads.html
http://www.pcre.org/

3.luaはオプショナル。利用するのであればインストール。そうでなければスキップしてよい。
luaはソースからコンパイルすると静的ライブラリ liblua.aが生成されるが、
動的ライブラリ liblua5.1.soは入手できない。Apacheで利用するには動的ライブラリ
が必要とのことで、マニュアルではバイナリ入手を推奨している。

バイナリの入手先はここから。
↓ ↓ ↓
http://luabinaries.sourceforge.net/download.html

# wget http://luaforge.net/frs/download.php/3107/lua5_1_4_Linux26g4_64_lib.tar.gz
※マシンアーキテクチャによって読み替えてください。

# tar -zxvf lua5_1_4_Linux26g4_64_lib.tar.gz
# ls
include liblua5.1.a liblua5.1.so lua5_1_3_Linux26g4_64_lib.tar.gz
# cp liblua5.1.so /usr/lib/


4.mod_unique_id導入
Apacheのインストールディレクトリ配下のmodules/metadataに移動し、以下を実行する。

# /usr/local/apache/bin/apxs -cia mod_unique_id.so


これによりhttpd.confのLoadModulesにmod_unique_id.soが追加される。

(2)Apacheリコンパイル
Apacheが起動していたら停止し、Apacheのインストールディレクトリに移動してconfigure。以下は一例。

# ./configure – - prefix=/usr/local/apache ¥
- -with-pcre ¥
- -with-apr=/usr/local/apache/bin/apr-1-config ¥
- -with-apr-util=/usr/local/apache/bin/apu-1-config ¥
- -enable-so ¥
- -enable-rewrite ¥
- -enable-ssl


モジュールを動的に組み込みたい場合は、以下のように。

- -enable-mods-shared=”all ssl cache proxy ….(略)…”


続けて

# make clean
# make
# make install


(3)ModSecurity2をインストール
様々な方法が書かれていてかえって混乱したが、apxs -cia modsecurity.cとやるのは、2.0以前のやり方。
現時点ではconfigureしてmakeでいいはず。

公式サイトから最新版をwget。
(バイナリパッケージはThird partyからの入手となる)
tar -xzvf modsecurity-apache_2.5.x.tar.gzで展開。
展開後のインストールディレクトリ/apache2へ移動。

# ./configure – -with-apxs=/usr/local/apache/bin/apxs ¥
- -with-pcre=/usr/bin/pcre-config ¥
- -with-apr=/usr/local/apache/bin/apr-1-config ¥
- -with-apu=/usr/local/apache/bin/apu-1-config


- -with-libxml=/path/to/libxml2としなくても、configure時の出力を見ると
libxmlを認識してくれているようである。
逆にこれを入れるとエラーになる。もう何だかわからない。
curlのwarningは無視していいらしい。
(ModSecurity Consoleを利用する場合は、libcurlのパスを指定してやる必要がある)

# make
# make install


(4)ルールファイルをコピー。
コピー先ディレクトリ名はお好みで。

# mkdir /usr/local/apache/conf/modsecurity
# cd ../rules ←インストールディレクトリ配下のrulesへ移動
# cp -p * /usr/local/apache/conf/modsecurity/


(5)メインの設定ファイルを作成。
本来はここにルールを直接書くのではなく、別のルールファイルを用意してInclude
するのがよいと思うが、とりあえず初回の動作確認のために以下のように書いておく。
なお、以下はhttpd.confに直接書いても構わない。
またmodsecurity.confを置く場所もお好みで。

# vi /usr/local/apache/conf/extra/modsecurity.conf

<IfModule mod_security2.c>
SecRuleEngine On ←ModSecurityを有効にする
SecAuditEngine On ←audit_logを有効にする
SecAuditLog On ←Onですべてのアクセスがロギングされる
SecAuditLog logs/audit_log ←ログ出力先を指定
<IfModule>



IfModule mod_security.cではなく、IfModule mod_security2.cであることに注意。

(6)httpd.conf編集。
以下追記。パスや追記内容は環境によって読み替えて頂きたい。
64bit版の環境だと/usr/lib/が/usr/lib64/になることに注意。

LoadModule security2_module modules/mod_security2.so
Include conf/extra/modsecurity.conf
LoadFile /usr/lib/libxml2.so
LoadFile /usr/lib/liblua5.1.so


(7)Apacheを起動。
文法テストしてから起動。

# /usr/local/apache/bin/apachectl configtest
Syntax OK
# /usr/local/apache/bin/apachectl start


ModSecurityの動作確認としては、この時点で設定ファイルで指定したaudit_logが
生成されていればOK。
さらにはブラウザにアクセスしたらaudit_logにロギングされるところまで確認しておく。
ログが生成されないようだったらModSecurityが動いていないと考えられる。
インストール手順を見直して再試行すべし。

とりあえずここまで出来たら、あとは基本の設定&ルールを極めるだけ。
(というか、ここからが本題)この辺りついては、また別途。

参考
Apache/2.x/mod_security/2.5.9のインストール – PukiWiki
Modsecurity2.5をインストールする – MovableTypeカスタマイズfor携帯

英文だが一番参考にすべきなのはここ・・・(注:現時点での最新版)
↓ ↓ ↓
ModSecurity® Reference Manual

Categories: ModSecurity

No Responses so far | Have Your Say!

Comments are closed.