ヤマムギ

growing hard days.

*

CloudWatch インテリジェントオペレーションでこのブログのログを調査してみました

   

CloudWatch インテリジェントオペレーションを設定しました。

目次

設定

マネジメントコンソールでCloudWatchにアクセスして、[AIオペレーション]を展開して、概要、調査、設定どのメニューにも[このアカウント用に設定]ボタンがあったのでクリックしました。

調査データの保持期限をデフォルトで最大の90日のままにしました。
画面下部のIAMロールは新規作成しました。

ログ調査

CloudWatch Logs Insightで、このブログのEC2インスタンスから送信している、NGINXとPHPのログを選択して適当なクエリを実行しました。
実行結果から[調査]-[新しい調査を開始]を選択しました。

調査のタイトルをBlog WordPress server errorにして、日付時間を適当に設定して、[調査を開始]をクリックしました。

調査が完了して、調査結果のフィードと提案が示されました。

フィード

「ログにはWordPressブログへのHTTPトラフィックが記録されており、ほとんどのリクエストはAmazon CloudFront経由で行われています。アクティビティの大部分は、スクリプトやスタイルの読み込み、post-new.phpやedit.phpなどの管理ページへのアクセスなど、WordPress管理パネルでの通常の操作です。複数のNginxエラーログには、「/oldsite」、「/New」、「/OLD」、「/wp-old」などの存在しないディレクトリへのリクエストで404エラーが発生しており、スキャンまたはプローブアクティビティが発生している可能性が示唆されています。また、PHPスクリプトの不足に関連するFastCGIエラーも確認されており、具体的にはサーバー上に存在しない「hello_dolly_v2.php」などのファイルへのアクセス試行が見られます。WordPress管理アクティビティはすべて、CloudFront経由で同じIPアドレス(115.125.248.50)から発信されているように見えますが、スキャン試行はさまざまなソースから行われています。」

観察結果の提案

「ログには、ブログサービスのnginxエラーログに複数の中優先度の異常が記録されています。エラーは主に2つのカテゴリに分類されます。1つは「robots.txt」や「ioxi002.PhP7」といった存在しないファイルをnginxが開こうとしたときに発生する「ファイルが見つからない」エラー、もう1つはサーバー上に存在しないPHPファイルを処理しようとしたときに発生する「プライマリスクリプトが不明です」というFastCGIエラーです。これらのリクエストは2つのクライアントIPアドレス(10.0.42.151と10.0.43.140)からホスト「8bangai.rocks」に向けられています。リクエストされたファイルには、robots.txtなどの一般的なWebアプリケーションファイルに加え、wp_filemanager.phpやadminer.phpといったコンテンツ管理システムや管理ツールに関連すると思われるPHPファイルも含まれています。」

「WordPressブログのPHP-FPMエラーログに、優先度低の異常が2件記録されています。どちらの異常も、同じファイル(/usr/share/nginx/yamamanx/wp-content/themes/stinger5ver20140902/404.php)の12行目で発生したPHP警告です。最初の警告は、コードがnull値の「cat_ID」プロパティを読み取ろうとした際に発生しました。2つ目の警告は、インデックス0の未定義配列キーにアクセスしようとした際に発生しました。これらの警告は、2025年7月31日23時53分(UTC)から2025年8月1日0時22分(UTC)までの間に複数回発生しました。」

少しすると仮説とアクションが提案されました。

仮説

「根本原因は、blog-role サービス上の WordPress インストールを対象とした自動脆弱性スキャンです。複数の IP アドレスからのこのスキャン活動は、存在しない管理ファイル (wp_filemanager.php や adminer.php など) や潜在的なバックアップディレクトリ (/oldsite や /OLD など) をリクエストすることで、一般的なセキュリティ上の弱点を探っています。これらのスキャン試行がサーバーに到達すると、WordPress 404 エラーハンドラー (404.php) が起動します。このハンドラーの 12 行目にコーディングエラーがあり、これらのリクエストの処理時に PHP 警告が生成されます。この警告は、スキャンによって引き起こされた 404 エラーを処理する際に、コードが null オブジェクトや未定義の配列インデックスのプロパティにアクセスしようとしたために発生します。スキャン自体は直接的なサービス中断を引き起こしていませんが、多数のエラーログエントリを生成し、潜在的なセキュリティ上の懸念事項を明らかにしています。これは、スキャンが WordPress インストール内の悪用可能な脆弱性を体系的にテストしているように見えるためです。」

提案されたアクション

「WordPressテーマ(stinger5ver20140902)の404.phpファイルを確認し、cat_IDプロパティと配列インデックスにアクセスする前に適切なnullチェックを追加することで、PHP警告を修正してください。
Webアプリケーションファイアウォール(WAF)ルールを実装または更新し、疑わしいスキャンパターンや、wp_filemanager.phpやadminer.phpなどの存在しない管理ファイルへのリクエストをブロックしてください。
適切なrobots.txtファイルを設定して、不要な404エラーを削減し、適切なクローラー指示を提供してください。
スキャンアクティビティによるサーバーへの影響を軽減するため、404/エラーレスポンスを返すリクエストに対してIPベースのレート制限を実装することを検討してください。」

直接的な問題はなさそうですが、余計なログを減らすために、存在しないファイルへのリクエストをブロックするWAFルールの設定を検討します。


最後までお読みいただきましてありがとうございました!

「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

「AWSではじめるLinux入門ガイド」という本を書きました。

 - AWS , ,

ad

ad

  関連記事

Elastic BeanstalkでflaskアプリケーションデプロイのチュートリアルをCloud9で

Elastic Beanstalk への flask アプリケーションのデプロイ …

新しいVPCウィザード(2022年)がすんごく便利になってました

VPCウィザードがすんごく便利になってました。 ウィザードの左ペインで設定を選択 …

静的と動的って何ですか?と営業さんに聞かれたので端的に説明してみました

AWS認定クラウドプラクティショナーの勉強をしている営業さんに、「S3で静的オブ …

AWSアカウント内特定リージョン内のDynamoDBテーブルを全削除するLambda(Python)

やりたいこと タイトル通りですが、特定アカウントの特定リージョン内のDynamo …

cfn-signalの認証とネットワーク

AWS CloudFormationヘルパースクリプトのcfn-signalがC …

AWS認定ソリューションアーキテクトアソシエイトのサンプル問題

AWS認定ソリューションアーキテクトアソシエイトのサンプル問題の解説を会社のブロ …

Amazon Becrock Nova Pro, Liteを校正目的で比較モードを試しました

書籍執筆の誤字脱字チェックと校正をしてもらうためにNovaを検討しています。 N …

別アカウントのVPCからAWS PrivateLinkを使う

VPC エンドポイントサービス (AWS PrivateLink)を参考にしまし …

Amazon Linux 2023、T4Gインスタンス、PHP8にWordPressを移行しました

ブログをAmazon Linux 2からAmazon Linux 2023に移行 …

Route 53で不要なドメインを削除

勢いで作ったけど結局使うのをやめたドメインがあります。 要らないので削除しました …