(ヽ´ω`) < 助けてほしいマン

わからないことを助けてほしいマンが書くブログ

(ヽ´ω`) < Moinmoinのアタック対策(Surge Protection)について

(ヽ´ω`) < Hitマクロの動作確認でF5連打してたら英語のメッセージが出てきた…

MoinmoinではF5アタックに類する行動に対して、Surge Protectionと呼ばれる機能を用意して対策をしている。

HelpOnConfiguration/SurgeProtection - MoinMoin

(ヽ´ω`) < なんか横文字で難しそうだが

Surge Protectionの機能自体は特に複雑なものではなく、

  1. 特定の行動(Action)を
  2. 指定した秒数の間に
  3. 指定した指定した回数以上行うと

標準の出力ではなく、警告のメッセージを出力する。

この時、警告のメッセージに従ってWikiへのリクエストを中止すれば、しばらくたってから通常通りアクセスが可能となる。

警告に従わずに連続してリクエストを送信した場合、管理者が指定した時間の間、Wikiへのアクセスがロックされる。

(ヽ´ω`) < でも設定はお難しいんでしょ?

これまた特に難しいことはなく、wikiconfig.pysurge_action_limitsという変数に指定のフォーマットで値を定義する。

surge_action_limits = {
    # Action名 : (回数, 秒数)の形式で並べていく
    'show' : (20, 60),
    'edit'' : (5, 60),
    'default' : (30, 120)
}

上記設定では

  • 表示は60秒間に20回まで
  • 編集は60秒間に5回まで
  • その他のアクションは120秒間で30回まで

Action名には下記ページの一覧で確認できる。

HelpOnActions - MoinMoin

基本的にはshoweditぐらいしか指定する必要がないんじゃないかなーと思う。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ヘッダがあればそちらを参照

とのこと。

(ヽ´ω`) < おい、マクロの続きは?

ちょっと今手元に検証環境がないんですよ…