(ヽ´ω`) < Moinmoinのアタック対策(Surge Protection)について
(ヽ´ω`) < Hitマクロの動作確認でF5連打してたら英語のメッセージが出てきた…
MoinmoinではF5アタックに類する行動に対して、Surge Protectionと呼ばれる機能を用意して対策をしている。
HelpOnConfiguration/SurgeProtection - MoinMoin
(ヽ´ω`) < なんか横文字で難しそうだが
Surge Protectionの機能自体は特に複雑なものではなく、
- 特定の行動(Action)を
- 指定した秒数の間に
- 指定した指定した回数以上行うと
標準の出力ではなく、警告のメッセージを出力する。
この時、警告のメッセージに従ってWikiへのリクエストを中止すれば、しばらくたってから通常通りアクセスが可能となる。
警告に従わずに連続してリクエストを送信した場合、管理者が指定した時間の間、Wikiへのアクセスがロックされる。
(ヽ´ω`) < でも設定はお難しいんでしょ?
これまた特に難しいことはなく、wikiconfig.py
でsurge_action_limits
という変数に指定のフォーマットで値を定義する。
surge_action_limits = { # Action名 : (回数, 秒数)の形式で並べていく 'show' : (20, 60), 'edit'' : (5, 60), 'default' : (30, 120) }
上記設定では
- 表示は60秒間に20回まで
- 編集は60秒間に5回まで
- その他のアクションは120秒間で30回まで
Action名には下記ページの一覧で確認できる。
基本的にはshow
とedit
ぐらいしか指定する必要がないんじゃないかなーと思う。Actionは結構細かく定義されてるけど、default
を指定すればその他の値を全てセットできる。
システムのデフォルト値は以下のとおり。
surge_action_limits = { # allow max. <count> <action> requests per <dt> secs # action: (count, dt) 'show': (20, 60), 'raw': (20, 40), # some people use this for css 'AttachFile': (60, 60), 'diff': (30, 60), 'fullsearch': (5, 60), 'edit': (10, 120), 'rss_rc': (1, 60), 'default': (30, 60), } surge_lockout_time = 3600
(ヽ´ω`) < 最後の行のsurge_lockout_timeってなんなのよ?
Surge Protectionで制限対象となったクライアントのロックの時間はsurge_lockout_time
に秒数で指定する。
上記の通り、デフォルトでは3600秒(=1時間)となる。
(ヽ´ω`) < 何を対象に同一ユーザの仕業と判断してるの?
公式のドキュメントによると、
- ログイン済みユーザの場合はユーザ名
- 未ログインユーザの場合はIP
- 未ログインユーザの場合でも
X-Forwarded-For
ヘッダがあればそちらを参照
とのこと。
(ヽ´ω`) < おい、マクロの続きは?
ちょっと今手元に検証環境がないんですよ…