pukiwikiへのログイン履歴を作る†
メッセージ†
Pukiwikiを管理「しようとする」悪意を未然に発見するため、パスワードとの照合をすべてチェックする機能が欲しいと思うのですが、いまいち見つからなかったので提案します。
やることは多分いかのような感じかと思うのですがどうでしょう。
- pkwk_loginが稼動したら、時刻、IP、入力された文字列をcache/???.logに保存。
- ここで入力された文字を保存するのは、攻撃がきたときにどの種類の攻撃かを見分けるのに使いますが、本当にパスワードを打とうとして一文字だけミスってしまったようなときにも記録されて、間違ってログが漏洩したときに問題になります。(.htaccess設定ミスとかetc...)
- ログインに成功した場合は成功した旨を同様にログにします。(さすがに「入力された文字」は伏せます)
- pkwk/index.php?cmd=pluginNameでログイン画面を出し、パスワードを正しく入力するとログが整形されて表示される。
こんな感じになるのでしょうか。無さそうだったら作成してみたいのですが。
コメント†
- プラグインで実現可能な範疇の機能ではないので、ここではなくdev:BugTrack2で提案されることをお奨めします。もちろん自作のパッチを添付すればより話が早いでしょう。
ちなみに私としては攻撃を記録するより遮断する機能が欲しい所です。(そもそもPukiWikiの管理パスを奪うメリットがよく解りませんが) --
- 管理パスを奪うことについて:これを奪ってしまえば、凍結・凍結解除し放題ですよ. 管理用プラグイン(たとえば deldel.inc.php のようなもの)が入っていると、バックアップも含めて全て消されてしまう可能性すらあります. -- とおりすがり
- はい。つまり、それだけですよね。もちろん管理者は困りますが、逆に言えばWikiは攻撃者にとって「管理人を困らせる」以外に乗っ取るメリットが殆ど無いシステムなんです。(もちろん危険が無いとは言ってません) --
- 想像力の欠如ですか?pukiwiki を個人CMS的に利用している方も複数おります。その場合管理パスはかなり重要になります。通常の wiki の場合でも例えば html.inc.php が入っていれば XSS なコードを埋め込み利用者のクッキーを盗むなどもできるでしょう。そして最後に管理人が困ればそれだけで対策するに値するでしょう。ちなみにこれは、そのプラグインは欲しいね、という意味ではありません。 --
- 何度も言いますが、危険が無いとは言っていませんし、CMSだろうがWikiだろうがパスワードは十分に保護されるべきです(当たり前ですね)。なのでこんな機能もあるに越したことはないとは思います。あと、ファイルの添付については懸念するべきですね。失礼しました。*1 --
- 「攻撃を記録するより遮断する機能」って、なんか昨今のセキュリティ専門家の夢のような話を抽象化した言葉に聞こえるのは気のせいでしょうか :) というのはともかく、それでは以下の機能を追加するのはどうでしょうか。 -- フォルグロス
- 連続でX回以上パスワードの照合に失敗したら、以後pkwk_loginは無条件でFALSEを返します。
- FTPなどで連続失敗ログファイルを消去すると、上記制限は解除されます。
- それだけだと攻撃が来たとき管理人も本当に何もできなくなってしまう心配もあるので、今回提案しているプラグインに別の予備パスワードを定義して2段パスワードにし、予備パスワードを正しく入力すれば失敗ログを抹消します。
- 予備パスワードは未定義を可とし、その場合はFTPでの制限解除を待つことになります。
- 予備パスワードが未定義であっても、画面上はそれが察知されない(パスワード入力画面は常に表示される)ようにします。
- こんにちは。この話は accountability (日本語で何と言うべきか。証拠の保全と共有) の話だろうと思います。現状の機構と合わせるならば、ログインの施行があった事 も 「メールで通知する」様にすると結構効果的だろうと思います。 -- henoheno
- 単一人が管理している場合は、その履歴がそのまま「管理の履歴」となるでしょう。また複数人で管理しているWikiの場合では、他の管理者がどのような管理をしたかを知る事ができるため、互いに安心感を与える事になります。そのような状況から遡って考えると、記録(報告)するべき事項としては(パスワードを聞いたかどうかには限らず) ファイル添付、diffやbackupデータの削除、ページの凍結およびその解除、ページ名の変更といった「どのような管理作業が行われたか」「(普段通知されない)何が起こったか」を報告/警告する内容であるのが好ましいでしょう。 -- henoheno
- メール通知の機構に組み込む場合の問題点としては、従来のメール通知のしくみ(特にSubject)に自由度があまりないという点がありますが、$spam 用のメール通知でも悩んだあげくどうにか強引に回避できていますから、まあ不可能ではないでしょう。 -- henoheno
- 今現在teananさんと二人でこの2つのWikiを切り盛りしているのですが、teanan さんが対応された形跡(ページを凍結して、テスト書き込みを強制停止かつ誘導していたり、spamをbackupごと削除したり)を後から間接的に見かける事が多いので、サイト全体の状況を把握するためにこういう機構があったらいいなあ、と思う事がありますね (^^; -- henoheno
- ご意見ありがとうございます。こちらで「ログを取るfunction」を作っていたときに「別にログイン失敗のログに限らなくていいんじゃないか?」と気づきまして、現在eventlog.inc.phpの名で以下のようなことをやってます。ログを書くときについでにメールも飛ばすようにすることはできると思います。 -- フォルグロス
- function plugin_eventlog_appendLog($logObject) - 名称にプラグイン色が強いのは後でいい感じに。
- $logObject=array('cmd'=>'eventlog',…);
2007/03/07 (水) 11:54:00 | edit | success | FrontPageを編集しました。 +addLine -deleteLi... [->] | 127.0.0.1 |
2007/03/07 (水) 11:53:00 | eventlog | failed | 管理人パスワードを入力し間違えた人がいます。入力された文字「abcdef」 | 127.0.0.1 |
- パッチがある程度できたときに面白そうなものになっていたらBugTrackへ、そうでなければちょっと便利へ持っていきたいと思います。 -- フォルグロス
- 悪意の検出から転じて、成功も記録する方向になっている様ですね。発想の展開が興味深いですが、(作業量が爆発する)茨の道に入りこまないよう、お気をつけて。仕様が固まってくるまで、何回かスクラップ & ビルドするのもいいかもしれませんね -- henoheno