サイト構築 スクリプトのお勉強 セキュリティ

Nginx AccessLog AI 分析レポート (2026-08-12)

投稿日:

概要

Nginxアクセスログの直近数百行を分析しました。この期間のログからは、多数の検索クローラーや一般ユーザーによる正常なアクセスに加え、WordPressサイトを標的とした自動化された脆弱性スキャンが複数確認されました。サーバーはこれらのスキャンに対して適切に応答し、直接的な侵入やサービス停止には至っていません。


1. 【一般・正常アクセスの分析】

アクセス傾向のサマリー

このサーバーはブログまたは情報サイトをホストしており、多岐にわたる記事が公開されています。特に技術系の記事(Python、FastAPIなど)と、医療・健康系の記事(GLP-1、DPP-4阻害薬、ワクチン接種など)にアクセスが集中している傾向が見られます。

ユーザーの興味関心が高いURL

  • 技術系記事:

    • /2019/06/16/%e9%a1%94%e7%94%bb%e5%83%8F%e3%81%AE%e3%83%A2%E3%82%B6%E3%82%A4%E3%82%AF%E6%96%B9%E6%B3%95python-opencv-face_recognition/ (顔画像のモザイク方法 Python OpenCV face_recognition)
    • /2022/12/18/%E5%B0%8F%E3%83%8D%E3%82%BF-python-%E3%81%AEdataclass-%E3%81%A7none-or-%E3%82%92%E4%BD%BF%E3%82%8F%E3%81%AA%E3%81%84json%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E5%AE%9A%E7%BE%A9%E3%81%99%E3%82%8B/ (PythonのdataclassでNone orを使わないJSONデータ定義)
    • /2019/10/12/python%E3%81%AEmock-patch%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B/ (Pythonのmock.patch使用例)
    • /2020/11/15/fastapi-sqlalchemy-%E3%81%A7-crud%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E4%BD%9C%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B/ (FastAPI SQLAlchemyでのCRUDアプリケーション構築)
    • /2025/03/08/certbotsnap%E7%89%88%E3%81%AE%E8%B5%B7%E5%8B%95%E3%81%8C%E5%A4%B1%E6%95%97%E3%81%97%E3%81%9F%E4%BB%B6/ (Certbot Snap版の起動失敗事例)
  • 医療・健康系記事:

    • /2021/11/10/%E3%83%A1%E3%83%87%E3%82%A3%E3%82%AB%E3%83%AB%E3%83%80%E3%82%A4%E3%82%A8%E3%83%83%E3%83%88dpp-4%E9%98%BB%E5%AE%B3%E8%96%AC%E7%B7%A8%E3%83%86%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%95%E3%82%A1%E3%82%A4/ (メディカルダイエットDPP-4阻害薬編)
    • /2023/01/16/%EF%BC%95%E5%9B%9E%E7%9B%AE%E3%81%AE%E3%83%AF%E3%82%AF%E3%83%81%E3%83%B3%E6%8E%A5%E7%A8%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%82%B6%E3%83%BC/ (5回目のワクチン接種)

検索クローラー(Bot)の活動

Googlebot、bingbot、Bytespider(ByteDance)、MJ12bot、DuckDuckBot、Amazonbot、ClaudeBot(Anthropic AI)、AhrefsBot、Baiduspiderなど、非常に多種多様な検索クローラーが活発に活動しています。これらは主に記事コンテンツ、robots.txtads.txt、およびサイトマップ(/wp-sitemap*.xml)を巡回しており、サイトのSEO観点からは良好な状態にあると言えます。
WordPressのJetpack Site Uptime Monitor (jetmon) も定期的にサイトの稼働状況を確認しており、これは正常な監視活動です。


2. 【セキュリティ・脅威アクセスの分析】

以下のIPアドレスから、明らかな脆弱性スキャンや攻撃と思われる不審なアクセスが確認されました。

不審なIPアドレスと活動内容

  1. IPアドレス: 74.248.24.61

    • 活動内容: 短時間(約50秒間)に約100回ものリクエストを連続して送信しています。User-Agentはすべて空欄です。
      • WordPressのプラグイン関連パス(/wp-content/plugins/hellopress/wp_filemanager.php)や、一般的なWebShellファイル名(例:/x.php, /k.php, /w.php, /admin.php, /error_log.php, /system_log.php など)を推測して大量にアクセスしています。
      • WordPressの管理系ディレクトリ(/wp-admin/, /wp-includes/, /wp-content/uploads/)へのディレクトリリスティング試行(多くは403 Forbiddenでブロックされている)。
      • 一部、/wp-content/index.php/wp-load.php といったWordPressの既存ファイルへのアクセスが200 OKを返していますが、これはファイルが存在するかどうかの確認(偵察活動)と考えられます。
    • 危険度:
    • 見解: これは典型的な、WordPressサイトを標的とした自動化された広範な脆弱性スキャンです。WebShellのアップロード経路や既知の脆弱性を持つプラグイン、管理画面への不正アクセスを試みていると判断できます。現時点では多くのリクエストが404 Not Foundまたは403 Forbiddenでブロックされており、直接的な侵入は成功していませんが、継続的な監視と対策が必要です。
  2. IPアドレス: 51.89.15.48

    • 活動内容:
      • /wp-content/plugins/cidaas-pro-master/composer.json へのアクセス (404 Not Found)。特定のWordPressプラグインの脆弱性や設定ファイルの情報漏洩を狙ったスキャンです。
      • 不明なパス /sh67267500 へのアクセス (404 Not Found)。
    • 危険度:
    • 見解: 74.248.24.61ほど大規模ではないものの、特定のWordPressプラグインを狙った標的型スキャンの兆候が見られます。
  3. IPアドレス: 51.75.116.205

    • 活動内容: MJ12botとして複数の正常な記事を巡回している中で、以下の不審なリクエストが確認されました。
      • GET /2021/07/20/glp-1-%E3%83%A1%E3%83%87%E3%82%A3%E3%82%AB%E3%83%AB%E3%83%80%E3%82%A4%E3%82%A8%E3%83%83%E3%83%88-121%E6%97%A5%E7%9B%AE/%00http HTTP/1.1 (400 Bad Request)。URLにNULLバイト (%00) が含まれており、これはNULLバイトインジェクションのような攻撃を試みているか、クローラーのバグによる不正なリクエストの可能性があります。この特定のリクエストではUser-Agentが空欄です。
    • 危険度:
    • 見解: NULLバイトを含むURLは、アプリケーションの処理によっては脆弱性を引き起こす可能性があります。クローラーのバグである可能性も否定できませんが、悪意のある試行として捉えるべきです。
  4. IPアドレス: 182.11.130.252

    • 活動内容: /plugins/editors/jce/jce.xml へのアクセス (404 Not Found)。これはJoomla! CMSの有名な脆弱性(JCEエディタ)を狙ったスキャンです。
    • 危険度:
    • 見解: このサイトはWordPressであるため、直接的な脅威ではありません。一般的なWebスキャンツールが、特定のCMSに限定せず広範なチェックを行っているものと思われます。
  5. IPアドレス: 47.250.151.109

    • 活動内容: "\x16\x03\x01\x00\xEE..." というHTTPプロトコルとして無効なリクエスト (400 Bad Request)。
    • 危険度:
    • 見解: HTTPSポートへのHTTPリクエスト、SSLハンドシェイクの問題、または異常なデータ送信の可能性があります。直接的な攻撃というよりは、スキャンツールや誤った設定のクライアントによるものと考えられます。
  6. IPアドレス: 43.165.4.2

    • 活動内容: GET / HTTP/1.1 で 400 Bad Request を返しています。
    • 危険度:
    • 見解: リクエスト自体が不正なものですが、単一の発生であり、攻撃意図は不明です。

3. 【総合評価・ネクストアクション】

現在のサーバーの健康状態

現在のところ、サーバーは正常に稼働しており、Webサイトも多くのクローラーやユーザーに利用されています。Nginxは、今回確認された脆弱性スキャンに対して、多くを404 Not Foundまたは403 Forbiddenで適切に処理しており、直ちにサービスが危険に晒されている状況ではありません。しかし、検出されたスキャン活動は継続的であり、潜在的なリスクとして認識すべきです。特に74.248.24.61からの攻撃的なスキャンは放置すべきではありません。

管理者へのアドバイス

  1. 悪意のあるIPアドレスの即時ブロック:

    • 74.248.24.61 および 51.89.15.48 からのアクセスを、Nginxの設定(denyディレクティブ)またはOSレベルのファイアウォール(iptables / firewalld)で直ちにブロックすることを強く推奨します。
  2. WordPressのセキュリティ強化:

    • 最新の状態に保つ: WordPress本体、使用しているテーマ、および全てのプラグインを常に最新バージョンにアップデートし、既知の脆弱性から保護してください。
    • 不要な要素の削除: 使用していないテーマやプラグインはサーバーから削除してください。
    • 管理画面のアクセス制限: wp-admin ディレクトリへのアクセスを、信頼できるIPアドレスからのみ許可するよう、Nginxまたは.htaccessで制限をかけることを検討してください。
    • REST APIの確認: /wp-json/ へのアクセス状況を確認し、必要に応じて認証・認可の強化や、不要なエンドポイントの無効化を検討してください。
  3. Web Application Firewall (WAF) の導入検討:

    • 今回のような自動化された脆弱性スキャンを効果的に防ぐため、ModSecurityなどのWAFをNginxと連携して導入することを強く推奨します。これにより、より高度な攻撃パターンにも対応できるようになります。
  4. ログ監視の強化と自動対応:

    • ログ分析ツール(例:Fail2Ban, ELK Stack, Splunk)を導入し、短時間での4xxエラー(特に404/403)の多発、特定の脆弱性パターンを狙ったアクセス、User-Agentが空欄または異常なリクエストなどを自動で検知し、アラート通知や自動ブロックを行う仕組みを構築してください。
  5. ディレクトリインデックスの再確認:

    • /wp-includes//wp-admin/, /wp-content/uploads/ などへのディレクトリリスティング試行が403 Forbiddenでブロックされているのは良い状態ですが、Nginxの設定でディレクトリインデックスが確実に無効化されていることを再確認してください。
  6. 不正なHTTPリクエストへの対処:

    • NULLバイト (%00) を含むURLに対するリクエストは、Nginxの設定で明示的にブロックするルールを追加することを検討してください。

これらの対策を実施することで、サーバーのセキュリティ体制をさらに強化し、将来的な攻撃リスクを軽減することができます。

4. 本ホストの対応

まずは、fail2banの設定で、不正アクセスしてくるIPアドレスは制限しておきました。

$ sudo fail2ban-client set nginx-botsearch banip 74.248.24.61
$ sudo fail2ban-client set nginx-botsearch banip 51.89.15.48
### 確認
$ sudo firewall-cmd --list-rich-rules

-サイト構築, スクリプトのお勉強, セキュリティ

執筆者:

関連記事

Mojolicious XML-RPC Pluginの開発(1)

はじめに 最近、お仕事関連で、perlとWebアプリケーションを触っています。 両方一度にお勉強、ということで、perlのWAF(Webアプリケーションフレームワーク)を調べてみようと思いました。 こ …

Djangoアプリサンプル – 画像ファイルアップロード + 顔モザイク(統合編)

顔モザイク Djangoアプリ 前々回 前回 を統合して、Djangoアプリを作成してみようと思います。 前提インストール 前回、ubuntu 18を前提に記述しましたが、CentOS7(CentOS …

gradleのcommandLineでリダイレクト

gradleというビルドツールがあります。なぜかRPMを作成するのに使ってます。Ansibleも使ってるんですがね。。 それはともかく、ここの通りなのですが、例えばls -lRの出力を、プロジェクトデ …

Python3/ある日付から日付までの月/日/時間ごとの時刻を算出する

小ネタです。 要するに、時刻A と 時刻B を指定したときの、各時間間隔での時刻取得したかったです。 当初はdateutilを使う方法でなく、自前で実装しようと思ったのですが、面倒なことに気づきました …

リモート実家帰りしてみる

このご時世、実家には直接帰れないけど、1月には一応実家帰り的な感じでリモート実家帰りをしようかと思いました。 リモートは大変。。 一応実家には自分で設置したインターネットや無線LANがあるので、Zoo …

    google オプトアウト Click here to opt-out.