↑日記で日々積み重ねた情報をトップの「わんこのページ」にまとめています。

おのたく日記 [RDF] YouTubeも始めました→


2006-11-25(Sat) mod-securityでGotroot.com modsecurity(TM) rules/signaturesを使う [長年日記]

[Debian]mod-securityでGotroot.com modsecurity(TM) rules/signaturesを使う

skimaticの作業ログ 2006-10-08 Debian etch で Xen - その2」で、「Gotroot.com modsecurity(TM) rules/signatures」という、mod-securityのSPAM防止向け最新のルールセットが有ることを知ったので、適応してみることにした。

最新ルールセットは、Complete rulesets for modsec 2.x All of the rules for Apache 2.x machines らしいので、How to download/setup/install/configure and use these rulesに従って、まずこれを試してみると、「SecRuleRemoveByIdなんて知らない」というエラー

GoogleしてみるとModSecurity Downloadにあるように、ModSecurity2なるものが出ていて、最新版は2.0.4。しかし、おうちサーバにインストールしてあるのは1.8.7だった。きっと古いので新しい命令を知らないんだろう。

mod-securty 1.9.4にupgarade

Debian Unofficial」に1.9.4のパッケージが有ったので、インストールしようとした。

しかしDebian amd64用には、sarge(stable)しかないし、前提パッケージがApache 2.0のapache2-commonになっている。

これでは、おうちサーバはApache 2.2でありapache2-commonと競合しているapache2.2-commonでないとダメなので、自力でパッケージを作る事にした。

まずは、Unooffical Debianを使えるようにするために/etc/apt/source.listに

deb http://ftp.debian-unofficial.org/debian etch main contrib non-free restricted

deb http://ftp.debian-unofficial.org/debian sarge main contrib non-free restricted

deb-src http://ftp.debian-unofficial.org/debian etch main contrib non-free restricted

deb-src http://ftp.debian-unofficial.org/debian sarge main contrib non-free restricted

を足した。そして、自力パッケージ作りに入る

$ mkdir UnOfficalDebian

$ apt-get source libapache2-mod-security

$ cd libapache-mod-security-1.9.4/

$ vi debian/control

まずapache2.2-commonを依存関係に入れる。

Depends: mod-security-common (= ${Source-Version}), apache2-common|apache2.2-common, ${shlibs:Depends}

$ debchange -i

libapache-mod-security (1.9.4-1duo+tkyn1) testing; urgency=low

* Add dependancy apache2.2-common

$ dpkg-buildpachage -us -uc -rfakeroot

$ cd ..

$ dpkg -I libapache2-mod-security_1.9.4-1duo+tkyn1_amd64.deb

一応、依存関係確認

$ sudo dpkg -i libapache2-mod-security_1.9.4-1duo+tkyn1_amd64.deb mod-security-common_1.9.4-1duo+tkyn1_all.deb

これで、自作Debianパッケージで無事にmod-security 1.9.4にupgradeできた。

しかし、これでもまだ「SecRuleRemoveByIdなんて知らない」とエラー

mod-security 2.0.4にupgarade

さらに2.0.4に上げるべくModSecurity Downloadより最新のオリジナルソースを持ってきてDebian Package化を志した。

$ uupdate ~/modsecurity-apache_2.0.4.tar.gz

なんかmod-security.cは無くなっているのでパッチは無視

$ cd ../libapache-mod-security-2.0.4

で、ベースのソースを作り。V2.0対応にするべく

・Apache 1.x版を作らない。

・libxml2-devパッケージをインストールし前提パッケージにlibxml2を加える

・utilディレクトリなどサンプル系を1.9.4のソースからCopy

・完成共有ライブラリはmod_security2.soとリネーム

などなど変更して、$ dpkg-buildpachage -us -uc -rfakeroot してmod-security 2.0.4版を作った。

早速インストールして、動かしてみて気がついたんだけど、mod-securityは、V1.9とV2.0でルールの書き方が全然違う! 参照: ModSecurity Reference Manual V2.0

残念ながら今まで書いたルールが使えないのは悲しいので2.0.4は、おはこいり

mod-security 1.9.4でGotroot.com modsecurity(TM) rules/signaturesを運用

よく見ると、「Gotroot.com modsecurity(TM) rules/signatures」には、Complete rulesets for modsec 1.9 the rules for Apache 2.x machinesというmod-security 1.9系のルールセットも有るので素直にmod-security 1.9ベースで運用することにした。

最後に、以下のスクリプトを毎週動かして最新のルールに更新されるようにて運用を開始した。どうでしょうかね?

#!/bin/sh

LAST=.last-update

cd /usr/local/etc/modsecurity

/usr/bin/wget -nv -N http://www.gotroot.com/downloads/ftp/mod_security/apache2/apache2-gotrootrules-latest.tar.bz2

if [ $LAST -nt apache2-gotrootrules-latest.tar.bz2 ];then

exit 0

fi

/bin/tar xvfj apache2-gotrootrules-latest.tar.bz2

/usr/bin/touch $LAST

/etc/init.d/apache2 restart

libapache2-mod-securityのV1.9.4とV2.0.4のDebian amd64のApache 2.2向けDebian Binaryパッケージとか、ソースパッケージ(i386で運用する人はソースから必要)なんてのためにファイル公開した方が良いのかなぁ??

本日のツッコミ(全1件) [ツッコミを入れる]
_ わんこ (2006-11-25(Sat) 00:00)

[そう、ビンゴでした。はじめはトラックバックしたんですが、おうちサーバはダイナミックIP Addressだからか、蹴ら..]

本日のPingbacks(全0件)

Google Web検索 on-o.com内を検索