![見出し画像](https://assets.st-note.com/production/uploads/images/100855892/rectangle_large_type_2_a04e088bc9fa9061671034f2940d9db9.jpeg?width=1200)
【Power Automateで簡単】ホームページ改ざん検知システムを構築
今回はPower Automateで簡単ホームページ改ざん検知システムを構築、というテーマで、10分足らずでサクッとホームページ改ざん検知システムを構築する方法を解説します。本動画を通じて、Power Automateで出来ること、
Power Automateの使い方、この2点の理解が深まるように解説していきたいと思います。それでは早速始めましょう。
どうやってホームページの改ざんを検知する?
それではまずはじめに、どうやってホームページの改ざんを検知するのか、その方法について解説します。
ホームページ改ざんの目的は様々ですが、古いタイプの改ざんは見た目でその変化に気付く、改ざんそのものを目的とする愉快犯が多くを占めます。
尚、現在のホームページの改ざんはあくまで手段であり、情報や金銭の詐取、ウイルスの拡散などが主な目的となっています。
改ざん検知の仕組みにはいくつかの方法がありますが、今回は古いタイプへの改ざん対策の内、Power Automateで実現可能な仕組みについて解説します。
<監視対象>
愉快犯は改ざんしたことを知らしめることが目的となります。よって、改ざん対象は最も目に触れられるトップページ、具体的にはホームページトップのindex.htmlを監視することになります。
<監視方法>
最新のindex.htmlのメタ情報を取得し、
・ファイルサイズ
・更新日時
が、最後にアップロードしたファイルサイズ、更新日時と一致しているかを比較します。
ホームページ改ざん検知システムの仕様
以上を踏まえ、Power Automateで構築するホームページ改ざん検知システムの仕様は次の通りです。
![](https://assets.st-note.com/img/1679379423154-r84QPNOZLQ.png?width=1200)
毎分、Webサーバーに接続し、ホームページトップのindex.htmlのメタ情報、具体的にはファイルサイズ、更新日時を取得します。これを登録済みのファイルサイズ、更新日時と比較し、不一致の場合はTeamsチャット通知を行います。
それでは実際のPower Automateで本仕様をもとにホームページ改ざん検知システム構築します。
10分でサクッと構築、ハンズオン!
Power Automateを起動します。今回は毎分タスクを起動することから、スケジュール済みクラウドフローを選択します。
![](https://assets.st-note.com/img/1679404785159-CEY783ZtoU.png?width=1200)
任意のフロー名を記入し、繰り返し間隔が1分であることを確認し、作成ボタンをクリックします。
![](https://assets.st-note.com/img/1679404850353-0ykRp0z0Xy.png?width=1200)
まず初めに、現在サーバーに配置されているindex.htmlのメタ情報、具体的には「更新日時」と「ファイルサイズ」を定義します。
「変数を初期化する」アクションを選択し、更新日時の種類は文字列、ファイルサイズの種類は整数をそれぞれ選択します。
![](https://assets.st-note.com/img/1679380351534-6BGRuNw3m3.png?width=1200)
WinSCPなどのFTPソフトを利用してWebサーバーに接続、index.htmlのファイルサイズと更新日時を確認します。
![](https://assets.st-note.com/img/1679382204064-jMdyHvYcAQ.png?width=1200)
![](https://assets.st-note.com/img/1679382281237-VwlGT1VslI.png?width=1200)
確認した値をそれぞれ入力し、一旦保存しましょう。
![](https://assets.st-note.com/img/1679382528360-I0m64AJmHk.png?width=1200)
それでは次に、Webサーバーに接続するステップを追加します。「FTP」と入力して検索、「ファイル メタデータの取得」というアクションがあるので選択します。
![](https://assets.st-note.com/img/1679383228216-sAAK7kENBD.png?width=1200)
接続名は任意、ここでは接続サーバー名を記入しています。その他、Webサーバー接続に必要な設定を入力します。
Host server address:Webサーバーのアドレス
User name :Webサーバーに接続するユーザー名
Password :Webサーバーに接続するパスワード
Port number :22
Disable SSH host key validation:✓(チェック)
![](https://assets.st-note.com/img/1679383783550-q0kvyO0Vhx.png?width=1200)
作成ボタンをクリックします。
![](https://assets.st-note.com/img/1679384394851-P1QvB0cVpX.png?width=1200)
Webサーバーと接続することが出来ました。フォルダーアイコンをクリックして、DocumentRoot直下のindex.htmlを選択します。
![](https://assets.st-note.com/img/1679384829538-BNrcNabgoZ.png?width=1200)
FTP接続時に接続元IPアドレスの制限をかけている場合は、Power Automateが使用するIPアドレス範囲を接続元IPアドレスの許可範囲としてあらかじめ設定しておいてください。Power Automateが使用するIPアドレスはMicrosoft Learnに記載があります。
次に、前のステップで取得したindex.htmlの更新日時の形式を、「変数を初期化する(更新日時)」で指定した文字列形式に変換します。
新しいステップを追加し、「日時」で検索します。
![](https://assets.st-note.com/img/1679385532925-PZJCnTu2lR.png?width=1200)
「タイムゾーンの変換」アクションを選択します。
![](https://assets.st-note.com/img/1679385632527-3CyxqvU2qc.png?width=1200)
基準時間は最終更新日時を選択したいのでLastModifiedを設定します。その他項目は下記の通り設定します。
書式設定文字列 :yyyyMMddHHmmss
変換元のタイムゾーン:(UTC) 協定世界時
変換先のタイムゾーン:(UTC+09:00) 大阪、札幌、東京
書式設定文字列のMMは月を、mmは分を表します。HHが大文字なのは24時間表記の「時間」を意味します。
さあ、これで必要な情報はすべて揃いました。Teamsチャット通知を行う条件を設定します。コントロールから「条件」アクションを選択し、新しいステップを追加します。
![](https://assets.st-note.com/img/1679386156469-BoiLsh1ORS.png?width=1200)
まずは更新日時。(現在サーバーに配置されているべきindex.htmlの)更新日時は、サーバーから取得した「変換後の時間」と一致している必要があります。
さらにファイルサイズ。(現在サーバーに配置されているべきindex.htmlの)ファイルサイズは、サーバーから取得した「Size」と一致している必要があります。
以上はAnd条件で判定します。
![](https://assets.st-note.com/img/1679402087513-e8bHUnOzt3.png?width=1200)
最後にTeamsチャット通知のアクションを追加します。
![](https://assets.st-note.com/img/1679402654266-t0HtoqnRCA.png?width=1200)
更新日時が一致し、さらにファイルサイズも一致した場合は何も行いません。いずれかが不一致となった場合はTeamsチャット通知を行います。
いいえの場合にアクションを追加します。「Teams」で検索し、「チャットまたはチャネルでメッセージを投稿する」アクションを選択します。
![](https://assets.st-note.com/img/1679402855979-FjZ2IOnzxQ.png?width=1200)
投稿者はフローボット、投稿先はChat with Flow bot、Recipientにメッセージ通知先のメールアドレスを設定します。また、Message欄にはホームページが改ざんされた可能性がある旨のメッセージを記入します。
![](https://assets.st-note.com/img/1679403121625-yllBHRxbK3.png?width=1200)
以上でフローは完成です。
動作を確認してみよう
フローを実行して10分以上が経過しました。実行履歴を確認します。詳細をクリックします。
![](https://assets.st-note.com/img/1679405051618-UZ9a9JX30C.png?width=1200)
1分毎に処理が起動し、また、すべてのステータスが成功であることが確認できます。さらに詳細に処理の実行結果を確認してみましょう。
![](https://assets.st-note.com/img/1679415655814-OG3Chp7aC1.png?width=1200)
ファイルメタデータの取得では、更新日時とファイルサイズが取得されています。
![](https://assets.st-note.com/img/1679415883363-BXdZOSWbqb.png?width=1200)
![](https://assets.st-note.com/img/1679416168891-7Gwg037Ga3.png?width=1200)
また、条件分岐はtrueが返却されており、はいの場合のルートに進んだことがわかります。
![](https://assets.st-note.com/img/1679416255998-viMCzc2gRU.png?width=1200)
それでは改ざんしたindex.htmlをアップロードしてみます。
![](https://assets.st-note.com/img/1679416397272-ESBaIisuQt.png?width=1200)
更新日時が更新されました。ほどなくして画面右下のタスクトレイ近辺にチャット通知が表示されます。
![](https://assets.st-note.com/img/1679416531631-ogzDhM7Rmc.png?width=1200)
放っておくと、このように毎分改ざん通知が配信されます。
![](https://assets.st-note.com/img/1679416569444-HLhRrPFKQR.png?width=1200)
10分でサクッと、Power Automateでホームぺージ改ざん検知システムを構築することが出来ました。
本記事の解説は以上です。また、本記事はYouTubeでも解説しています。合わせてご覧いただけるとわかりやすいかと思います。それではまた別の記事でお会いしましょう!
この記事が気に入ったらサポートをしてみませんか?