目次
はじめに:なぜLinuxサーバのログ管理がIT監査で重要なのか
IT監査において、Linuxサーバのログ取得・監視設定は避けて通れない重要な確認項目です。ログは「システムの証跡」であり、セキュリティインシデントの発生時には原因究明の唯一の手がかりとなることも少なくありません。
近年、サイバー攻撃の高度化やコンプライアンス要件の厳格化に伴い、適切なログ管理の重要性は年々高まっています。金融庁の「金融機関のITガバナンスに関する対話のためのオブザベーション」や、経済産業省の「サイバーセキュリティ経営ガイドライン」においても、ログの適切な取得・保管・監視は重要な管理策として位置づけられています。
本記事では、IT監査の実務担当者向けに、Linuxサーバのログ取得・監視設定において確認すべきポイントを具体的に解説します。監査を受ける側のシステム管理者の方にとっても、事前準備のチェックリストとして活用いただける内容となっています。
背景・概要:Linuxログ管理の基本を理解する
Linuxにおけるログの種類と役割
Linuxシステムでは、様々なログが生成されています。IT監査において特に重要なログは以下の通りです。
| ログの種類 | 主な格納場所 | 記録される内容 |
|---|---|---|
| システムログ | /var/log/syslog または /var/log/messages | OS全般のイベント、サービスの起動・停止 |
| 認証ログ | /var/log/auth.log または /var/log/secure | ログイン試行、sudo実行、認証関連 |
| カーネルログ | /var/log/kern.log | カーネルメッセージ、ハードウェア関連 |
| 監査ログ | /var/log/audit/audit.log | auditdによる詳細な操作記録 |
| アプリケーションログ | 各アプリケーション固有 | Webサーバ、DB、ミドルウェア等のログ |
rsyslogとjournaldの違い
現代のLinuxディストリビューションでは、主に2つのログ管理システムが使用されています。
rsyslogは、従来からあるsyslogの拡張版で、テキストベースのログファイルを生成します。設定ファイルは/etc/rsyslog.confにあり、柔軟なフィルタリングやリモート転送が可能です。
systemd-journaldは、systemdに統合されたログ管理機能で、バイナリ形式でログを保存します。journalctlコマンドで参照でき、メタデータの豊富さが特徴です。
多くの環境では、両者が併用されており、journaldで収集したログをrsyslog経由でファイル出力するという構成が一般的です。
IT監査におけるログ管理の位置づけ
IT監査フレームワークにおいて、ログ管理は以下の領域に関連します。
- COBIT 2019: DSS05(セキュリティサービスの管理)、MEA01(性能とコンプライアンスの監視)
- ISO 27001:2022: A.8.15(ログ取得)、A.8.16(監視活動)
- NIST CSF: DE.CM(セキュリティ継続的モニタリング)、DE.AE(異常とイベント)
これらのフレームワークに基づき、ログ管理の適切性を評価することが求められます。
具体的な確認ポイント:IT監査で押さえるべき8項目
ポイント1:ログ取得対象の網羅性を確認する
確認の目的:セキュリティ上重要な操作やイベントがすべて記録されているかを検証します。
確認すべき項目:
認証関連イベント
- ログイン成功・失敗(ローカル、SSH、コンソール)
- sudo実行とその結果
- パスワード変更、アカウントロック
特権操作
- root権限での操作
- 重要な設定ファイルの変更
- サービスの起動・停止
ファイルアクセス
- 機密データへのアクセス
- システム設定ファイルの変更
- 実行ファイルの変更
実務での確認方法:
# rsyslogの設定確認
cat /etc/rsyslog.conf | grep -v "^#" | grep -v "^$"
# auditdのルール確認
auditctl -l
# journaldの設定確認
cat /etc/systemd/journald.conf
監査上の着眼点:
- ログ取得ポリシーが文書化されているか
- ポリシーと実際の設定に乖離がないか
- 新規サービス追加時のログ設定手順が定められているか
ポイント2:ログの保存期間と容量管理を検証する
確認の目的:法規制やポリシーで定められた期間、ログが保存されていることを確認します。
一般的な保存期間の目安:
| 業界・規制 | 推奨保存期間 |
|---|---|
| 金融機関(FISC安対基準) | 最低1年、重要なものは7年 |
| PCI DSS | 最低1年(直近3ヶ月は即時参照可能) |
| 一般企業(ベストプラクティス) | 最低90日〜1年 |
| 法的証拠保全 | 事案に応じて3〜10年 |
確認すべき設定:
# logrotateの設定確認
cat /etc/logrotate.conf
cat /etc/logrotate.d/*
# 実際のログファイルの保存状況
ls -la /var/log/
ls -la /var/log/audit/
# journaldの保存設定
journalctl --disk-usage
cat /etc/systemd/journald.conf | grep -E "^(SystemMaxUse|MaxRetentionSec)"
logrotate設定例の評価ポイント:
/var/log/auth.log {
weekly # ローテーション頻度
rotate 52 # 保存世代数(52週=1年分)
compress # 圧縮の有無
delaycompress # 圧縮タイミング
missingok # ファイル欠落時の動作
notifempty # 空ファイルの扱い
}
監査上の着眼点:
- 保存期間がポリシーを満たしているか
- ディスク容量不足でログが消失するリスクはないか
- 圧縮・アーカイブの運用は適切か
ポイント3:ログの改ざん防止対策を評価する
確認の目的:ログの真正性が担保され、事後的な改ざんが困難であることを確認します。
改ざん防止の主な方法:
- ファイルパーミッションの適切な設定
# ログファイルのパーミッション確認
ls -la /var/log/auth.log
# 推奨: -rw-r----- (640) または -rw------- (600)
# ログディレクトリのパーミッション確認
ls -ld /var/log/audit/
# 推奨: drwx------ (700)
- immutable属性の設定(高セキュリティ環境)
# immutable属性の確認
lsattr /var/log/audit/audit.log
# "i"フラグがあれば削除・変更不可
- リモートログサーバへの転送
# rsyslogでのリモート転送設定確認
grep -E "^(\*\.\*|auth\.\*)" /etc/rsyslog.conf | grep "@"
- ログの署名・ハッシュ化
auditdのDispatcher機能を使用した完全性検証や、外部ツール(OSSEC、Tripwireなど)との連携を確認します。
監査上の着眼点:
- ログファイルへの書き込み権限は最小限か
- root権限を持つ管理者でも改ざんが困難な仕組みがあるか
- リモートログサーバが存在する場合、そのセキュリティは担保されているか
ポイント4:auditdの設定を詳細に確認する
確認の目的:Linux監査システム(auditd)が適切に設定され、重要な操作が記録されていることを確認します。
auditdとは: auditdは、Linuxカーネルレベルで動作する監査システムです。システムコールレベルでの詳細な操作記録が可能であり、コンプライアンス要件を満たすために不可欠なコンポーネントです。
確認すべき設定ファイル:
# auditd.confの主要設定
cat /etc/audit/auditd.conf
重要なパラメータ:
max_log_file: ログファイルの最大サイズ(MB)max_log_file_action: 最大サイズ到達時の動作space_left_action: ディスク容量低下時の動作admin_space_left_action: 管理者介入が必要な場合の動作
推奨されるauditルールの例:
# /etc/audit/rules.d/audit.rules の内容確認
# 時刻変更の監視
-a always,exit -F arch=b64 -S adjtimex -S settimeofday -k time-change
# ユーザー・グループ変更の監視
-w /etc/passwd -p wa -k identity
-w /etc/group -p wa -k identity
-w /etc/shadow -p wa -k identity
# sudoers変更の監視
-w /etc/sudoers -p wa -k sudo-change
-w /etc/sudoers.d/ -p wa -k sudo-change
# ネットワーク設定変更の監視
-w /etc/hosts -p wa -k network-change
-w /etc/network/ -p wa -k network-change
# 特権コマンドの監視
-a always,exit -F path=/usr/bin/passwd -F perm=x -k privileged-passwd
-a always,exit -F path=/usr/bin/sudo -F perm=x -k privileged-sudo
ルールの意味:
-w: ファイル/ディレクトリの監視-p wa: 書き込み(w)と属性変更(a)を監視-k: 検索用のキー(タグ)-a always,exit: システムコール終了時に常に記録
監査上の着眼点:
- auditdサービスは起動しているか(
systemctl status auditd) - ルールは再起動後も永続化されているか(rules.d/ディレクトリ配下に配置)
- CIS Benchmarkなどの標準に沿ったルールが設定されているか
ポイント5:ログの集中管理とSIEM連携を確認する
確認の目的:複数サーバのログが一元管理され、相関分析が可能な状態であることを確認します。
集中管理の重要性:
- 個別サーバが侵害された場合のログ消失リスク軽減
- 複数システム間の相関分析によるインシデント検知
- 監査証跡の一元的な保全
確認すべき構成要素:
- ログ転送の設定(送信側)
# rsyslogでの転送設定
cat /etc/rsyslog.conf | grep -E "^(\*\.\*|auth)" | grep "@"
# 例: *.* @@192.168.1.100:514
# @: UDP転送、@@: TCP転送
- ログ受信サーバの設定(受信側)
# リスニング設定の確認
cat /etc/rsyslog.conf | grep -E "^(module|input)"
# 例:
# module(load="imtcp")
# input(type="imtcp" port="514")
- SIEM(Security Information and Event Management)連携
一般的なSIEM製品とLinuxログの連携確認:
- Splunk: Splunk Universal Forwarderの設定
- Elastic Stack: Filebeat/Auditbeatの設定
- IBM QRadar: Log Sourceの設定
- Microsoft Sentinel: Azure Monitor Agentの設定
監査上の着眼点:
- ログ転送の通信は暗号化されているか(TLS)
- 転送失敗時のログ喪失対策はあるか(キューイング機能)
- SIEMでのログ取り込み状況は定期的に監視されているか
- 転送遅延は許容範囲内か(リアルタイム性の要件確認)
ポイント6:アラートと異常検知の仕組みを評価する
確認の目的:セキュリティ上の異常が適切に検知され、担当者に通知される仕組みがあることを確認します。
検知すべきイベントの例:
| カテゴリ | 具体的なイベント | 閾値の目安 |
|---|---|---|
| 認証異常 | SSH認証失敗 | 5回/5分で同一IP |
| 認証異常 | sudo失敗 | 3回/10分で同一ユーザー |
| 特権操作 | root権限でのファイル変更 | 重要ファイル変更時は即時 |
| 可用性 | ディスク使用率 | 80%超過で警告、90%超過で緊急 |
ローカルでの検知設定例(fail2ban):
# fail2banの設定確認
cat /etc/fail2ban/jail.local
# SSHの設定例
# [sshd]
# enabled = true
# maxretry = 5
# findtime = 600
# bantime = 3600
auditdベースのアラート(ausearch/aureport):
# 認証失敗の確認
aureport -au --failed
# 特定期間の異常確認
ausearch -ts recent -m USER_LOGIN -sv no
監査上の着眼点:
- アラートの閾値は適切に設定されているか
- 通知先は複数名に設定され、確実に届くか
- アラートの優先度付けとエスカレーションルールはあるか
- 誤検知(False Positive)への対応手順はあるか
ポイント7:ログのバックアップとリストア手順を確認する
確認の目的:障害や攻撃によるログ消失に備えた対策が講じられていることを確認します。
バックアップの観点:
- バックアップの頻度と方法
# cronジョブでのバックアップ確認
crontab -l
cat /etc/cron.d/*
# バックアップスクリプトの例
# 0 2 * * * /usr/local/bin/log-backup.sh
- バックアップ先の確認
# バックアップ先の存在確認
ls -la /backup/logs/
# リモートバックアップの場合
cat /etc/rsyncd.conf
- リストア手順の文書化と検証
- リストア手順書が存在するか
- 定期的なリストアテストが実施されているか
- リストアに要する時間(RTO)は把握されているか
監査上の着眼点:
- バックアップは本番サーバとは別の場所に保存されているか
- バックアップからのリストア手順は定期的にテストされているか
- バックアップの世代管理は適切か(保存期間との整合性)
ポイント8:運用手順とドキュメントの整備状況を確認する
確認の目的:ログ管理が属人化せず、継続的に運用可能な状態であることを確認します。
確認すべきドキュメント:
ログ管理ポリシー
- ログ取得対象の定義
- 保存期間の規定
- アクセス権限の規定
運用手順書
- 日常的なログ確認手順
- ログローテーションの確認手順
- 容量監視の手順
インシデント対応手順
- ログの保全手順(証拠保全)
- 分析手順とツール
- エスカレーションフロー
変更管理記録
- ログ設定の変更履歴
- 承認プロセスの記録
監査上の着眼点:
- ドキュメントは最新の状態に保たれているか
- 定期的なレビューが実施されているか
- 担当者の交代時の引継ぎ手順はあるか
- 外部監査や規制当局への提出に耐えうる品質か
よくある質問(FAQ)
Q1:ログの保存期間は最低どのくらい必要ですか?
A1:業界や適用される規制によって異なりますが、一般的な目安は以下の通りです。
最低限の推奨保存期間:
- 認証ログ(auth.log/secure):1年以上
- システムログ(syslog/messages):90日〜1年
- 監査ログ(audit.log):1年以上
- アプリケーションログ:用途に応じて90日〜1年
業界別の要件例:
- 金融機関(FISC安対基準):重要なログは7年保存が求められるケースあり
- PCI DSS準拠環境:最低1年、直近3ヶ月は即時参照可能な状態
- 医療機関(HIPAA):6年間の保存義務
- 上場企業(J-SOX対応):内部統制の証跡として7年程度を推奨
実務上のポイントとして、ログの保存期間を決定する際は、法規制要件だけでなく、以下の観点も考慮してください:
- インシデント調査への対応:高度な攻撃は発見まで平均200日以上かかるとされるため、最低でも1年分のログがあることが望ましい
- 訴訟対応:法的紛争が発生した場合の証拠保全期間
- コスト:ストレージコストとのバランス(圧縮・階層化ストレージの活用検討)
Q2:auditdとrsyslogの両方を使う必要がありますか?
A2:はい、両方を適切に使い分けることを推奨します。それぞれ役割と特徴が異なるためです。
rsyslog(syslog)の特徴:
- サービスやアプリケーションが自発的に出力するログを収集
- 設定が比較的シンプル
- テキストベースで可読性が高い
- リモート転送機能が豊富
auditdの特徴:
- カーネルレベルでのシステムコール監視
- ユーザーの意図に関係なく、操作を強制的に記録
- より詳細な情報(プロセスID、引数など)を取得可能
- コンプライアンス要件(PCI DSS、HIPAA等)への対応に必須
使い分けの指針:
| 用途 | 推奨されるシステム |
|---|---|
| 一般的なシステムイベント | rsyslog |
| アプリケーションログ | rsyslog |
| 認証イベントの詳細追跡 | auditd |
| ファイルアクセスの監視 | auditd |
| コンプライアンス対応 | auditd(必須)+ rsyslog |
セキュリティ要件が高い環境では、両方を有効化し、auditdのログもrsyslog経由でリモートサーバに転送する構成が一般的です。
Q3:IT監査でログ設定の不備を指摘された場合、何から対応すべきですか?
A3:指摘事項の内容と重要度によりますが、以下の優先順位で対応することを推奨します。
優先度1(即座に対応):セキュリティに直結する問題
- ログが全く取得されていない
- 認証ログが無効になっている
- ログファイルの権限が不適切(全員が書き込み可能など)
対応例:
# rsyslogサービスの確認と有効化
systemctl status rsyslog
systemctl enable --now rsyslog
# auditdの有効化
systemctl enable --now auditd
優先度2(1週間以内に対応):ポリシー違反の問題
- 保存期間がポリシーを満たしていない
- 必要なログ種別が取得されていない
- アラート設定が不十分
対応例:
# logrotate設定の修正
vi /etc/logrotate.d/rsyslog
# rotate 4 → rotate 52(保存期間を1年に延長)
優先度3(1ヶ月以内に対応):運用・文書化の問題
- 手順書が存在しない
- 設定変更の記録がない
- 定期的なレビューが実施されていない
対応のステップ:
- 指摘事項の正確な理解と影響範囲の特定
- 是正計画の策定(期限、担当者、具体的な対応内容)
- 変更管理プロセスに従った設定変更
- 変更後のテストと検証
- ドキュメントの更新
- 監査人への是正完了報告
重要なのは、単に設定を修正するだけでなく、再発防止の仕組みを構築することです。定期的なセルフ監査やチェックリストの導入を検討してください。
まとめ:IT監査に備えたLinuxログ管理のチェックリスト
本記事で解説した内容を、IT監査に備えたチェックリストとしてまとめます。
ログ取得に関するチェック項目
- rsyslogまたはsyslog-ngが有効化されている
- auditdが有効化され、ルールが設定されている
- journaldの設定が適切である(必要に応じて永続化)
- 認証ログ(auth.log/secure)が取得されている
- 特権操作(sudo等)が記録されている
- 重要ファイルへのアクセスが監視されている
ログ保存に関するチェック項目
- 保存期間がポリシー・規制要件を満たしている
- logrotateが適切に設定されている
- ディスク容量の監視とアラートが設定されている
- バックアップが取得されている
- リストア手順が文書化・テストされている
ログ保護に関するチェック項目
- ログファイルの権限が適切である(640以下)
- ログディレクトリの権限が適切である(750以下)
- リモートログサーバへの転送が設定されている
- 転送は暗号化されている(TLS)
ログ監視に関するチェック項目
- SIEM等への連携が設定されている
- 異常検知のルールが定義されている
- アラート通知先が設定・テストされている
- 定期的なログレビューが実施されている
運用・ドキュメントに関するチェック項目
- ログ管理ポリシーが文書化されている
- 運用手順書が整備されている
- インシデント対応手順が定義されている
- 設定変更の記録が残されている
- 定期的なセルフ監査が実施されている
おわりに
Linuxサーバのログ取得・監視設定は、IT監査における重要な確認項目であり、セキュリティとコンプライアンスの両面で欠かせない管理策です。
本記事で解説した8つのポイントを押さえることで、IT監査への対応力を高めるとともに、実際のセキュリティインシデント発生時にも適切に対処できる体制を構築できます。
特に重要なのは、ログは「取得して終わり」ではなく、適切に保存し、監視し、必要時に活用できる状態を維持することです。日常的な運用の中でログ管理の品質を維持し、定期的なセルフ監査を通じて改善を続けてください。
本記事が、皆様のIT監査対応とセキュリティ強化の一助となれば幸いです。
IT監査 セキュリティ