主に IT 技術を整理するためにメモ的に書き溜めています。少しだけフリーソフトもあるよ。コメントを残すには、 facebook を使ってください。

CentOS 4 に mod_security を導入するには

最終更新日 2008-05-12 17:20:54 (1年以上前の記事です)

久しぶりに最近ネットセキュリティについて触れることが多くなり、 iptables だの chkrootkit だの snort だの tripwire だの nessus だのと色々いじってる。しかも結構楽しい。
今後のブログネタはしばらくこの線で行こうかな。

その第一弾ってことで mod_security のインストールから設定までのメモ。
modsecurity はフリーの Web アプリケーションファイアーウォールで、 Apache のモジュールとしてインストールする。
Apache のリバースプロクシにインストールしてもいいし、 Web サーバと共存させて動作させてもいいっぽい。

とりあえず今回は Web サーバと共存の形で CentOS 4 にパッケージでインストールした。あとで CentOS 5 にもソースからインストールする予定。

環境

  • CentOS-4.4
  • Apache-2.0.59
  • mod_security

インストール

とりあえずソースからインストールは面倒なので、パッケージで全部やる方法でやってみた。

yum レポジトリを構築してくれてる人がいるんだけど、どうも httpd も入れ替えないとだめらしく、うちの環境だと subversion の依存関係でエラーが出て入れられないので、以下から RPM を落として入れた。

Modsecurity - jackal-net.at

他に libxml2 と lua のインストールが必要。 libxml2 は centOS が管理してるので、 yum でインストール。 lua は rpmforge にあるので、 yum レポジトリに追加しておけば yum でインストール可能。 rpmforge の yum レポジトリの追加方法は CentOS 5 で DAG(rpmforge) の yum repository 追加を参考。

# yum install libxml2 lua
# rpm -ivh modsecurity-apache2-2.1.6-1.i386.rpm

設定

次に mod_security が有効になるように apache を設定する。 httpd.conf に libxml2 と mod_unique をロードするように以下の設定を追加する。

# vi /etc/httpd/conf/httpd.conf
LoadFile /usr/lib/libxml2.so
LoadModule unique_id_module modules/mod_unique_id.so

次に modsecurity.conf の先頭に modsecurity をロードするように設定。

# vi /etc/httpd/conf.d/subversion.conf
LoadModule security2_module modules/mod_security2.so

そして apache を再起動。

テスト

さっそくうまく apache に組み込まれてるかテストしてみる。コアルールファイルは /etc/httpd/conf.d/modsecurity2/ にインストールされている。

とりあえずルールはちょっと複雑っぽくてざっと見てすぐ使いこなせるって感じではなかったので、とりあえずきちんとログを書き出すかだけテスト。 telnet から ルールに引っかかる http リクエストを投げてみる。

$ telnet blog.enjoitech.jp 80
GET / HTTP/1.1
Host: blog.enjoitech.jp
Content-Length: abc

で、書き出されたログが以下。

# vi /var/log/httpd/modsec_audit.log
[12/May/2008:04:25:41 +0900] ZQTmrH8AAAEAAB04YG0AAAAH xxx.xx.xxx.xxx 60719 yyy.yyy.y.yyy zz
--55391775-B--
GET / HTTP/1.1
Host: blog.enjoitech.jp
Content-Length: abc

--55391775-F--
HTTP/1.1 413 Request Entity Too Large

--55391775-H--
Message: Error reading request body: HTTP Error 413 - Request entity too large. (Most likely.)
Message: Access denied with code 403 (phase 2). Match of "eq 0" against "REQBODY_PROCESSOR_ERROR" required. [msg "Failed to parse request body."] [severity "CRITICAL"]
Apache-Error: [file "http_protocol.c"] [line 787] [level 3] Invalid Content-Length
Action: Intercepted (phase 2)
Stopwatch: 1210533932230316 9377282 (9376942 9377049 -)
Producer: ModSecurity v2.1.6 (Apache 2.x)
Server: Apache

--55391775-Z--

うまくいってるっぽい。

最終更新日 2008-05-12 17:20:54

コメント このエントリーをはてなブックマークに追加

フリーソフトウエア
EnjoiFLV
EnjoiPacket
EnjoiCrypto
ランキング
rank2, rank3, rank7, rank10, rank11
todo メモ
facebook 対応
ページ処理
RSS feed
検索機能
認証いる?
更新日表示
実はカテゴリ機能
多言語
実はユーザ機能
ソースその内公開
動作環境メモ
php-5.1.6 with PDO
SQLite-3.3
IE6
FireFox-1.5
RSS
非認証

検索
Google