このサイトのアクセスログを1日分だけ数えてみたところ、攻撃の「下見」と思われるアクセスが512回ありました。有名なサービスでも大きな会社のサイトでもない、小さな技術コラムサイトです。
結論から書くと、512回すべてが拒否されるか「存在しない」と返されていて、ファイルの中身が外に出たものは1件もありませんでした。ただ、その中身を見ると、どのサイトでも起こり得ることがよく分かります。この記事では、実際のログを抜粋して、何が探されていたのか、なぜ狙われるのか、自分のサイトでどう確かめるのかをまとめます。
※ ログの送信元IPアドレスは後半を伏せています(例:35.233.xxx.xxx)。自分自身のアクセス、一般の閲覧、検索エンジンの巡回など、関係のない行は取り除いています。
1日のログで見つかった512回の内訳
対象は 2026年11月1日 3:44 から 11月2日 1:31 までの約22時間分のアクセスログ、合計3,284行です。この中から、Webサイトの公開ファイルとしては本来アクセスされないはずの場所を狙った行を数えました。
| 狙われた場所 | 回数 | 何を探しているか |
|---|---|---|
.env などの環境設定ファイル | 406 | パスワードやAPIキー |
phpinfo.php などの設定表示ページ | 72 | サーバーの構成情報 |
WordPressの初期設定画面(install.php) | 11 | 設定が終わっていないWordPress |
クラウドの認証情報ファイル(credentials.json など) | 10 | クラウドサービスの鍵 |
ログイン画面(wp-login.php) | 6 | 管理画面への入口 |
Gitの管理データ(.git/config) | 4 | プログラムのソースコード |
| WordPressの確認用ファイル・ユーザー一覧・XML-RPC | 3 | WordPressかどうか、ユーザー名 |
| 合計 | 512 |
送信元のIPアドレスは18種類。ログ全体の約16%が、この「下見」のアクセスだったことになります。応答の内訳は、403(アクセス拒否)が432件、404(存在しない)が40件、301(別のURLへの転送)が40件で、200(成功)で中身を返したものは0件でした。
実際のログ①:2分足らずで245か所を探し回る
512回のうち490回は、たった2つの送信元によるものでした。1つ目は朝6時29分に現れ、1分52秒の間に245か所を次々に試して去っていきました。速いときは1秒に3件のペースです。下のボックスは、その245行をそのまま並べたものです(スクロールできます)。
35.233.xxx.xxx - - [01/Nov/2026:06:29:26 +0900] "GET /.git/config HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:27 +0900] "GET /.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:28 +0900] "GET /.env.local HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:28 +0900] "GET /.env.production HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:28 +0900] "GET /.env.staging HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:29 +0900] "GET /.env.development HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:29 +0900] "GET /.env.test HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:30 +0900] "GET /.env.remote HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:30 +0900] "GET /.env.bak HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:30 +0900] "GET /.env.backup HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:31 +0900] "GET /.env.save HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:31 +0900] "GET /.env.old HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:32 +0900] "GET /.env.sample HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:32 +0900] "GET /.env.example HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:32 +0900] "GET /.env.dev HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:33 +0900] "GET /.env.prod HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:33 +0900] "GET /.env.stage HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:34 +0900] "GET /.env.ci HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:34 +0900] "GET /.env.docker HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:34 +0900] "GET /.env.live HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:36 +0900] "GET /.env.preprod HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:36 +0900] "GET /.env.uat HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:37 +0900] "GET /.env.dist HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:37 +0900] "GET /.env.swp HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:37 +0900] "GET /.env~ HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:39 +0900] "GET /.env.txt HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:39 +0900] "GET /.env.json HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:40 +0900] "GET /.env.yaml HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:40 +0900] "GET /.env.yml HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:41 +0900] "GET /app/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:41 +0900] "GET /apps/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:41 +0900] "GET /api/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:42 +0900] "GET /web/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:42 +0900] "GET /site/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:43 +0900] "GET /public/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:43 +0900] "GET /admin/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:43 +0900] "GET /backend/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:44 +0900] "GET /server/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:44 +0900] "GET /frontend/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:45 +0900] "GET /src/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:45 +0900] "GET /core/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:45 +0900] "GET /core/app/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:46 +0900] "GET /config/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:46 +0900] "GET /private/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:47 +0900] "GET /application/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:47 +0900] "GET /bootstrap/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:47 +0900] "GET /database/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:48 +0900] "GET /storage/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:48 +0900] "GET /var/www/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:49 +0900] "GET /var/www/html/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:49 +0900] "GET /current/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:50 +0900] "GET /release/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:50 +0900] "GET /releases/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:50 +0900] "GET /shared/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:51 +0900] "GET /deploy/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:51 +0900] "GET /build/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:52 +0900] "GET /dist/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:52 +0900] "GET /public_html/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:53 +0900] "GET /htdocs/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:53 +0900] "GET /www/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:53 +0900] "GET /html/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:54 +0900] "GET /live/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:54 +0900] "GET /prod/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:55 +0900] "GET /dev/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:55 +0900] "GET /staging/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:55 +0900] "GET /opt/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:56 +0900] "GET /laravel/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:56 +0900] "GET /symfony/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:56 +0900] "GET /wordpress/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:57 +0900] "GET /wp/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:57 +0900] "GET /cms/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:58 +0900] "GET /drupal/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:58 +0900] "GET /joomla/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:58 +0900] "GET /magento/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:59 +0900] "GET /shopify/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:29:59 +0900] "GET /prestashop/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:00 +0900] "GET /codeigniter/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:00 +0900] "GET /cakephp/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:00 +0900] "GET /zend/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:01 +0900] "GET /yii/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:01 +0900] "GET /laravel5/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:02 +0900] "GET /v1/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:02 +0900] "GET /v2/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:03 +0900] "GET /v3/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:03 +0900] "GET /api/v1/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:04 +0900] "GET /api/v2/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:04 +0900] "GET /rest/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:05 +0900] "GET /graphql/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:05 +0900] "GET /gateway/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:06 +0900] "GET /microservice/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:06 +0900] "GET /service/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:07 +0900] "GET /api/v3/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:07 +0900] "GET /api/dev/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:07 +0900] "GET /api/staging/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:08 +0900] "GET /vendor/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:08 +0900] "GET /lib/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:09 +0900] "GET /resources/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:09 +0900] "GET /assets/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:10 +0900] "GET /uploads/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:10 +0900] "GET /internal/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:11 +0900] "GET /tools/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:11 +0900] "GET /scripts/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:11 +0900] "GET /bin/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:12 +0900] "GET /sbin/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:12 +0900] "GET /local/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:13 +0900] "GET /portal/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:13 +0900] "GET /dashboard/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:13 +0900] "GET /panel/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:14 +0900] "GET /crm/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:14 +0900] "GET /erp/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:14 +0900] "GET /shop/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:15 +0900] "GET /store/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:15 +0900] "GET /saas/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:16 +0900] "GET /client/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:16 +0900] "GET /project/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:16 +0900] "GET /admin-panel/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:17 +0900] "GET /control-panel/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:17 +0900] "GET /user-panel/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:18 +0900] "GET /node/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:18 +0900] "GET /express/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:18 +0900] "GET /next/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:19 +0900] "GET /nuxt/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:19 +0900] "GET /nest/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:20 +0900] "GET /react/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:20 +0900] "GET /vue/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:20 +0900] "GET /angular/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:21 +0900] "GET /svelte/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:21 +0900] "GET /vite/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:22 +0900] "GET /backup/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:22 +0900] "GET /backups/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:22 +0900] "GET /old/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:23 +0900] "GET /tmp/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:23 +0900] "GET /temp/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:24 +0900] "GET /lab/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:24 +0900] "GET /cronlab/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:24 +0900] "GET /cron/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:25 +0900] "GET /en/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:25 +0900] "GET /administrator/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:26 +0900] "GET /psnlink/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:26 +0900] "GET /exapi/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:26 +0900] "GET /sitemaps/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:27 +0900] "GET /.env.backup1 HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:27 +0900] "GET /.env.backup2 HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:28 +0900] "GET /logs/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:28 +0900] "GET /cache/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:28 +0900] "GET /mailer/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:29 +0900] "GET /mail/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:29 +0900] "GET /email/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:30 +0900] "GET /smtp/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:30 +0900] "GET /mailing/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:30 +0900] "GET /notifications/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:31 +0900] "GET /notify/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:31 +0900] "GET /sender/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:32 +0900] "GET /campaign/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:32 +0900] "GET /newsletter/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:32 +0900] "GET /ses/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:33 +0900] "GET /sendgrid/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:33 +0900] "GET /sparkpost/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:34 +0900] "GET /postmark/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:34 +0900] "GET /mailgun/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:34 +0900] "GET /mandrill/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:35 +0900] "GET /mailjet/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:35 +0900] "GET /brevo/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:36 +0900] "GET /transactional/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:36 +0900] "GET /bulk/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:36 +0900] "GET /aws/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:37 +0900] "GET /azure/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:37 +0900] "GET /gcp/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:38 +0900] "GET /cloud/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:38 +0900] "GET /infrastructure/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:38 +0900] "GET /docker/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:39 +0900] "GET /k8s/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:39 +0900] "GET /kubernetes/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:39 +0900] "GET /terraform/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:40 +0900] "GET /ansible/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:40 +0900] "GET /.git/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:41 +0900] "GET /ci/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:41 +0900] "GET /cd/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:41 +0900] "GET /jenkins/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:42 +0900] "GET /gitlab/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:42 +0900] "GET /github/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:43 +0900] "GET /actions/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:43 +0900] "GET /circleci/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:43 +0900] "GET /travis/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:44 +0900] "GET /buildkite/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:44 +0900] "GET /mysql/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:45 +0900] "GET /postgres/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:45 +0900] "GET /mongodb/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:45 +0900] "GET /redis/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:46 +0900] "GET /elasticsearch/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:46 +0900] "GET /rabbitmq/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:47 +0900] "GET /kafka/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:47 +0900] "GET /queue/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:47 +0900] "GET /worker/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:48 +0900] "GET /job/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:48 +0900] "GET /test/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:49 +0900] "GET /qa/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:49 +0900] "GET /preview/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:50 +0900] "GET /beta/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:50 +0900] "GET /uat/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:50 +0900] "GET /stage/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:51 +0900] "GET /development/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:51 +0900] "GET /production/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:52 +0900] "GET /config/app/.env HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:30:52 +0900] "GET /phpinfo.php HTTP/1.1" 301 35.233.xxx.xxx - - [01/Nov/2026:06:30:53 +0900] "GET /info.php HTTP/1.1" 301 35.233.xxx.xxx - - [01/Nov/2026:06:30:55 +0900] "GET /phpinfo HTTP/1.1" 301 35.233.xxx.xxx - - [01/Nov/2026:06:30:56 +0900] "GET /admin/phpinfo.php HTTP/1.1" 301 35.233.xxx.xxx - - [01/Nov/2026:06:30:57 +0900] "GET /test/phpinfo.php HTTP/1.1" 301 35.233.xxx.xxx - - [01/Nov/2026:06:30:57 +0900] "GET /dev/phpinfo.php HTTP/1.1" 301 35.233.xxx.xxx - - [01/Nov/2026:06:30:58 +0900] "GET /old/phpinfo.php HTTP/1.1" 301 35.233.xxx.xxx - - [01/Nov/2026:06:30:58 +0900] "GET /tmp/phpinfo.php HTTP/1.1" 301 35.233.xxx.xxx - - [01/Nov/2026:06:30:59 +0900] "GET /public/phpinfo.php HTTP/1.1" 301 35.233.xxx.xxx - - [01/Nov/2026:06:31:00 +0900] "GET /_phpinfo.php HTTP/1.1" 301 35.233.xxx.xxx - - [01/Nov/2026:06:31:01 +0900] "GET /old_phpinfo.php HTTP/1.1" 301 35.233.xxx.xxx - - [01/Nov/2026:06:31:02 +0900] "GET /_profiler/phpinfo HTTP/1.1" 301 35.233.xxx.xxx - - [01/Nov/2026:06:31:04 +0900] "GET /mail/phpinfo.php HTTP/1.1" 301 35.233.xxx.xxx - - [01/Nov/2026:06:31:04 +0900] "GET /cpanel/phpinfo.php HTTP/1.1" 301 35.233.xxx.xxx - - [01/Nov/2026:06:31:04 +0900] "GET /hosting/phpinfo.php HTTP/1.1" 301 35.233.xxx.xxx - - [01/Nov/2026:06:31:05 +0900] "GET /webmail/phpinfo.php HTTP/1.1" 301 35.233.xxx.xxx - - [01/Nov/2026:06:31:06 +0900] "GET /smtp/phpinfo.php HTTP/1.1" 301 35.233.xxx.xxx - - [01/Nov/2026:06:31:06 +0900] "GET /phpinfo.php.bak HTTP/1.1" 301 35.233.xxx.xxx - - [01/Nov/2026:06:31:06 +0900] "GET /phpinfo.php.old HTTP/1.1" 301 35.233.xxx.xxx - - [01/Nov/2026:06:31:07 +0900] "GET /phpinfo.php~ HTTP/1.1" 301 35.233.xxx.xxx - - [01/Nov/2026:06:31:07 +0900] "GET /info.php.bak HTTP/1.1" 301 35.233.xxx.xxx - - [01/Nov/2026:06:31:08 +0900] "GET /phpinfo.php.save HTTP/1.1" 301 35.233.xxx.xxx - - [01/Nov/2026:06:31:08 +0900] "GET /staging/phpinfo.php HTTP/1.1" 301 35.233.xxx.xxx - - [01/Nov/2026:06:31:09 +0900] "GET /beta/phpinfo.php HTTP/1.1" 301 35.233.xxx.xxx - - [01/Nov/2026:06:31:09 +0900] "GET /uat/phpinfo.php HTTP/1.1" 301 35.233.xxx.xxx - - [01/Nov/2026:06:31:10 +0900] "GET /qa/phpinfo.php HTTP/1.1" 301 35.233.xxx.xxx - - [01/Nov/2026:06:31:10 +0900] "GET /preview/phpinfo.php HTTP/1.1" 301 35.233.xxx.xxx - - [01/Nov/2026:06:31:10 +0900] "GET /www/phpinfo.php HTTP/1.1" 301 35.233.xxx.xxx - - [01/Nov/2026:06:31:11 +0900] "GET /htdocs/phpinfo.php HTTP/1.1" 301 35.233.xxx.xxx - - [01/Nov/2026:06:31:11 +0900] "GET /public_html/phpinfo.php HTTP/1.1" 301 35.233.xxx.xxx - - [01/Nov/2026:06:31:12 +0900] "GET /site/phpinfo.php HTTP/1.1" 301 35.233.xxx.xxx - - [01/Nov/2026:06:31:12 +0900] "GET /docs/phpinfo.php HTTP/1.1" 301 35.233.xxx.xxx - - [01/Nov/2026:06:31:12 +0900] "GET /wp-admin/phpinfo.php HTTP/1.1" 403 35.233.xxx.xxx - - [01/Nov/2026:06:31:13 +0900] "GET /administrator/phpinfo.php HTTP/1.1" 301 35.233.xxx.xxx - - [01/Nov/2026:06:31:13 +0900] "GET /core/phpinfo.php HTTP/1.1" 301 35.233.xxx.xxx - - [01/Nov/2026:06:31:14 +0900] "GET /includes/phpinfo.php HTTP/1.1" 301 35.233.xxx.xxx - - [01/Nov/2026:06:31:15 +0900] "GET /gcp-credentials.json HTTP/1.1" 301 35.233.xxx.xxx - - [01/Nov/2026:06:31:16 +0900] "GET /credentials.json HTTP/1.1" 301 35.233.xxx.xxx - - [01/Nov/2026:06:31:17 +0900] "GET /google-credentials.json HTTP/1.1" 301 35.233.xxx.xxx - - [01/Nov/2026:06:31:18 +0900] "GET /.config/gcloud/application_default_credentials.json HTTP/1.1" 301 35.233.xxx.xxx - - [01/Nov/2026:06:31:18 +0900] "GET /application_default_credentials.json HTTP/1.1" 301
眺めていると、手口がよく分かります。.env だけでも .env.local、.env.production、.env.bak と名前を変え、さらに /app/、/api/、/backend/ と置き場所を変えながら、203通りもの場所を総当たりしています。後半では phpinfo.php やクラウドの認証情報ファイルへと、探す対象を切り替えています。人が手で打っている速さではありません。プログラムによる自動の巡回(スキャン)です。
8時間後、別の送信元がまったく同じ順番で
2つ目の送信元は、午後2時39分に現れました。IPアドレスも、名乗っているブラウザの種類(WindowsのChromeかMacのChromeか)も1つ目とは違います。ところが、試した245か所は1つ目とまったく同じで、順番まで一致していました。
34.32.xxx.xxx - - [01/Nov/2026:14:39:22 +0900] "GET /.git/config HTTP/1.1" 403 34.32.xxx.xxx - - [01/Nov/2026:14:39:23 +0900] "GET /.env HTTP/1.1" 403 34.32.xxx.xxx - - [01/Nov/2026:14:39:23 +0900] "GET /.env.local HTTP/1.1" 403 34.32.xxx.xxx - - [01/Nov/2026:14:39:24 +0900] "GET /.env.production HTTP/1.1" 403 34.32.xxx.xxx - - [01/Nov/2026:14:39:24 +0900] "GET /.env.staging HTTP/1.1" 403 34.32.xxx.xxx - - [01/Nov/2026:14:39:24 +0900] "GET /.env.development HTTP/1.1" 403 34.32.xxx.xxx - - [01/Nov/2026:14:39:25 +0900] "GET /.env.test HTTP/1.1" 403 34.32.xxx.xxx - - [01/Nov/2026:14:39:25 +0900] "GET /.env.remote HTTP/1.1" 403 34.32.xxx.xxx - - [01/Nov/2026:14:39:25 +0900] "GET /.env.bak HTTP/1.1" 403 34.32.xxx.xxx - - [01/Nov/2026:14:39:26 +0900] "GET /.env.backup HTTP/1.1" 403 34.32.xxx.xxx - - [01/Nov/2026:14:39:26 +0900] "GET /.env.save HTTP/1.1" 403 34.32.xxx.xxx - - [01/Nov/2026:14:39:26 +0900] "GET /.env.old HTTP/1.1" 403
同じ探索リストを持った道具が、場所を変えながら次々とサイトを巡回していると考えられます。このサイトが特別に狙われたというより、インターネットに公開されているサイトが片っ端から試されている、と見るのが自然です。
実際のログ②:2時間おきにやって来る「初期設定画面」探し
件数は少ないものの、規則正しさが目立ったのがWordPressの初期設定画面(install.php)を探すアクセスです。4時、6時、8時……と、ほぼ2時間おきに11回、IPアドレスを変えながら届いていました。
162.159.xxx.xxx - - [01/Nov/2026:04:00:51 +0900] "GET /wp-admin/install.php?step=1 HTTP/1.1" 403 172.68.xxx.xxx - - [01/Nov/2026:06:03:48 +0900] "GET /wp-admin/install.php?step=1 HTTP/1.1" 403 172.70.xxx.xxx - - [01/Nov/2026:08:05:51 +0900] "GET /wp-admin/install.php?step=1 HTTP/1.1" 403 104.23.xxx.xxx - - [01/Nov/2026:10:03:35 +0900] "GET /wp-admin/install.php?step=1 HTTP/1.1" 403 172.71.xxx.xxx - - [01/Nov/2026:12:06:12 +0900] "GET /wp-admin/install.php?step=1 HTTP/1.1" 403 104.22.xxx.xxx - - [01/Nov/2026:14:12:34 +0900] "GET /wp-admin/install.php?step=1 HTTP/1.1" 403 172.69.xxx.xxx - - [01/Nov/2026:16:12:43 +0900] "GET /wp-admin/install.php?step=1 HTTP/1.1" 403 172.71.xxx.xxx - - [01/Nov/2026:18:14:12 +0900] "GET /wp-admin/install.php?step=1 HTTP/1.1" 403 104.23.xxx.xxx - - [01/Nov/2026:20:16:41 +0900] "GET /wp-admin/install.php?step=1 HTTP/1.1" 403 172.70.xxx.xxx - - [01/Nov/2026:22:19:01 +0900] "GET /wp-admin/install.php?step=1 HTTP/1.1" 403 104.23.xxx.xxx - - [02/Nov/2026:00:20:48 +0900] "GET /wp-admin/install.php?step=1 HTTP/1.1" 403
実際のログ③:WordPressかどうかの確認とログイン画面
残りは、WordPressで作られたサイトかどうかを確かめるアクセスや、ログイン画面、Gitの管理データを探すアクセスです。21時56分の3行は、わずか2秒の間に「WordPressの確認用ファイル」「ユーザー一覧」「XML-RPC」を立て続けに試しています。
185.8.xxx.xxx - - [01/Nov/2026:04:43:13 +0900] "GET /.git/config HTTP/1.1" 403 34.44.xxx.xxx - - [01/Nov/2026:10:20:43 +0900] "GET /.git/config HTTP/1.1" 403 62.60.xxx.xxx - - [01/Nov/2026:15:51:50 +0900] "GET /wp-login.php HTTP/1.1" 403 62.60.xxx.xxx - - [01/Nov/2026:15:51:50 +0900] "GET /wp-login.php HTTP/1.1" 403 129.227.xxx.xxx - - [01/Nov/2026:16:59:02 +0900] "POST /wp-login.php HTTP/1.1" 403 136.144.xxx.xxx - - [01/Nov/2026:17:52:29 +0900] "GET /wp-login.php HTTP/1.1" 403 129.227.xxx.xxx - - [01/Nov/2026:20:07:56 +0900] "POST /wp-login.php HTTP/1.1" 403 129.227.xxx.xxx - - [01/Nov/2026:20:07:56 +0900] "POST /wp-login.php HTTP/1.1" 403 129.221.xxx.xxx - - [01/Nov/2026:21:56:03 +0900] "GET //wp-includes/wlwmanifest.xml HTTP/1.1" 403 129.221.xxx.xxx - - [01/Nov/2026:21:56:04 +0900] "GET //wp-json/wp/v2/users/ HTTP/1.1" 403 129.221.xxx.xxx - - [01/Nov/2026:21:56:04 +0900] "POST //xmlrpc.php HTTP/1.1" 403
なぜこれらのファイルが狙われるのか
.env:パスワードがまとめて書かれていることがある
.env は、データベースのパスワードや外部サービスのAPIキーなどを書いておく設定ファイルとして、多くのWebアプリで使われています。本来は外から見えない場所に置くものですが、公開フォルダに置いたままにしていると、URLを打つだけで中身を読まれてしまいます。1回でも当たれば大きな見返りがあるため、名前や場所を変えながら執拗に探されます。
phpinfo.php:サーバーの「設計図」が丸見えになる
phpinfo() は、PHPのバージョンや設定、サーバーの環境変数などを一覧表示する関数です。動作確認のために作ったファイルを消し忘れると、どの弱点を狙えばよいかの手がかりを与えてしまいます。
install.php:設定が終わる前のWordPressを乗っ取る
WordPressは、ファイルを置いた後、初期設定画面で管理者アカウントなどを決めて初めて使える状態になります。この初期設定が済んでいないサイトを見つけると、攻撃者が先に設定を済ませてしまい、サイトを乗っ取れます。インストールしたまま放置されたサイトを狙う手口として知られています。
クラウドの認証情報・.git:鍵とソースコード
credentials.json などは、クラウドサービスを操作するための鍵が入ったファイルの名前としてよく使われます。.git フォルダが公開されていると、サイトのプログラム一式や、そこに書かれたパスワードを取り出されるおそれがあります。
ログイン画面・XML-RPC・ユーザー一覧:パスワードの総当たりの準備
WordPressのログイン画面や、外部から投稿するための仕組みであるXML-RPCは、パスワードを総当たりで試す攻撃によく使われます。ユーザー一覧を取りに来るのは、総当たりで使うユーザー名を集めるためです。
自分のサイトで確かめる方法
アクセスログを数えてみる
レンタルサーバーの多くは、管理画面からアクセスログをダウンロードできます。ダウンロードしたログ(ここでは access_log という名前とします)に対して、MacやLinuxのターミナル、WindowsならWSLなどで次のコマンドを実行すると、同じようなアクセスが何回あったかを数えられます。
$ grep -cE '\.env|phpinfo|install\.php|\.git/|credentials\.json|xmlrpc\.php|wp-login\.php' access_log # ↑ 下見と思われるアクセスの件数 $ grep -E '\.env|phpinfo|install\.php|\.git/|credentials\.json' access_log | grep '" 200 ' # ↑ そのうち「200(成功)」で応答してしまった行。何も表示されなければOK
大事なのは2つ目のコマンドです。ここで行が表示された場合、そのファイルが実際に外から読める状態になっている可能性があります。件数の多さよりも、「200で応答した行がないか」を確認してください。
ファイルが外から見えていないか確かめる
ブラウザで、自分のサイトのURLの後ろに /.env や /.git/config を付けて開いてみます。「403 Forbidden(アクセス拒否)」や「ページが見つかりません」と表示されれば問題ありません。文字がずらりと表示された場合は、すぐにそのファイルを公開フォルダから移動または削除し、書かれていたパスワードやキーを変更してください。
基本の守り方
- パスワードやキーを書いたファイルを公開フォルダに置かない:どうしても置く必要がある場合は、外から読めない設定にする。
- 動作確認用のファイルを残さない:
phpinfo.phpやバックアップファイル(.bak、.zipなど)は、用が済んだら削除する。 - WordPressは置いたらすぐ初期設定まで済ませる:設定画面を開いたまま放置しない。
- ドットで始まるファイルへのアクセスを拒否する:Apacheを使うサーバーなら、
.htaccessに次のように書くと、.envのようにドットで始まるファイルを拒否でき、2行目で.gitフォルダの中身も見えなくできます。編集前には必ず元の.htaccessを保存しておいてください(サーバーによって書き方が違う場合があります)。
<FilesMatch "^\.">
Require all denied
</FilesMatch>
RedirectMatch 404 /\.git
- ログインを守る:推測されにくい長いパスワードと二段階認証を使い、ログインの失敗が続いたら制限をかける。
- WordPress本体・テーマ・プラグインを最新に保つ。
- サーバーのWAF(Webアプリケーションファイアウォール)を確認する:多くのレンタルサーバーに、怪しいアクセスを自動で止める機能があります。有効になっているか一度確認しておくと安心です。
まとめ
小さなサイトでも、公開した瞬間から自動の巡回は届きます。今回のログでは、約22時間で512回、2分足らずで245か所を試していく道具が、時間と場所を変えて何度も現れていました。
どれもサーバー側で拒否されていたので実害はありませんでしたが、守りが1か所でも抜けていれば、そこを見つけられるまでの時間はそう長くないはずです。まずは自分のサイトのログを一度開いて、「200で応答した行がないか」だけでも確かめてみてください。
