Apacheに組み込めるWAFモジュールであるModSecurityをインストールした時の備忘録です。

ModSecurity公式
http://www.modsecurity.org/index.html

使用OS
CentOS5.5 64bit
注)OSのインストール方法は、以下アドレスの通りにしています。
http://www.kurobuti.com/linuxserver/index.php?option=com_content&view=art
icle&id=68&Itemid=74


■使用ModSecurity
modsecurity-apache_2.5.13.tar.gz
最新版は以下URLで確認してください。
http://www.modsecurity.org/download/

最近、うちのサーバにちょこちょこと攻撃が来るようになったのでModSecurity(WAF)でも導入しようか検討していました。

で、取りあえず今回はインストールまでできたっぽいのでその備忘録です。
# ルール構成を考えるのは結構知識が無いと難しい・・・orz
# ちなみに、ModSecurityはepelリポジトリかutterramblingsリポジトリを導入していればyumで簡単にインストールできます。
# 以下は、ソースからインストールした手順です。

(1)EPELリポジトリをインストール

[root@example ~]# rpm --install http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
注)luaパッケージがデフォルトのリポジトリにないためEPELからインストールします。

(2)必要なパッケージのインストール
[root@example ~]# yum -y install pcre pcre-devel libxml2 libxml2-devel curl curl-devel apr apr-devel apr-util apr-util-devel lua lua-devel httpd httpd-devel

(3)ModSecurityダウンロード
[root@example ~]# wget http://www.modsecurity.org/download/modsecurity-apache_2.5.13.tar.gz

(4)ModSecurityインストール
[root@example ~]# tar zxvf modsecurity-apache_2.5.13.tar.gz
[root@example ~]# cd modsecurity-apache_2.5.13/apache2/
[root@example apache2]# ./configure
[root@example apache2]# make
[root@example apache2]# make mlogc
[root@example apache2]# make install
[root@example apache2]# cp -p mlogc-src/mlogc /usr/bin/
[root@example apache2]# cp -p mlogc-src/mlogc-default.conf /etc/mlogc.conf

(5)ModSecurityの設定
[root@example ~]# vi /etc/httpd/conf.d/mod_security.conf
LoadModule unique_id_module modules/mod_unique_id.so
LoadModule security2_module modules/mod_security2.so

<IfModule mod_security2.c>
        Include modsecurity.d/base_rules/*.conf
        Include modsecurity.d/modsecurity_crs_10_config.conf
</IfModule>
[root@example ~]# mkdir /etc/httpd/modsecurity.d
[root@example ~]# cp -r modsecurity-apache_2.5.13/rules/base_rules/ /etc/httpd/modsecurity.d/
[root@example ~]# cp -r modsecurity-apache_2.5.13/rules/optional_rules/ /etc/httpd/modsecurity.d/
[root@example ~]# cp -r modsecurity-apache_2.5.13/rules/modsecurity_crs_10_config.conf.example /etc/httpd/modsecurity.d/modsecurity_crs_10_config.conf
[root@example ~]# vi /etc/httpd/modsecurity.d/modsecurity_crs_10_config.conf
#SecRuleEngine DetectionOnly
↓ # 変更
SecRuleEngine On # 「DetectionOnly」は検知のみ

# 最終行にでも追加(ログ)
# Mod Security Audit Log
SecAuditEngine On
SecAuditLog On
SecAuditLog logs/mod_security_audit.log

(6)Apacheを起動
[root@example ~]# /etc/rc.d/init.d/httpd configtest
Syntax OK
[root@example ~]# /etc/rc.d/init.d/httpd start
httpd を起動中:                                            [  OK  ]
[root@example ~]# chkconfig httpd on

(7)ログが吐かれるか確認
[root@example ~]# tail -f /var/log/httpd/mod_security_audit.log
ブラウザからサーバへアクセスしログが出力されるか確認する。

取りあえず、うちの環境ではログが吐かれたので動いているのだろう・・・。(多分)

うーん、ルールがよくわからん。ここらへん勉強しないとなぁ。

ちなみに、以下URLからFirewall Ruleがダウンロードできるみたい。
https://www.owasp.org/index.php/Category:OWASP_ModSecurity_Core_Rule_Set_Project

後、以下URLでユーザ登録をすれば、ModSecurityの設定をGUIで行えるツールがダウンロードできるらしい。
http://www.breach.com/products/ModSecurity-Community-Console.html
#最初、mlogcがGUIでの設定ツールかと思ったんだけど、違うのかなぁ。上記GUIツールを使うのにmlogcが必要??
#うーん、よくわからない。

参考文献
1. http://sourceforge.net/apps/mediawiki/mod-security/index.php?title=Reference_
Manual#Installation

2. http://www.jasonlitka.com/yum-repository/
3. オライリー「Apache セキュリティー」359p-386p(情報が古くてあまり使えなかった)


4月 10, 2011 at 4:04 pm by 黒ぶちメガネ
Category: Apache, Linux, mod_security