«前の日記(2008-11-22) 最新 次の日記(2008-11-24)» 編集

ぱぱネット(仮)


2008-11-23 ネット漁ったけど基本過ぎてどこにも書いてない [長年日記]

_ [開発] mod-security2

以前にも書いたけど、mod-security1と2では文法自体がかなり異なる。 詳細なドキュメントはあるのだが 正直膨大すぎて読むのが大変だ。

SPAM抑止には標準のルールセットに頼るという手もあるようだが、会員登録が必要らしく、最新のものは素ではダウンロードできなくなっている(ように見える)。

この文章は、よりピンポイントに「今荒らされている掲示板を救いたい!」という人のためのメモである。

_ YY-BOARD

例えば ともりん先生の掲示板。 一時期はバイアグラ.comだの何だので 荒れ放題 であった。 むろん掲示板をバージョンアップしたりすれば良いのだが、 他人の書いたCGIのコードを読んで穴塞ぎするのも面倒臭すぎる。 派手なSPAMは大抵海外からのものなので、良くある手法として「1バイト文字のみのタイトルを弾く」というルールが考えられる。

YY-BOARDのHTMLを見るとタイトル名の欄は変数名subで受け取る仕様。

<input type=text name=sub size=36 value="" class=f>

なので、ルールの記述は以下のようになる。正規表現で^と$は最初から最後までという意味、\\000-\\177は8進数で7bitキャラ範囲全てという意味になる(16進数なら0x00〜0x7Fということ)。

SecRule ARGS:sub "^[\\000-\\177]+$"

しかし・・・ これではうまくいかなかった。 security2のデフォルトはURLデコード前の符号化文字列を比較するようになっていた。世の中大半のmod-security1向けのページは、デコード後の比較を書いているので動かない。

mod-security2では t:urlDecode を追加しなければならないようだ。

 SecDefaultAction deny,log,status:406,phase:2,t:urlDecode

余談だがリファレンスマニュアルのTransformation functionsの項は余さず読んでおいたほうがいいかも。compressWhitespaceがデフォルトで、タブやコントロールコードも全てスペースに置換されてるとか知らなかった・・・

_ mod-security2の設定

Debian etchの場合は ここらへんからパッケージを落としておくこと。 標準のリポジトリからはインストールできなかった。

mod-security2.loadは作成されるが設定ファイルは一切作成されないので、/etc/mods-enable/mod-security2.confをvi等で作成。

<IfModule mod_security2.c>

<Directory "/home/*/public_html">
 SecRuleEngine On
 SecRequestBodyAccess On
 SecResponseBodyAccess Off
 SecUploadKeepFiles Off
 SecDebugLog /var/log/apache2/modsec_debug.log
 SecDebugLogLevel 0
 SecAuditEngine RelevantOnly
 SecAuditLogRelevantStatus ^5
 SecAuditLogParts ABIFHZ
 SecAuditLogType Serial
 SecAuditLog /var/log/apache2/modsec_audit.log
 SecRequestBodyLimit 4096000
 SecRequestBodyInMemoryLimit 4096000
 SecResponseBodyLimit 4096000
 SecDefaultAction deny,log,status:406,phase:2,t:urlDecode
 SecRule ARGS:blog_name "^[\\000-\\177]+$"
 SecRule ARGS:sub "^[\\000-\\177]+$"
 SecRule ARGS:CommentName "^[\\000-\\177]+$"
 SecRule ARGS:CommentMsg "^[\\000-\\177]+$"
</Directory>

</IfModule>

ぱぱサーバは上記のようになっています。「えっ?これだけかよ?」と思うでしょうが・・・いや突破しようと思えば簡単に突破できるんでしょうけど、そもそも日本語読めない連中を相手にするのが嫌なだけなので、これでいいのです。


2001|04|
2006|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|03|04|05|06|07|08|09|10|11|12|
2014|01|03|04|05|10|

[BANNER]
このサーバーをもう12年も維持しているかと思うとめまいがしますよ。
ツッコミ機能は、ハンドル名が完全日本語じゃないと登録できません。
また、本文にURLが含まれていても登録できません。
いずれもSPAM対策です。
[Panda Papanda]
2008年
11月
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30

[Papanda]  [Kuma]  [Tomorin]  [Iron]  [Eiza]  [Dokkin]  [Honya]  [Zyou]  [Tsuyo]  [Bike]  [KoeBBS]  [Chukei]  [portal]  [tvmatome]  [KaoPaku] 

訪問者数:(+2560143)