**pukiwikiへのログイン履歴を作る [#a24ed8ee]
|RIGHT:70|LEFT:410|c
|~バージョン|1.4.7|
|~投稿者|[[フォルグロス]]|
|~状態|提案|
|~投稿日|&new{2007-03-05 (月) 00:28:57};|
***メッセージ [#z6ef3f9e]
Pukiwikiを管理「しようとする」悪意を未然に発見するため、パスワードとの照合をすべてチェックする機能が欲しいと思うのですが、いまいち見つからなかったので提案します。

やることは多分いかのような感じかと思うのですがどうでしょう。

-pkwk_loginが稼動したら、時刻、IP、入力された文字列をcache/???.logに保存。
--ここで入力された文字を保存するのは、攻撃がきたときにどの種類の攻撃かを見分けるのに使いますが、本当にパスワードを打とうとして一文字だけミスってしまったようなときにも記録されて、間違ってログが漏洩したときに問題になります。([[.htaccess]]設定ミスとかetc...)
--ログインに成功した場合は成功した旨を同様にログにします。(さすがに「入力された文字」は伏せます)
-pkwk/index.php?cmd=pluginNameでログイン画面を出し、パスワードを正しく入力するとログが整形されて表示される。

こんな感じになるのでしょうか。無さそうだったら作成してみたいのですが。
 
***コメント [#ecaa0c91]
- プラグインで実現可能な範疇の機能ではないので、ここではなく[[dev:BugTrack2]]で提案されることをお奨めします。もちろん自作のパッチを添付すればより話が早いでしょう。&br;ちなみに私としては攻撃を記録するより遮断する機能が欲しい所です。(そもそもPukiWikiの管理パスを奪うメリットがよく解りませんが) --  &new{2007-03-05 (月) 00:44:04};
-- 管理パスを奪うことについて:これを奪ってしまえば、凍結・凍結解除し放題ですよ. 管理用プラグイン(たとえば deldel.inc.php のようなもの)が入っていると、バックアップも含めて全て消されてしまう可能性すらあります. -- とおりすがり &new{2007-03-05 (月) 00:51:32};
-- はい。つまり、それだけですよね。もちろん管理者は困りますが、逆に言えばWikiは攻撃者にとって「管理人を困らせる」以外に乗っ取るメリットが殆ど無いシステムなんです。(もちろん危険が無いとは言ってません) --  &new{2007-03-05 (月) 01:11:22};
-- 想像力の欠如ですか?pukiwiki を個人CMS的に利用している方も複数おります。その場合管理パスはかなり重要になります。通常の wiki の場合でも例えば html.inc.php が入っていれば XSS なコードを埋め込み利用者のクッキーを盗むなどもできるでしょう。そして最後に管理人が困ればそれだけで対策するに値するでしょう。ちなみにこれは、そのプラグインは欲しいね、という意味ではありません。 --  &new{2007-03-05 (月) 02:31:28};
-- 何度も言いますが、危険が無いとは言っていませんし、CMSだろうがWikiだろうがパスワードは十分に保護されるべきです(当たり前ですね)。なのでこんな機能もあるに越したことはないとは思います。あと、ファイルの添付については懸念するべきですね。失礼しました。((そりゃこういう論点のずれ方をするよな、と後悔・・・。管理者にとっては重要でも攻撃者の視点に立てば(相対的には)さしたるインセンティブとはならないものを守るためにどれだけのコストが割かれるべきか、というのはここで話すことでもないですね。(「管理人が困ればそれだけで対策するに値する」という発想こそ開発リソースの有限性についての想像力が欠如していると思うわけですが。。まあ普通考えないか。))) --  &new{2007-03-05 (月) 05:58:08};
- 「攻撃を記録するより遮断する機能」って、なんか昨今のセキュリティ専門家の夢のような話を抽象化した言葉に聞こえるのは気のせいでしょうか :) というのはともかく、それでは以下の機能を追加するのはどうでしょうか。 -- [[フォルグロス]] &new{2007-03-05 (月) 09:42:32};
--連続でX回以上パスワードの照合に失敗したら、以後pkwk_loginは無条件でFALSEを返します。
--FTPなどで連続失敗ログファイルを消去すると、上記制限は解除されます。
--それだけだと攻撃が来たとき管理人も本当に何もできなくなってしまう心配もあるので、今回提案しているプラグインに別の予備パスワードを定義して2段パスワードにし、予備パスワードを正しく入力すれば失敗ログを抹消します。
--予備パスワードは未定義を可とし、その場合はFTPでの制限解除を待つことになります。
--予備パスワードが未定義であっても、画面上はそれが察知されない(パスワード入力画面は常に表示される)ようにします。
- こんにちは。この話は accountability (日本語で何と言うべきか。証拠の保全と共有) の話だろうと思います。現状の機構と合わせるならば、ログインの施行があった事 ''も'' 「メールで通知する」様にすると結構効果的だろうと思います。 -- [[henoheno]] &new{2007-03-05 (月) 20:35:11};
-- 単一人が管理している場合は、その履歴がそのまま「管理の履歴」となるでしょう。また複数人で管理しているWikiの場合では、他の管理者がどのような管理をしたかを知る事ができるため、互いに安心感を与える事になります。そのような状況から遡って考えると、記録(報告)するべき事項としては(パスワードを聞いたかどうかには限らず) ファイル添付、diffやbackupデータの削除、ページの凍結およびその解除、ページ名の変更といった「どのような管理作業が行われたか」「(普段通知されない)何が起こったか」を報告/警告する内容であるのが好ましいでしょう。 -- [[henoheno]] &new{2007-03-05 (月) 20:38:38};
-- メール通知の機構に組み込む場合の問題点としては、従来のメール通知のしくみ(特にSubject)に自由度があまりないという点がありますが、$spam 用のメール通知でも悩んだあげくどうにか強引に回避できていますから、まあ不可能ではないでしょう。 -- [[henoheno]] &new{2007-03-05 (月) 20:44:05};
-- 今現在[[teanan]]さんと二人でこの2つのWikiを切り盛りしているのですが、teanan さんが対応された形跡(ページを凍結して、テスト書き込みを強制停止かつ誘導していたり、spamをbackupごと削除したり)を後から間接的に見かける事が多いので、サイト全体の状況を把握するためにこういう機構があったらいいなあ、と思う事がありますね (^^;  -- [[henoheno]] &new{2007-03-05 (月) 20:55:48};
--ご意見ありがとうございます。こちらで「ログを取るfunction」を作っていたときに「別にログイン失敗のログに限らなくていいんじゃないか?」と気づきまして、現在eventlog.inc.phpの名で以下のようなことをやってます。ログを書くときについでにメールも飛ばすようにすることはできると思います。 -- [[フォルグロス]] &new{2007-03-07 (水) 13:40:51};
---function plugin_eventlog_appendLog($logObject) - 名称にプラグイン色が強いのは後でいい感じに。
---$logObject=array('cmd'=>'eventlog',…);

|2007/03/07 (水) 11:54:00|edit|BGCOLOR(#8cf):COLOR(#00f):success|[[FrontPage]]を編集しました。&br;+addLine&br;-deleteLi... [->]|127.0.0.1|
|2007/03/07 (水) 11:53:00|eventlog|BGCOLOR(#fc8):COLOR(#f00):failed|管理人パスワードを入力し間違えた人がいます。入力された文字「abcdef」|127.0.0.1|

--パッチがある程度できたときに面白そうなものになっていたらBugTrackへ、そうでなければちょっと便利へ持っていきたいと思います。 -- [[フォルグロス]] &new{2007-03-07 (水) 13:40:51};
-- 悪意の検出から転じて、成功も記録する方向になっている様ですね。発想の展開が興味深いですが、(作業量が爆発する)茨の道に入りこまないよう、お気をつけて。仕様が固まってくるまで、何回かスクラップ & ビルドするのもいいかもしれませんね -- [[henoheno]] &new{2007-03-08 (木) 00:45:40};
- 管理者としてログインする行為自体を防ぐ機構は、PKWK_READONLYによって既に実現されています。ある意味の遮断もしますね。詳しくは [[dev:BugTrack/744]] へどうぞ。 -- [[henoheno]] &new{2007-03-05 (月) 20:46:29};
-- すいません、この件でPKWK_READONLYを使う方法が思いつかなかったんですが、「管理人パスワードをX回間違えると、PKWK_READONLYが定義される」という方向性でしょうか?管理人パスワードをわざとX回間違えて、管理人どころか全部が編集禁止になってしまいそうな気がします。(それはそれで必殺技っぽくてOK?) -- [[フォルグロス]] &new{2007-03-07 (水) 13:40:51};
-- PKWK_READONLY の件は「攻撃を遮断する機能」に関する話題について、それに属するコード(のヒント)があちこちに既存であるという指摘のつもりでした。現状のままでもログインの試行(brute-force attack)やそれ以上の行為も強制的に止めることができるでしょう。「"パスワードをX回間違えた" ということを正直に申告するユーザー」はいませんが、例えばログインに失敗したユーザーのIPアドレスと、一定の間に失敗した回数とを記録しておいて、基準を超えたホストを遮断するような使い方なら実現できるでしょう。 ※IPだけをベースにした対処だけでは、複数のIPを使い分ける相手には無効ですから、この工夫だけでは完全ではありません ※本物の管理者はある意味何でもできるので問題ないでしょう -- [[henoheno]] &new{2007-03-08 (木) 00:38:32};
- パスワードや手段を多段化した案がありますが、そこまで手間をかけていいなら、challenge and response 方式を実装すると良いかと思います。「"その時サーバーが示した文字列(=challenge)+正しいパスワード"のmd5の結果」(=response)をパスワードの代わりに入力するやり方です。[[dev:BugTrack2/200]]のコメントにもこの方面の話題があります。 -- [[henoheno]] &new{2007-03-05 (月) 21:07:22};
  例
  サーバーがその時提示した文字列: CHALLENGE
  本来のパスワード: password
  正しいresponse: cab2ca0dd94e545646adb707f7910dd1 ("CHALLENGEpassword"のMD5値)
- 試作品をdev:BugTrack2に置いてきました。こんな方向性でどうでしょうか。 -- [[フォルグロス]] &new{2007-03-10 (土) 12:03:54};
--[[dev:BugTrack2/216]] - Pukiwikiを遠隔ロックする機能(henohenoさん、すいません、ご助言をほぼ意図的に勘違い方向へ進めました)
--[[dev:BugTrack2/217]] - pukiwikiの動作ログをとる
-「X回間違えたらロックされる」機能はまだ作ってません。私としてはIPやホストを遮断することではなく、windowsやunixのログインのように、「何度か間違えたらユーザ名がロックされる」ような機構を考えてました。ただ、そうなると管理者アカウントが(ユーザ名がないから)どんどんロックされてしまうので、ユーザ名を取り付けるところからスタートしないといけないのが困りどころ。 -- [[フォルグロス]] &new{2007-03-10 (土) 12:03:54};
--現状のパスワード入力欄に「root/password」のように、ユーザ名とパスワードを一緒に入力して、pkwk_login内でセパレータの前半だけかっさらうという方法でもいいかも知れません。もちろん、前半部分が合致しない場合は失敗カウントはされないように。  -- [[フォルグロス]] &new{2007-03-10 (土) 12:03:54};
--ユーザ名欄を取り付けるくらいだったら、勢いでchallenge and responseを導入するのもいいかも知れません。すいません、これも、当初想定していた改造範囲ではなかったのでまだ作ってません。 -- [[フォルグロス]] &new{2007-03-10 (土) 12:03:54};
- YuvzMdKaSHP -- [[bggzlqhzk]] &new{2008-12-07 (日) 11:05:33};

#comment

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.3+ © 2001-2020 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u12. HTML convert time: 0.304 sec.

OSDN