極楽せきゅあブログ

ときどきセキュリティ

mod_security

徐々に復活気味だす。
年末年始あたりmod_securityについて調べてみたですよ。とりあえずマニュアル風メモ作成したので参考までに載せておきます。ももいさんとこにはお世話になりましたm(_ _)m


CentOS5.1でmod_securityの2.xをインストールする時、前提条件となるのは以下です。

  • apacheにmod_unique_idというモジュールが組み込まれていること
  • OSにlibxml2というライブラリがインストールされていること
  • バージョンマッチング
apacheのバージョン mod_securityのバージョン
1.3.* 1.9.*以下
2以上 2.*

ここではapache2.*にmod_securityの2.*を組み込む手順について説明します。
apacheにmod_unique_idを組み込むには、ソースからコンパイルする必要があります。ソースはwww.apache.orgなどで入手します。
ソースを解凍したディレクトリで、

# ./configure --enable-unique-id

と入力し、あとはmakeおよびmake installを実施します。なお、ディレクトプレフィックスを指定せずにconfigureスクリプトを実行したら、インストール先は/usr/local/apache2となります。

また、apacheに組み込まれているモジュールを確認するには、

# httpd -l

と入力します。

mod_securityをコンパイルする際、libxml2のインクルード(ヘッダ)ファイルを参照する必要があります。もし、通常includeファイルが置かれているディレクトリ(/usr/include、/usr/local/includeなど)にxml2関連のファイルが見あたらないならば、libxml2(http://xmlsoft.org/)のソースを入手し、解凍します。
その後、mod_securityを解凍したディレクトリ下にapache2というディレクトリが存在しますが、その下にあるMakefileの、

INCLUDES = -I /usr/include/libxml2

という行を

INCLUDES = -I /root/software/libxml2-2.6.30/include

など、実際にインクルードファイルが解凍されて置かれているディレクトリに変更し、makeします(バージョンは2008年1月現在)。
参照が必要なファイルは以下のとおりです。

msc_xml.h:#include 
msc_xml.h:#include 
re_variables.c:#include "libxml/xpathInternals.h"

インクルードファイルは参照するだけなので、libxml2がすでにインストールされているのであれば、改めてインストールし直す必要はありません。(バージョンが多少異なっても、そのまま使用できます。)

make installまで終わったら、apachehttpd.confに以下の行を追加します。

LoadFile /usr/lib/libxml2.so.2 *1
LoadModule security2_module modules/mod_security2.so *2

以上の流れは、apacheもmod_securityも追加でインストールする場合のものです。apacheにモジュールを追加する必要があるためソースからインストールを行っていますが、OSインストール時などにapacheを導入すると、インストールされるディレクトリが/usr/sbin、/etc/httpdになるなど、ソースからプレフィックス指定無しで入れる場合(/usr/local/apache2)と異なります。apache環境によってmod_securityをインストールするディレクトリを変更する場合、直接apache2/Makefile内のtop_dir変数の指定値を編集・変更してください。

*1:新たにlibxml2をインストールした場合には、例えば/usr/local/lib/libxml2.soなどと指定します

*2:apacheのインストールディレクトリ下、modulesディレクトリの下にモジュールが存在することが前提です