CentOS 7のログ管理「journald」

2014年12月18日(木)
古賀 政純

フォワード・セキュア・シーリングとQRコードの生成

フォワード・セキュア・シーリング(Forward Secure Sealing:FSS)と呼ばれる技術を使って、ジャーナルの一貫性の確認を行うことが可能です。定期的に自動生成されるキーを使い、ログの完全性検証を行うことが可能です。一般的に、侵入者は、Linuxシステムに保管されているログの履歴を改変しようとします。しかしこのキーを使えば、この改変をチェックすることができ、システムへの侵入検知にも有用です。具体的には、事前に検証用のキーを生成しておき、そのキーを意味するQRコードを管理者の携帯電話やスマートフォンに保管しておきます。検証時には、管理者の携帯電話やスマートフォンに保管しておいた文字列を、journalctlコマンドで読み込ませ、ログが改変されていないかをチェックするという流れになります。ただし、CentOS 7のアップストリームOSであるRHEL 7においてもテクノロジープレビューに位置づけられているため、正常な動作が保証されているわけではありません。あくまで挙動の確認やテスト目的で利用して下さい。以下では、具体的に、検証用のキーを含むQRコードの生成手順とログの完全性の検証方法を示します。

まず、キーペアを生成します。このキーペアは、ジャーナルのシーリングに利用するキーです。

# journalctl --setup-keys --force

図2:検証鍵が赤い文字で表示されている。QRコードを携帯電話やスマートフォンで読み取り、文字列を記録しておく(クリックで拡大)

上記コマンドにより、「シーリング鍵」が、ローカルシステムのディレクトリ/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ブラウザで確認することができます。

図3:sosreportを実行した管理対象サーバー上でWebサーバーを稼働させることで、ログ、設定ファイル、コマンド実行結果等をHTTP経由でクライアントに提供する。管理者は、これらのログファイル等を遠隔からマウス操作で確認できる(クリックで拡大)

以上、CentOS 7におけるログ管理を紹介しました。従来のrsyslogによる管理と比較すると、journaldは、豊富なフィルタリング機能が提供されており、ログの管理性が向上しています。また、システムの保守に関わる部門では、sosreportなどのログ及び設定ファイルの収集ツールが重宝されています。ログの管理を効率的に行い、日々の運用やトラブル時の保守サポートに役立ててみて下さい。

<編集部より>コマンドの実行手順を一部修正しました(2015/1/15)

この連載が書籍になりました!
CentOS 7実践ガイド

古賀 政純 著
価格:3,000円+税
発売日:2015年2月25日発売
ISBN:978-4-8443-3753-9
発行:インプレスジャパン

CentOS 7実践ガイド

本書は、CentOS 7を取り巻く市場動向、CentOS 7が利用されるサーバーシステムの選定、CentOS 7の基礎、システム設計、OS管理やCentOS 7に対応したアプリケーションサーバーの構築手順などの勘所をご紹介します。連載では書ききれなかった本の内容、見どころが満載!

  • セキュリティ管理
  • チューニング
  • 自動インストール
  • Hadoop構築
  • GlusterFS
  • Ceph

Amazon詳細ページへImpress詳細ページへ

日本ヒューレット・パッカード株式会社 プリセールス統括本部 ソリューションセンター OSS・Linux担当 シニアITスペシャリスト

兵庫県伊丹市出身。1996年頃からオープンソースに携わる。2000年よりUNIXサーバーのSE及びスーパーコンピューターの並列計算プログラミング講師を担当。科学技術計算サーバーのSI経験も持つ。2005年、大手製造業向けLinuxサーバー提案で日本HP社長賞受賞。2006年、米国HPからLinux技術の伝道師に与えられる「OpenSource and Linux Ambassador Hall of Fame」を2年連続受賞。日本HPプリセールスMVPを4度受賞。現在は、Linux、FreeBSD、Hadoop等のOSSを駆使したスケールアウト型サーバー基盤のプリセールスSE、技術検証、技術文書執筆を担当。日本HPのオープンソース・Linuxテクノロジーエバンジェリストとして講演活動も行っている。Red Hat Certified Engineer、Red Hat Certified Virtualization Administrator、Novell Certified Linux Professional、EXIN Cloud Computing Foundation Certificate、HP Accredited Systems Engineer Cloud Architect、Red Hat Certified System Administrator in Red Hat OpenStack、Cloudera Certified Administrator for Apache Hadoop認定技術者。HP公式ブログ執筆者。趣味はレーシングカートとビリヤード

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています