Linuxサーバーを運用していると「どんなアクセスが来ているのか確認したい」「不審なアクセスや攻撃がないかチェックしたい」と思うことがよくありますよね。
こんな場面で必要になります
- Webサイトにどのくらいアクセスが来ているか知りたい
- 特定のページでエラーが頻発していないか確認したい
- 不正アクセスや攻撃の痕跡を調べたい
- サーバーへのSSHログイン履歴をチェックしたい
- システムの問題を調査したい
そんなとき頼りになるのがアクセスログです。
この記事では、Linuxで代表的なアクセスログの場所と確認方法、実際の活用例を初心者向けにわかりやすく紹介します。コマンドをコピペして試すだけで、すぐにサーバーの状況が把握できるようになりますよ!
Linuxでのアクセスログの種類と場所

Webサーバーのアクセスログ
多くのLinuxサーバーではApacheやNginxが使われていて、それぞれアクセスログが標準で設定されています。
Apache(アパッチ)
CentOS/RHEL系
/var/log/httpd/access_log
Ubuntu/Debian系
/var/log/apache2/access.log
エラーログも一緒に確認
/var/log/httpd/error_log # CentOS/RHEL系
/var/log/apache2/error.log # Ubuntu/Debian系
Nginx(エンジンエックス)
アクセスログ
/var/log/nginx/access.log
エラーログ
/var/log/nginx/error.log
これらのログには、アクセスがあるたびにリクエスト元IP、アクセス時刻、URL、ステータスコードなどが記録されます。
SSHログイン(サーバーアクセス)履歴
サーバー自体へのログイン履歴も重要なアクセスログです。
CentOS/RHEL系
/var/log/secure
Ubuntu/Debian系
/var/log/auth.log
全ディストリビューション共通
/var/log/messages # システム全般のログ
/var/log/syslog # システムログ(Ubuntu/Debian)
これらには以下の情報が記録されます:
- SSHログインの成功・失敗
- sudo実行の履歴
- ユーザーの認証情報
- システムサービスの起動・停止
その他の重要なログファイル
FTPアクセスログ
/var/log/vsftpd.log # vsftpd使用時
/var/log/proftpd.log # ProFTPD使用時
メールサーバーログ
/var/log/maillog # Postfix等
/var/log/mail.log # Ubuntu/Debian系
アクセスログの基本的な見方

tailコマンドでリアルタイムに監視
基本の使い方
tail -f /var/log/nginx/access.log
このコマンドを実行すると、新しいアクセスがあるたびにその行をリアルタイムで確認できます。Ctrl + C
で終了します。
複数のログを同時に監視
tail -f /var/log/nginx/access.log /var/log/nginx/error.log
最新の50行を表示してから監視開始
tail -n 50 -f /var/log/nginx/access.log
過去のログを確認する方法
最初の10行を表示
head /var/log/nginx/access.log
最後の20行を表示
tail -n 20 /var/log/nginx/access.log
ページ単位でスクロール表示
less /var/log/nginx/access.log
less
コマンドでは以下の操作ができます:
- スペースキー:次のページ
- b:前のページ
- /:文字列検索
- q:終了
ログファイルのサイズを確認
ls -lh /var/log/nginx/access.log
大きなログファイルは処理に時間がかかるので、事前にサイズを確認しておくと良いでしょう。
代表的なログフォーマットの読み方
Apacheのアクセスログ例
192.168.1.100 - - [30/Jun/2025:12:34:56 +0900] "GET /index.html HTTP/1.1" 200 1234 "https://example.com" "Mozilla/5.0"
各項目の意味
- 192.168.1.100:アクセス元のIPアドレス
- –:リモートログ名(通常は
-
) - –:認証ユーザー名(認証なしなら
-
) - [30/Jun/2025:12:34:56 +0900]:アクセス日時
- “GET /index.html HTTP/1.1”:HTTPリクエスト内容
- 200:HTTPステータスコード
- 1234:レスポンスサイズ(バイト)
- “https://example.com”:リファラー(参照元URL)
- “Mozilla/5.0”:ユーザーエージェント(ブラウザ情報)
Nginxのアクセスログ例
203.0.113.1 - - [30/Jun/2025:12:34:56 +0900] "GET /api/users HTTP/1.1" 404 162 "-" "curl/7.68.0"
基本的にはApacheと同じ形式ですが、設定によって項目が増減することがあります。
SSHログの例
Jun 30 12:34:56 myserver sshd[12345]: Accepted publickey for user from 192.168.1.100 port 22 ssh2
Jun 30 12:35:10 myserver sudo: user : TTY=pts/0 ; PWD=/home/user ; USER=root ; COMMAND=/bin/ls
重要な項目
- Accepted publickey:SSH認証成功
- Failed password:パスワード認証失敗
- sudo:管理者権限でのコマンド実行
実用的なアクセスログ解析コマンド

特定IPからのアクセス数を調べる
grep "192.168.1.100" /var/log/nginx/access.log | wc -l
特定期間のアクセス数
grep "30/Jun/2025" /var/log/nginx/access.log | grep "192.168.1.100" | wc -l
アクセス数の多いIPアドレスTop10
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -10
特定のステータスコードを調べる
404エラーのみ抽出
grep ' 404 ' /var/log/nginx/access.log
エラーコード別の件数
awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -nr
時間帯別のアクセス解析
時間別アクセス数
awk '{print $4}' /var/log/nginx/access.log | cut -c14-15 | sort | uniq -c
人気ページのランキング
アクセスの多いURLトップ10
awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -10
特定の文字列を含むアクセスを検索
SQLインジェクション攻撃の検出
grep -i "union\|select\|insert\|update\|delete" /var/log/nginx/access.log
ボット・クローラーのアクセス
grep -i "bot\|crawler\|spider" /var/log/nginx/access.log
日付範囲でログを絞り込む
sedを使った日付範囲指定
特定の1日のログのみ
sed -n '/30\/Jun\/2025/p' /var/log/nginx/access.log
特定時間帯のログ(12時台)
sed -n '/30\/Jun\/2025:12:/p' /var/log/nginx/access.log
awkを使ったより柔軟な検索
特定時間以降のアクセス
awk '$4 >= "[30/Jun/2025:12:00:00" && $4 <= "[30/Jun/2025:18:59:59"' /var/log/nginx/access.log
ログファイルが大きい場合の対処法

ログローテーションの確認
ls -la /var/log/nginx/
通常、ログは自動的にローテーション(日付別分割)されます:
access.log
:現在のログaccess.log.1
:1日前のログaccess.log.2.gz
:2日前のログ(圧縮済み)
圧縮されたログの確認
# 圧縮ログの中身を確認
zcat /var/log/nginx/access.log.2.gz | head
# 圧縮ログから検索
zgrep "192.168.1.100" /var/log/nginx/access.log.*.gz
大きなファイルの効率的な処理
ファイルサイズが大きい場合の分割処理
split -l 100000 /var/log/nginx/access.log access_part_
セキュリティ監視でよく使うコマンド
不正アクセスの検出
ブルートフォース攻撃の検出
grep "Failed password" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr
短時間に大量アクセスしているIP
awk '{print $4, $1}' /var/log/nginx/access.log | grep "30/Jun/2025:12:" | awk '{print $2}' | sort | uniq -c | sort -nr | head -5
異常なUser-Agentの検出
awk -F\" '{print $6}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -10
アクセス元の地理的分析
外部IPアドレスの確認
awk '{print $1}' /var/log/nginx/access.log | grep -E '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$' | grep -v "^192\.168\." | grep -v "^10\." | grep -v "^172\." | sort | uniq -c | sort -nr
よくある質問

Q:ログファイルが見つからない場合はどうすればいいですか?
A:設定ファイルでログの出力先を確認してください。Apache なら/etc/httpd/conf/httpd.conf
、Nginxなら/etc/nginx/nginx.conf
を確認しましょう。
Q:ログの容量が心配です。自動削除される設定になっていますか?
A:通常はlogrotate
で自動管理されています。/etc/logrotate.d/
ディレクトリの設定を確認してください。
Q:リアルタイムでアクセス数をカウントしたいのですが?
A:tail -f
とwc -l
を組み合わせるか、専用ツール(GoAccess、awstats等)の使用をおすすめします。
Q:ログから個人情報を除外したいのですが?
A:IPアドレスを匿名化する設定や、特定の情報を記録しない設定が可能です。各Webサーバーの設定ファイルで調整できます。
まとめ:アクセスログでサーバーを守ろう
この記事で紹介した主要コマンド
目的 | コマンド例 |
---|---|
リアルタイムでログ監視 | tail -f /var/log/nginx/access.log |
過去のログをじっくり確認 | less /var/log/nginx/access.log |
IPごとのアクセス件数 | grep "IP" ログファイル | wc -l |
エラーコードだけを抽出 | grep ' 404 ' /var/log/nginx/access.log |
アクセス数Top10のIP | awk '{print $1}' ログファイル | sort | uniq -c | sort -nr | head -10 |
人気ページランキング | awk '{print $7}' ログファイル | sort | uniq -c | sort -nr | head -10 |
覚えておくべきポイント
- WebサーバーログとSSHログは分けて管理されている
- tail -fでリアルタイム監視ができる
- grepとawkの組み合わせで柔軟な解析が可能
- ログローテーションで古いログは自動的に圧縮・削除される
- セキュリティ監視には定期的なログチェックが重要
アクセスログはサーバー運用やセキュリティ対策の第一歩です。これらの方法を使って、あなたのLinuxサーバーを安全に運用してください。
コメント