コラム

Unix/Linuxサーバの操作ログ取得手法の違い

Writer 星 光史
WEEDS SYSTEMS創業メンバーの一人。
創業から証跡監査、アクセスログ分野のツールを自社開発・自社販売してきたWEEDS SYSTEMS社で、導入からセールスサポートまで一貫して従事し続けているコアメンバー。現場で起きているお客様の課題や悩みに直面しながら解決に導き、製品バージョンアップの方針策定も手掛ける。

情報セキュリティー対策や内部統制の重要性が叫ばれるなか、多くの企業でサーバ内の操作ログの取得に力を入れ始めています。中でもUNIX/Linuxサーバでは、操作ログ取得方法が大きく「カーネルフック型」と「シェルフック型」の二つあります。
さて、これらはどんな特徴があるのでしょうか。

「カーネルフック型」と「シェルフック型」とは

Unix/Linuxサーバのログ取得方式は、カーネルフック型とシェルフック型に大別することができます。まず、それらの概要を見ていきましょう。

OSの稼働を全て記録する「カーネルフック型」

まずは「カーネルフック型」です。
カーネルフック型は、コンピューター内部における全ての稼働プロセスを取得します。
「カーネル」とは、ソフトウエアの中心部として最もハードウエアと密接に関わり、アプリケーションやシェルなどから命令を受けて、CPUやメモリ、ディスクなどのハードウエアを直接コントロールしている部分です。

カーネルフック型では、カーネルを常に監視しログを取得し続けます。したがって、サーバが起動していればログ取得され続けます。

サーバ操作に利用するシェルをフックする「シェルフック型」

これに対し、「シェルフック型」では、サーバを操作するユーザーが利用したシェルの記録を取得します。「シェル」(殻)とは、ユーザーとカーネルの間にあり、ユーザーからの命令を翻訳しカーネルに伝え、カーネルからの処理結果をユーザーに伝える役割を担うほか、過去に入力されたコマンドを記憶する機能などがあります。
したがって、シェルフック型ではユーザーがログインして操作しない限りログ取得されず、取得されたログは、ユーザーがコンピューターに対し、どのような操作を行ったのかをコマンドレベルで確認することができます。

「カーネルフック型」と「シェルフック型」のメリット・デメリット

以上のように、それぞれフックする位置が異なりますので、メリット・デメリットが異なります。

メリット デメリット
カーネルフック型
  • 全てのプロセスの稼働が記録できる
  • サーバに負荷がかかる
  • ユーザー操作が分からない
  • ログ容量が膨大になりがち
シェルフック型
  • ユーザー操作のみログ取得できる
  • サーバへの負荷がほぼない
  • 操作が分かりやすく詳細に取得できる
  • アプリケーションの記録が取得できない

「カーネルフック型」の一番のメリットは、アプリケーションの稼働ログが取得できる点であり、「シェルフック型」ではユーザー操作に特化してログ取得ができる点であると捉えられます。

けん制効果を高め不正・改ざんを防止するには?

「カーネルフック型」では、コンピューターの基本機能について、すべてのプロセスを記録することができルため、コンピューターが誤動作した際には、シェルレベル(ユーザーの操作内容)だけでは原因がわからない場合、より詳細な情報をカーネル側の動作から確認することができます。
その為、セキュアOSとして効果を発揮することが期待でき、一見もっともセキュリティーレベルを向上させる形式であるように思われます。

一方「シェルフック型」では、ユーザーのログインがない限り稼働しないため、OSやアプリケーションの挙動はつかめません。しかし、「誰が、いつ、何をしたのか」を詳細に記録できるため、社内におけるけん制効果を働かせることが可能です。

また、「カーネルフック型」では、ログの内容がプロセス名と稼働有無の範囲に留まる上に、大量にログが蓄積されるため、サーバの安定稼働を揺るがす危険性があります。
シェルフック型は比較的安定しているため、安心して導入することができます。
何を対象に、何を向上させたいのか。導入後の管理を含め、十分に検討し、より長く活用できる製品の選択をするとよいでしょう。

WEEDSでは、「シェルフック型」を採用してUNIX/Linuxのサーバー操作記録を取得する「WEEDS UNIX-Trace」を自社開発しております。詳しくはそちらのページをご覧ください。