Apacheのアクセスログを確認する

WebサーバApacheのアクセスログを確認する方法と、アクセスログからわかることについて解説します。

環境

 VMware上の仮想PCにubuntu22をインストール
 同ubuntuにはapache2.4.52が起動

アクセスログの場所

 標準インストールした状態だと、apacheのアクセスログは、ubuntuPCの

/var/log/apache2/access.log

に保存されています。
 最新のログを見るためには次のコマンドを使います。

$ > tail -f /var/log/apache2/access.log

アクセスログを表示すると、

127.0.0.1 – – [06/Oct/2023:23:22:47 +0900] “GET /index.html HTTP/1.1” 200 336 “-” “Mozilla/5.0 (X11; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0”
192.168.19.1 – – [06/Oct/2023:23:44:17 +0900] “GET / HTTP/1.1” 200 336 “-” “Mozilla/5.0  (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36 Edg/117.0.2045.47”

このような文字列が表示されると思います。
 これがアクセスログです。

 アクセスログの読み方

 apacheのアクセスログは、次のような構成になっており、1アクセスにつき1行が記録されます。

アクセスログ1件分
 127.0.0.1 – – [06/Oct/2023:23:22:47 +0900] “GET /index.html HTTP/1.1” 200 336 “-” “Mozilla/5.0 (X11; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0”

 アクセスログに書かれている内容を確認していきます。
  ① 127.0.0.1 アクセス元のIPアドレス

  ② -    アクセス元のユーザ名

  ③ -    リモートユーザ

  ④[06/Oct/2023:23:22:47 +0900] アクセス日時

  ⑤ “GET /index.html HTTP/1.1″ アクセスの方法とアクセス先

  ⑥ 200  ステータスコード

  ⑦ 336  アクセス先のファイルサイズ

  ⑧ “-“   リファラー

  ⑨ “Mozilla/5.0 (X11; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0″ ユーザエージェント

①アクセス元のIPアドレスについて

 アクセスしてきたPCのIPアドレスが表示されます。
 127.0.0.1は、ローカルホストIPと言って自分で自分のサーバにアクセスする際のIPアドレスですので、アクセス者が自分であることがわかります。
 IPv4によるIPアドレスのほかにIPv6のIPアドレスも表示されます。
 不審なアクセスを繰り返しているIPアドレスが判明すれば、そのIPから接続されないようにすることもできますし、IPアドレスがわかれば、どこの国からアクセスされているのかも調べることができます。

②アクセス元のユーザ名 及び ③リモートユーザ

 通常は “-” になることが多いので割愛します。

④アクセス日時

 アクセスがあった時間です。
 サーバの時間を使っているので、サーバの時間がずれているとずれたまま表示されてしまうので注意が必要です。
 日本語設定で使用しているので、JST(日本標準時)で表示されています。

⑤アクセスの方法とアクセス先

 「GET」と書いてあるものは、GETメソッドでホームページを取得しています。掲示板等のサイトで情報を投稿する際には「POST」メソッドを使用する場合があります。
 「index.html」は、アクセスしたホームページファイル名です。
 GETメソッドを使用して、index.htmlというHTMLファイルを取得したことがわかります。

⑥ステータスコード

 200は、アクセスに成功したという意味です。
 200番台のコードが表示されていれば、アクセスが成功していると考えられます。
 300番台は、そのページが別の場所に移動している等、リダイレクト関係のエラーです。
 400番台は、ファイルが存在しない等URLが間違っていると思われるエラーです。
 500番台は、権限がない等の理由でページを表示することができないエラーです。
 エラーが頻発している場合には、間違ったURLを表示しているか、外部からの攻撃やその準備している恐れがありますので、必要な対策をとるようにしてください。

⑦アクセス先のファイルサイズ

 ⑤で表示したファイルの大きさ(バイト数)が表示されます。
 windowsPC上からffftpを使ってアップロードする前のファイルサイズと、ここで表示されるファイルのサイズが多少違うことがありますが、OSの違いによって文字コードが変換されていることが原因です。
 Windowsでは、文書中の改行を「CR+LF」という2バイト文字で表記するのに対して、Linux系OSでは、改行を「LF」の1バイトで表記している為ファイルサイズが少し違ってきます。

⑧リファラー

 当該URLを呼び出したページのIPアドレスです。
 ブラウザに直接URLを書き込んで当該ページを開くと”-“が表示されます。
 他人のホームページに当該ホームページへのリンクが張られていた場合には、リンクを表示しているページのIPアドレスが表示されるため、自身のホームページへのリンクを発見するのに役立ちます。

⑨ユーザエージェント(UserAgent)

 当該ページを開くのに使用したOS情報とブラウザ情報が表示されます。
 当該ページが、携帯電話から開かれているのか、WindowsやLinuxが多いか等を知るのに使えます。
 便利な情報なのですが、Googleではこのユーザエージェントを表示させない方針を打ち出しているので、将来的には使われなくなるかもsれません。

アクセスログの動的確認方法

 ubuntuなどのlinux系OSにはアクセスログファイルを開いたまま、アクセスログが書き込まれていく様子を見ることができるコマンドが用意されています。
 このコマンドを使用すると、アクセスログが書き込まれていく様子をリアルタイムで観察することができます。
 アクセスログの動的表示は次のコマンドを入力してください。

 $ > tail -f /var/log/apache2/access.log

 アクセスログが表示された状態で、windowsPCのブラウザからホームページを開くと、アクセスログが追加されてて行きます。
 windowsPCのブラウザから、

  http://192.168.12.128/aa.html

という、存在しないURLを入力すると、webサーバのアクセスログでは

 192.168.19.1 – – [07/Oct/2023:15:41:42 +0900] “GET /aa.html HTTP/1.1” 404 493 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36 Edg/117.0.2045.47”

というアクセスログが増えました。
 アクセス先のURLは「GET /aa.html」となっており、ステータスコードが”404″と表示されていますので、私が存在しないURLを開こうとしたことがわかります。
 ここで気になるのは、存在しないURLを開いているのに、アクセス先のファイルサイズが、「493」となっていることです。
 これは、次のホームページを開いたからです。

表示されたNotFoundページ

この「ページが見つかりません」というホームページを開いたので、ファイルサイズが0ではないのです。

 アクセスログを見ていると、今までにない発見があるかもしれません。