CentOS 7のログ管理「journald」
フォワード・セキュア・シーリングとQRコードの生成
フォワード・セキュア・シーリング(Forward Secure Sealing:FSS)と呼ばれる技術を使って、ジャーナルの一貫性の確認を行うことが可能です。定期的に自動生成されるキーを使い、ログの完全性検証を行うことが可能です。一般的に、侵入者は、Linuxシステムに保管されているログの履歴を改変しようとします。しかしこのキーを使えば、この改変をチェックすることができ、システムへの侵入検知にも有用です。具体的には、事前に検証用のキーを生成しておき、そのキーを意味するQRコードを管理者の携帯電話やスマートフォンに保管しておきます。検証時には、管理者の携帯電話やスマートフォンに保管しておいた文字列を、journalctlコマンドで読み込ませ、ログが改変されていないかをチェックするという流れになります。ただし、CentOS 7のアップストリームOSであるRHEL 7においてもテクノロジープレビューに位置づけられているため、正常な動作が保証されているわけではありません。あくまで挙動の確認やテスト目的で利用して下さい。以下では、具体的に、検証用のキーを含むQRコードの生成手順とログの完全性の検証方法を示します。
まず、キーペアを生成します。このキーペアは、ジャーナルのシーリングに利用するキーです。
# journalctl --setup-keys --force
上記コマンドにより、「シーリング鍵」が、ローカルシステムのディレクトリ/var/log/journalディレクトリ配下に格納されます。シーリング鍵は15分毎に自動的に更新されます。この鍵は、複数のホストで共用して利用して利用することは避けて下さい。さらに、検証鍵が赤い文字列で表示されています。この文字列を書きとめておきます。この文字列は、ローカルシステムのディスク上に保管することは避けて下さい。検証鍵を示すQRコードを管理者の携帯電話やスマートフォンで読み取り、表示されたシーリング鍵と検証鍵の文字列を保管しておいて下さい。システムに記録されているジャーナルの完全性の検証は、journalctlコマンドに、「--verify-key」オプションを付与し、検証鍵の文字列を指定します。
# journalctl --verify-key ee2e0e-045220-a3cec8-f111f8/17ec78-35a4e900
もし、ジャーナルの完全性が示された場合は、「PASS」と表示されます。
システム全体の様々なログと設定ファイルをまとめて収集するsosreport
Linuxシステムで管理されるログには、様々な種類が存在しますが、それらのログを一つ一つ手動で収集するのは非効率です。また、ログだけでなくその時の設定ファイルも証拠として保管しておきたい場合が少なくありません。このような場合、ログや設定ファイルを一括して取得するスクリプトを登録しておくことも有用ですが、CentOS 7では、それ専用のsosreportコマンドが用意されており、システム全体のログと設定ファイルを簡単に一括取得することが可能です。以下では、sosreportコマンドを使ったログと設定ファイルの取得手順を示します。
sosreportコマンドは、sosパッケージに含まれていますので、インストールされていない場合は、yumコマンドでインストールします。
# yum install -y sos
sosreportコマンドにより、ログと設定ファイルを収集します。
# sosreport -a --report ←「--report」オプションを付与し、HTMLファイルを生成 sosreport (version 3.0) This command will collect diagnostic and configuration information from this CentOS Linux system and installed applications. An archive containing the collected information will be generated in /var/tmp and may be provided to a CentOS support representative. Any information provided to CentOS will be treated in accordance with the published support policies at: https://www.centos.org/ The generated archive may contain data considered sensitive and its content should be reviewed by the originating organization before being passed to any third party. No changes will be made to system configuration. Press ENTER to continue, or CTRL-C to quit.
上記のように「Press ENTER to continue, or CTRL-C to quit.」が表示されたら、ENTERキーを押します。すると、以下のように、名称の入力が促されます。
Please enter your first initial and last name [centos70n02]:
このままでよければ、ENTERキーを押します。次に、sosreportコマンドが生成するレポートのケースナンバーの入力が促されます。
Please enter the case number that you are generating this report for:
このままでよければ、ENTERキーを押します。すると、sosreportコマンドがCentOS 7がインストールされたシステム全体に渡ってログと設定ファイルを収集します。しばらくすると、以下のように、ログと設定ファイルがアーカイブされたファイルが生成された旨のメッセージが表示されます。
Your sosreport has been generated and saved in: /var/tmp/sosreport-centos70n02-20141022103807.tar.xz The checksum is: 5db1b518fff2539042f0f94ab3489d96 Please send this file to your support representative.
上記のsosreport-centos70n02-20141022101820.tar.xzをtarコマンドで展開し、中身を見てみましょう。
# pwd /root # tar xJvf /var/tmp/sosreport-centos70n02-20141022103807.tar.xz -C . # ls -F anaconda-ks.cfg initial-setup-ks.cfg sosreport-centos70n02-20141022103807/ # cd sosreport-centos70n02-20141022103807/ # ls -F boot/ dmidecode@ installed-rpms@ lsmod@ netstat@ root/ sos_commands/ uname@ version.txt chkconfig@ etc/ ip_addr@ lsof@ proc/ route@ sos_logs/ uptime@ vgdisplay@ date@ free@ java@ lspci@ ps@ rpm-Va@ sos_reports/ usr/ df@ hostname@ lib/ mount@ pstree@ run/ sys/ var/
様々なログファイルや設定ファイル、そしてコマンドの出力結果がディレクトリ毎に整理されて記録されています。sosreportコマンドは、--reportオプションを付与して実行すると、取得したログや設定ファイル等をWebブラウザで簡単に閲覧することが可能なHTMLファイルを生成します。HTMLファイルは、上記アーカイブ内のsos_reportsディレクトリに保管されています。今回は、sosreportコマンドを実行した管理対象サーバー上に、Webサーバーを起動し、遠隔にある管理者のパソコンからsosreportのアーカイブを展開した中身をWebブラウザで閲覧できるようにしてみましょう。まず、展開したアーカイブファイルを/var/www/htmlに移動します。
# cd # ls -F anaconda-ks.cfg initial-setup-ks.cfg sosreport-centos70n02-20141022103807/ # mv sosreport-centos70n02-20141022103807 /var/www/html/
ログを収集した管理対象サーバー上で、Apache Webサーバーを起動します。
# systemctl start httpd
ファイアウォールの設定を行います。遠隔にある管理者のPCと通信を行うLANセグメントを確認します。
# firewall-cmd --list-all public (default, active) interfaces: ens7 eth0 sources: services: dhcpv6-client nfs ssh ports: 514/udp masquerade: no forward-ports: icmp-blocks: rich rules:
上記結果より、今回は、publicに所属するLANセグメントについてHTTPサービスを許可します。今回は、HTTPサービスの提供するゾーンとしてpublicを選択していますが、実際には、ログの盗聴等を考慮し、暗号化されたセキュアな通信経路を考慮して下さい。
# firewall-cmd --zone=public --add-service=http --permanent # firewall-cmd --reload
これで、HTTPを使って/var/www/htmlディレクトリ配下のファイルをクライアントに閲覧できるようになりました。次に、/var/www/htmlディレクトリに移動させたsosreportのディレクトリのパーミッションを変更します。
# cd /var/www/html/ # chmod 755 ./sosreport-centos70n02-20141022103807 # cd ./sosreport-centos70n02-20141022103807 # chmod -R 655 ./sos_commands # chmod -R 655 ./sos_logs # chmod -R 655 ./sos_reports
以上で、遠隔のPCからsosreportコマンドで取得したログや設定ファイル等をWebブラウザで確認することができます。
以上、CentOS 7におけるログ管理を紹介しました。従来のrsyslogによる管理と比較すると、journaldは、豊富なフィルタリング機能が提供されており、ログの管理性が向上しています。また、システムの保守に関わる部門では、sosreportなどのログ及び設定ファイルの収集ツールが重宝されています。ログの管理を効率的に行い、日々の運用やトラブル時の保守サポートに役立ててみて下さい。
<編集部より>コマンドの実行手順を一部修正しました(2015/1/15)
この連載が書籍になりました! | |
---|---|
古賀 政純 著 |
CentOS 7実践ガイド本書は、CentOS 7を取り巻く市場動向、CentOS 7が利用されるサーバーシステムの選定、CentOS 7の基礎、システム設計、OS管理やCentOS 7に対応したアプリケーションサーバーの構築手順などの勘所をご紹介します。連載では書ききれなかった本の内容、見どころが満載!
|