おのたく日記 YouTubeも始めました→
2004-11-13(Sat) [長年日記]
■ [Security] mod_securityインストール
「@IT 第11回 Webアプリケーションファイアウォールによる防御」で、Apache Webサーバで、クロスサイトスクリプティングの検知ができるmod_securitが紹介されていた。
以前トライしようとしていたけど、止まっていたので、本日インストールを実施。
mod_security DownloadによるとCVSで取ってくれるそうなので、
% cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/mod-security login
Password: メイルアドレス
% cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/mod-security co mod_security
でソースを取ってくる。おうちはApache 1.3なので、
% cd mod_securit/apache1
% apxs -cia mod_security.c
としてmod_securit.soを作成する。
ここで、おうちサーバのDebain 3.0(WOODY)+αでは、
% apxs -o mod_security.so -c mod_security.c
gcc -DLINUX=22 -DEAPI -DTARGET="apache" -I/usr/include/db1 -DDEV_RANDOM=/dev/random -DUSE_HSREGEX -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O1 -fPIC -DSHARED_MODULE -I/usr/include/apache-1.3 -c mod_security.c
gcc -shared -o mod_security.so mod_security.o -lc -lm -lcrypt -ldb1 -ldb -lexpat
/usr/bin/ld: cannot find -ldb1
collect2: ld returned 1 exit status
apxs:Break: Command failed with rc=1
とエラーが出る、「cannot find -ldb1」というのは、どうやらαの部分でdb1がlibdb1-compatに変えてあったのが原因と判明。
いま利用しているDebianのlibc6(=GNU C ライブラリ glibc)のバージョン2.2からは、db1が内蔵されているみたいなので、
% gcc -shared -o mod_security.so mod_security.o -lc -lm -lcrypt -ldb -lexpat
% sudo cp -p mod_securit.so /usr/lib/apache/1.3
として、mod_security.so作った。/etc/apache/http.confは、とりあえず
LoadModule security_module /usr/lib/apache/1.3/mod_security.so
<IfModule mod_security.c>
SecFilterEngine On
SecFilterScanPOST On
SecFilterDefaultAction "deny,log,status:406"
SecAuditEngine RelevantOnly
SecAuditLog /var/log/apache/audit.log
SecFilterSelective ARGS ("|>|<|'|script|onerror)
</IfModule>
としてテスト。
追加のSecFilterは、「@IT 第12回 mod_securityのXSS対策ルールを作成する」にあるので参考にする予定。
コメントはOKだったのでトラックバックをテスト
|
ところで、「コメントなどがフィルタされてしまうのではないか」と不安だったので、テスト投稿