[Quora] AWSで改ざん検知を出来るだけ簡単にしたい

Quora回答シリーズです。

質問

AWS の cloudwatch か、lambda 使って、トップページの改竄検知(簡易でいいです)するのはどんな方法が簡単でしょうか?

https://qr.ae/TlSeqf

誰か作って配ってそうな気がするんですけどねー。

回答

Webサイトのトップページですよね?完全に静的なファイルであれば(アクセスする度に情報が変わらない)、単純にdiffをするだけで実現できそうです。

対象ページのHTMLをlambdaなど何らかの方法で取得しS3などに保存しておきます。あとは最新の物と、前回取得した物を比較(diffを実行)し、差分があれば何らかの方法で通知します。同じか違うかだけが分かれば良いのであれば、md5などのハッシュ値を作成しDynamoDBなどに保存して比較するような形でも良いかもしれません。

注意点

この方法だとトップページが依存している外部のファイルが汚染されたことを感知するにはもう一工夫必要です。例えば外部ファイルのJSや画像が書き換えられたまで知りたい場合は、HTMLを解析し依存ファイルをすべて取得し比較を行います。(と言っても大したコード量にはなりません)

また何かしら意図した更新があった際にも必ずアラートが飛ぶことになりますが、こちらは改ざんチェックシステムの動作確認にもなりますので、あえて通知しないような仕組みを入れる必要はないかなとも思います。