Web監視(シナリオ)の設定方法について
お世話になります。
Web監視(シナリオ)の設定について識者の方のお知恵を拝借したく投稿させて頂きます。
昨今ログインフォームなどからユーザーIDパスワードセッションIDなどを引き渡して正常にログインできるかといった
要求仕様を受ける事が増えてきているのですが、開発社と運用社が違うためにウェブページの設計を知らないまま
ウェブサイトを見せられてこのサイトのログイン監視できるか?といった希望を受ける事が多々あります。
止むを得ずソースを覗いて対応するのですが、
(質問1)
formのinputタグのname属性=値&inputタグのname属性=値&...といった形で連結した値をシナリオ設定のPOSTに書く際に
hidden属性のフォーム(valueがプリセットされているもの)も記述する必要はあるのでしょうか?
(質問2)
name属性が指定されていないinputに値をPOSTしたい場合はどのようにしていしたらよいのでしょう?
例えば<input class="login_button" type="submit" value="ログイン"> というタグのsubmitボタンを押すというのはどのようにパラメータを記述したらよいでしょうか?
(質問3)
セッションID(クッキー)を引き渡す必要がある場合にZabbixWebUIなどの様に生成されたHTMLから(ソース表示で見える)
セッションIDが取得できるウェブページなら良いのですが、javascript側で生成された(ソース表示では見えない)セッションIDを引き渡す必要がある場合
どのようにそのパラメータを特定すればよいのでしょうか?
また、何か実際にブラウザからログイン動作を行った際にPOSTしたパラメータをトレースする様なツールがあるのでしょうか?
検索で調べても設定例が少なくZabbixオンラインマニュアルにあるZabbixフロントエンド監視の設定例だけでは、
上記の疑問が解決できない為、ご回答頂けましたら幸いです。
何卒よろしくお願い致します。
【Zabbix Server】
OS:Cent7.0
Zabbix:Zabbix2.2.11
DB:mariadb5.5
シマダ - 投稿数: 8
すごくアナログな方法で良ければ以下の方法でログイン後の監視が出来ると思います。
ブラウザのF12開発者ツールでPOSTしているデータを確認することが出来ます。
IEでの例
1.ログインページで開発者ツールの「ネットワーク」タブ「緑の実行ボタン」をクリックしておきます。
2.ログイン画面側でID、パスワードを入力してログインボタンを押下
3.開発者ツール側でリストが表示されると思います。上の方にメソッドPOSTの行が出ると思います。
4.その行の詳細を表示 「要求本文」にPOSTしている生の文字列が出てくるとはずです。
5.Web監視のstep→POSTにその文字列を入れてリダイレクトをたどるにチェックを付ければログインの監視ができます。
条件として特定のユーザーで固定しても良ければこれでいいと思います。
変動する値がある場合は、regex:で変動する値を変数に入れてできるそうです。
hajimeさんが実際に監視したいログイン画面がどのようなものかわからないので参考までにどうぞ
hajime - 投稿数: 57
シマダさま
回答頂きありがとうございます。
やはり難度が高いのかあまり回答が得られませんね…。
開発者ツールを使ってみたのですが、やはりすべてのパラメータがトレースされる訳ではない感じでしょうか...
「要求文字列」にあるパラメータをコピーし、ログインページのURLの後ろに?で結んでくっつけてみたのですが、ログイン遷移出来ないので。
それともこの方法では実際にパラメータを送ることは出来ないのでしょうか?
loginページそのものと(仮にindex.phpとして)、formのaction=がloginフォーム用のphp(login.php)だったとしたら
開発者ツールで見えるのはlogin.phpへのPOSTとなってしまいますが、index.phpへのPOSTなどは見れない(何もない?)のでしょうか。
質問の意図がわかりづらかったらすみません…
シマダ - 投稿数: 8
自分がzabbix3系を使っているため2.2のマニュアルを見て気づきましたがリダイレクトをたどるという項目がないんですね。
(https://www.zabbix.com/documentation/2.2/jp/manual/web_monitoring)
2.2を使っていた時期もあるのですが現在手元に環境がないため、ちょっとこれ以上の助言は出来なさそうです。
できるのであればバージョンアップした方がいろいろできることが増えると思いますのでおすすめします。
自分は3.4のリリースを心待ちにしています。
TNK - 投稿数: 4671
色々とJavaScriptなども使用していると、単純にそのHTMLだけでは
なくて、読み込んでいるJavaScriptも合わせて確認しないと、どの
ようなリクエストを投げるようにすればいいかを特定することが困
難です。
私は細かく解析するのが面倒だと思ったら、やり取りされているネ
ットワーク上のパケットを解析してしまう時もあります。
質問1に関しては、hidden属性のものも記述する必要があるでしょう。
質問2に関しては、恐らくJavaScriptなどでclassが定義されている
と思いますので、その内容を確認してみてください。
質問3に関しては、クッキーを使用していれば対応できたと思いま
すが、クッキーを使用するのではなく、HTML内でセッションIDを管
理しているような場合は、応答から正規表現を使用して値を切り出
し、次のリクエスト内にその値を埋め込むような設定が必要になる
と思います。
hajime - 投稿数: 57
シマダさま
TNKさま
ご回答ありがとうございます。
「リダイレクトをたどる」に"相当"する機能も2.2では行えないのでしょうか。
やりたいページで教えていただいたIEでのトレースを見ているどうも、
ログインページで正しいログインPOSTするとログイン後ページのクッキーつきのURL(ログイン後ページURL?hashed_sid=16進数N桁)が応答パラメータとして返され、
302 Found でリダイレクトされているようでした。このリダイレクトを辿れないとなると実現不可能という事になってしまうのか…?
クッキーを切り出す方法はなんとなくZabbixManualの方法を参考にして
変数欄に {hashed_sid}=regex:hashed_sid=([0-9A-Z]{39}) と記載しているのですが、
Last error message of Scenarioのヒストリには
error in step variables "{hashed_sid}=regex:hashed_sid=([0-9A-Z]{39})": cannot extract the value of "{hashed_sid}" from response
と格納されているので、「リダイレクト後のページから取りたい」という意図の通りには挙動していないのかもしれません。
だからこそ3.0からこの機能が追加されているのかもしれませんが…。
バックポートとかされないものか…。
TNK - 投稿数: 4671
2.2で自動的にリダイレクトを辿らせるのは無理です。
3.0以降の機能を使用して、ステップの設定内で「リダイレクトを
たどる」にチェックを入れて対応することが必要だと思います。
無理矢理リダイレクト先へアクセスするステップを入れることで対
応できなくはないかもしれませんが、実現できるかどうかはわかり
ません。
2.2でこの機能を実現するとなると、データベースの変更も必要と
なるはずなので、公式にバックポートはされないと思います。