IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

クラウド時代のサーバー運用入門

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes 

第10回 クラウド時代の障害対応術 (9) ログは口ほどに物を言う (濱田康貴) 2018年9月

みなさんこんにちは。最近、若手エンジニアと仕事をする機会の多い濱田です。今までは「ある程度できた上での効率化」「さらなる品質向上」を観点としたコラムをお届けしましたが、改めて基本に立ち返ってオペレーションの質を上げる方法を取り上げてみたいと思います。

作業ログ取得の重要性

WEBサーバーのアクセスログや/var/log/messagesなどのシステムログの重要性は言うにおよばず、日ごろの心がけとして作業ログ取得は重要です。では何故作業ログの取得が重要なのでしょう。主に、以下3つの目的があります。

  1. 作業品質向上・障害調査の迅速化
  2. 不正防止・抑止
  3. 規制上の記録義務

これらの目的をもってログ取得の仕組みを構築するか、ルール化することにより、より信頼性の高いサービスを提供することが可能になります。

作業品質向上・障害調査の迅速化

そもそも何故作業ログを取得する必要があるのか、という理由づけにもつながるのですが、作業ログがあることで自らの作業を説明しやすくなるというメリットがあります。重要度の低いサービスや障害時の社会的インパクトが低いサービスであればあまり厳しい要求は求められませんが、個人情報を取り扱うサービスや金融機関などのサービスを扱う場合、作業ログの取得が義務付けられることがあります(詳細は「規制上の記録義務」で詳しく触れます)。

しかし、ミッションクリティカルなサービスでなくても、普段から作業ログ取得を行うことで、作業品質の向上と障害調査の迅速化を行うことが可能になります。作業ログ取得が何故作業品質向上に繋がるか、を噛み砕きますと

  1. 作業後に操作ログが残るという意識が注意力向上に繋がる(ただし、ログ取得を行っている意識をもっていることが前提)。
  2. 作業ログから繰り返し作業のコピーアンドペーストが可能になり、ひいてはスクリプト化することで手作業をなくすことができる。
  3. ログイン履歴と突き合わせることにより、人為障害か否かの切り分けが迅速化できる。

主にこれらのメリットがあります。1番はどちらかと言えば意識の問題ですので、あまりオペレーションに慣れていないメンバー向けの施策になります。2番目と3番目については、もう1歩踏み込んだログ活用という観点になります。

不正防止・抑止

ログを取得していることを周知することにより、心理的に不正防止・抑止に繋がることが期待できます。JNSA (特定非営利活動法人 日本ネットワークセキュリティ協会) が発表した「2017年 情報セキュリティインシデントに関する調査報告書【速報版】」によると、2017年の個人情報漏えいインシデントの分析結果のうち、内部犯罪・内部不正行為は8件、全体の2.1%でした。

fig01

しかし、盗難や不正な情報持ち出し、誤操作や管理ミスなども含めると、情報漏えいのほとんどが人為ミスや不注意に起因し、バグ・セキュリティホールが5件(1.3%)、ワーム・ウィルスが2件(0.5%)と大変低い割合となっています。
設定ミスに関してはログを採るだけでは防ぐことは困難ですが、情報漏えいの原因で大きな割合を占める不正行為については、人間の心理(悪意)に訴えかける手段として、操作ログを採っていることを公言することで、かなりの効果を挙げることが期待できると言えるでしょう。

規制上の記録義務

PCI DSS 《Payment Card Industry(PCI)データセキュリティ基準(DSS)》はペイメント業界におけるグローバルセキュリティ基準です。カード会社のみならず加盟店もPCI DSS準拠を求められており、セキュリティ基準のデファクトスタンダードと言えましょう。
2016年4月に発表されたPCI DSS v3.2 の要件10「ネットワークリソースおよびカード会員データへのすべてのアクセスを追跡および監視する」では、ロギングに関する要件が詳細に書かれています。また、単にログを取得するだけでなく、時刻同期を行うことや監査証跡ファイルを不正な変更から保護するなど、ログの信頼性を担保するための要件も盛り込まれています。

CTC教育サービスでは、PCI DSS解説コースを開講していますので、PCI DSSを理解するうえで必要な基本的知識の習得や、PCI DSSについておさえておくべきポイントを学ぶことができます。金融機関の案件に携わる方やサービス開発をされる方には是非受講していただければと思います。

どう採る?作業ログ

作業ログ取得の重要性について理解したところで、どうやって作業ログを取得するかについて掘り下げてみたいと思います。ログを取得する方法はいくつかありますが、シェルやSSHクライアントの標準機能でできる機能からご紹介します。

historyコマンドの出力

bashなどのシェルにはhistory機能によりコマンド実行履歴が ${HOME}/.bash_history に記録されます。特に何の設定をせずに1000回ぶんの履歴を保存することができ、Ctrl+Rキーで履歴を呼び出せるなど便利な機能ですが、

  1. historyコマンドでコマンドの実行履歴はトレースできるが、コマンドの実行結果がわからない
  2. 標準でコマンド実行日時が記録されない (設定により記録することはできる)
  3. 複数人で同じユーザー名のユーザーとしてログインした場合、誰がどのコマンドを実行したかをトレースすることが非常に困難である

という欠点がありますので、監査証跡とするには不十分です。

scriptコマンドの出力ファイル

筆者がよく使う方法で一番気軽に導入できるのが、scriptコマンドによるロギングです。historyコマンドと違い、コマンドの実行結果もログに記録されるので、監査証跡としてはやや信頼性が上がります。時刻については、scriptコマンドのシェル開始時と終了時に時刻がログに書き込まれますので、ログの信頼性はやや上がります。
自動でログ採取を行う方法としては、.bash_profileなどにscriptコマンドを記述しておき、ユーザーがシェルにログインしたらすぐログが記録されるようにすることで、ログ採取忘れをなくすことができます。また、ログファイルを定期的に別サーバーやオブジェクトストレージへ同期する仕組みを作っておくことで、ある程度ログの改ざんを防ぐことが可能になります。


SSHクライアントのロギング機能

Windowsで利用者数の多いターミナルソフト Tera Termにはロギング機能があります。また、設定によりログ採取を自動で行うことも可能です。詳細は以下ページをご覧ください。

Log ([File] メニュー)
http://ttssh6.osdn.jp/manual/ja/menu/file-log.html
ログの取り方、ログの再生機能
https://ttssh6.osdn.jp/manual/ja/usage/tips/loging_howto.html

その他のSSHクライアント、ターミナルソフトもログ採取機能があればこれを積極的に活用しましょう。

ログ採取時の注意

ログ採取を行うにあたって、重要なのは以下の2点です。

  1. 作業環境すべての時刻を正確にする
  2. ログの編集(改ざん)はしない

作業対象機器の時刻はもちろんのこと、作業用端末の時刻同期も忘れずに行いましょう。また、整形が理由であってもログの編集を行ってしまうと、ログの改ざんを疑われてしまいます。どうしてもログの整形をしたい場合は、オリジナルのファイルを残したまま整形用にファイルをコピーし、コピー先のファイルのみを編集するようにしましょう。

商用ロギングツール活用の検討

PCI DSSなどの要件でログ監査を重要な業務プロセスとして位置づけている場合など、ログ採取を個人の気づきに依存するのはあまりよろしくありません。商用のロギングツールには、SSH操作ログをテキストのほか動画でも採取できるものがあったりしますので、操作ログの信頼性向上や作業工数削減を行うことができます。

いかがでしたでしょうか。作業ログの有用性を理解し、日々の業務に活かしていただければと思います。

 


 

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes