こんにちは!しろみです!一人アドベントカレンダーの5日目はApacheのログにクライアントのIPアドレスを記録するについてを紹介していきます!
本記事にて使用するインフラ構成
下記の構成でのお話を紹介していきます
- ALB
- ターゲットグループ内のEC2
この構成だとサーバ内のアクセスログはどうなるかを紹介したうえで、クライアントのIPアドレスを記録する方法についてを紹介していこうと思います。
119.171.161.21 - - [04/Dec/2025:12:26:21 +0000] "GET / HTTP/1.1" 200 19 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36"
119.171.161.21 - - [04/Dec/2025:12:26:21 +0000] "GET /favicon.ico HTTP/1.1" 404 196 "http://52.197.68.152/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36"
119.171.161.21 - - [04/Dec/2025:12:32:51 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36"
119.171.161.21 - - [04/Dec/2025:12:39:01 +0000] "GET / HTTP/1.1" 200 37 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36"
164.92.148.118 - - [04/Dec/2025:12:39:14 +0000] "GET / HTTP/1.1" 200 37 "-" "CGrab/v6.4.3"
10.0.0.159 - - [04/Dec/2025:12:44:07 +0000] "GET / HTTP/1.1" 200 37 "-" "ELB-HealthChecker/2.0"
10.0.1.84 - - [04/Dec/2025:12:44:36 +0000] "GET / HTTP/1.1" 200 37 "-" "ELB-HealthChecker/2.0"
10.0.0.159 - - [04/Dec/2025:12:44:37 +0000] "GET / HTTP/1.1" 200 37 "-" "ELB-HealthChecker/2.0"
10.0.1.84 - - [04/Dec/2025:12:45:06 +0000] "GET / HTTP/1.1" 200 37 "-" "ELB-HealthChecker/2.0"
10.0.0.159 - - [04/Dec/2025:12:45:07 +0000] "GET / HTTP/1.1" 200 37 "-" "ELB-HealthChecker/2.0"
10.0.1.84 - - [04/Dec/2025:12:45:36 +0000] "GET / HTTP/1.1" 200 37 "-" "ELB-HealthChecker/2.0"
10.0.0.159 - - [04/Dec/2025:12:45:37 +0000] "GET / HTTP/1.1" 200 37 "-" "ELB-HealthChecker/2.0"
10.0.1.84 - - [04/Dec/2025:12:46:06 +0000] "GET / HTTP/1.1" 200 37 "-" "ELB-HealthChecker/2.0"
10.0.0.159 - - [04/Dec/2025:12:46:07 +0000] "GET / HTTP/1.1" 200 37 "-" "ELB-HealthChecker/2.0"
10.0.1.84 - - [04/Dec/2025:12:46:36 +0000] "GET / HTTP/1.1" 200 37 "-" "ELB-HealthChecker/2.0"
10.0.0.159 - - [04/Dec/2025:12:46:37 +0000] "GET / HTTP/1.1" 200 37 "-" "ELB-HealthChecker/2.0"
10.0.1.84 - - [04/Dec/2025:12:47:06 +0000] "GET / HTTP/1.1" 200 37 "-" "ELB-HealthChecker/2.0"
10.0.0.159 - - [04/Dec/2025:12:47:07 +0000] "GET / HTTP/1.1" 200 37 "-" "ELB-HealthChecker/2.0"
10.0.0.159 - - [04/Dec/2025:12:47:21 +0000] "GET / HTTP/1.1" 200 37 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36"
10.0.0.159 - - [04/Dec/2025:12:47:23 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36"
10.0.1.84 - - [04/Dec/2025:12:47:36 +0000] "GET / HTTP/1.1" 200 37 "-" "ELB-HealthChecker/2.0"
10.0.0.159 - - [04/Dec/2025:12:47:37 +0000] "GET / HTTP/1.1" 200 37 "-" "ELB-HealthChecker/2.0"
10.0.1.84 - - [04/Dec/2025:12:48:06 +0000] "GET / HTTP/1.1" 200 37 "-" "ELB-HealthChecker/2.0"
10.0.0.159 - - [04/Dec/2025:12:48:07 +0000] "GET / HTTP/1.1" 200 37 "-" "ELB-HealthChecker/2.0"
10.0.1.84 - - [04/Dec/2025:12:48:36 +0000] "GET / HTTP/1.1" 200 37 "-" "ELB-HealthChecker/2.0"
10.0.0.159 - - [04/Dec/2025:12:48:37 +0000] "GET / HTTP/1.1" 200 37 "-" "ELB-HealthChecker/2.0"
10.0.1.84 - - [04/Dec/2025:12:49:06 +0000] "GET / HTTP/1.1" 200 37 "-" "ELB-HealthChecker/2.0"
10.0.0.159 - - [04/Dec/2025:12:49:07 +0000] "GET / HTTP/1.1" 200 37 "-" "ELB-HealthChecker/2.0"
10.0.1.84 - - [04/Dec/2025:12:49:36 +0000] "GET / HTTP/1.1" 200 37 "-" "ELB-HealthChecker/2.0"
10.0.0.159 - - [04/Dec/2025:12:49:37 +0000] "GET / HTTP/1.1" 200 37 "-" "ELB-HealthChecker/2.0"
実際のアクセスログですが、こういった形式で記録されております。
このIPアドレスはどこのIPアドレスなのかというと、ALBのIPアドレスが記録されております。
ALBのネットワークタブを確認して、現状どのような設定になっているのかを確認します。
この内容からALBのIPアドレスと推察することが可能となります。

なぜこの設定だとまずいのか
システムへのアクセスログですが、下記の調査に使用したりもします。
システムやサイトへのアクセスが急増している
その結果、サイトの閲覧に遅延が発生している
基盤運用者はその原因調査のために、ログを解析する
こういった際の調査方法は様々なものがございますが、アクセス元からどれくらいのアクセスが来ているのかを解析することもあります
下記のコマンドで一例を出していきます。
[root@ip-10-0-0-239 ~]# awk '{print $1}' /var/log/httpd/access_log | sort | uniq -c | sort -nr | head
316 10.0.0.159
236 10.0.1.84
29 10.0.1.128
awk {print $1}'
awkを使用して特定の行を抽出する。$1だと1行目。この場合だとアクセス元のIPアドレスを抽出(ALBのIPアドレス)
調査の方法については、いろいろな方法がありますが、abuseipdbというサイトを使用して調査をすることもあります
abuseipdbとは
ざっくりと解説すると「ipアドレスの口コミサイト」のようなものとなります。
具体的な内容を紹介するとセンシティブなため、文面で紹介します。
怪しいIPアドレスを入力して検索
口コミの内容を確認
こういった流れでそのアクセス元IPアドレスが怪しい動きをしているのかを確認していきます。
そのため、クライアントのIPアドレスが記録されないことで調査に支障が出てきたりします。
クライアントのIPアドレスを記録する
使用しているミドルウェアのログ定義の箇所にX-forwareded-headerの値を記録するように編集していきます
LogFormat "%{X-Forwarded-For}i %h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
編集後に使用しているミドルウェア(筆者の場合だとapache)をリロードします。
[root@ip-10-0-0-239 ~]# systemctl reload httpd
その後、サイトにアクセスしアクセスログがどのように記録されるようになったのかを確認していきます。
[root@ip-10-0-0-239 ~]# tail -f /var/log/httpd/access_log
- 10.0.1.128 - - [05/Dec/2025:12:04:43 +0000] "GET / HTTP/1.1" 200 37 "-" "ELB-HealthChecker/2.0"
119.171.161.21 10.0.1.128 - - [05/Dec/2025:12:04:50 +0000] "GET / HTTP/1.1" 200 37 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36" - 10.0.0.159 - - [05/Dec/2025:12:05:07 +0000] "GET / HTTP/1.1" 200 37 "-" "ELB-HealthChecker/2.0"
- 10.0.1.128 - - [05/Dec/2025:12:05:13 +0000] "GET / HTTP/1.1" 200 37 "-" "ELB-HealthChecker/2.0"
xxx.xxx.xxx.xxx 10.0.1.128 - - [05/Dec/2025:12:05:13 +0000] "GET / HTTP/1.1" 200 37 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36"
xxx.xxx.xxx.xxx 10.0.1.128 - - [05/Dec/2025:12:05:14 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36"
xxx.xxx.xxx.xxx 10.0.1.128 - - [05/Dec/2025:12:05:14 +0000] "GET / HTTP/1.1" 200 37 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36"
^C
実際のアクセス元IPアドレスはマスクしますが、ALBの隣にアクセス元のIPアドレスが記載されたことを確認できました。
最後に
アクセス元のIPアドレスを記録する方法についてご紹介しました。
こちらの記事については、詳細に描けていないと感じましたため後日修正します。
荒い記事となりましたがご拝読いただきありがとうございます。