Syslog

syslog(シスログ)とは



syslogは、IPネットワーク上でログメッセージを転送するための標準プロトコルです。このプロトコルは、単にメッセージを転送するだけでなく、ログを生成するシステム(アプリケーションやライブラリ)、ログを受信し分析するシステム全体を指すこともあります。syslogメッセージには、メッセージを生成したシステムの種類を示す「ファシリティコード」と、メッセージの重要度を示す「重大度レベル」が付与されます。

syslogの利用



syslogは、システム管理やセキュリティ監査だけでなく、一般的な情報提供、分析、デバッグなど、幅広い目的で使用されます。プリンター、ルーター、メッセージレシーバーなど、さまざまなデバイスがsyslog規格を採用しており、異なるタイプのシステムからのログデータを一元的に管理できます。多くのオペレーティングシステムで実装されているのも特徴です。

動作モデル



ネットワーク上で動作する場合、syslogはクライアントサーバモデルを採用します。ログを受信する側(サーバ)は、「syslogd」「syslogデーモン」「syslogサーバ」などと呼ばれます。クライアントは、1024バイト以下の短いテキストメッセージをサーバに送信します。syslogメッセージは、UDPまたはTCP上で送信されます。通常、データはクリアテキストで送信されますが、SSL/TLSによる暗号化も可能です。

syslogの歴史



syslogは、1980年代にエリック・オールマンによってsendmailプロジェクトの一部として開発されました。その後、多くのアプリケーションで採用され、Unix系システムでは標準的なログ記録方式となっています。ルーターなどのネットワーク機器にも広く搭載されています。

長らくデファクトスタンダードでしたが、規格は存在せず、実装間の非互換性も存在しました。セキュリティ強化のため、IETFはsyslogワーキンググループを結成し、2001年にRFC 3164として現状を文書化しました。その後、2009年にRFC 5424で標準化されました。特許を主張する企業もありましたが、プロトコルの利用と標準化に大きな影響はありませんでした。

syslogメッセージの構成要素



syslogメッセージは、以下の要素で構成されます。

  • - ファシリティコード: メッセージを記録するシステムの種類を示すコード。受信側での処理方法を決定するために使用されます。
  • - 重大度レベル: メッセージの重要度を示すレベル。
  • - 情報ヘッダ: syslogソフトウェアが付与する情報。送信元のプロセスID、タイムスタンプ、ホスト名またはIPアドレスなどが含まれます。

ファシリティコード



ファシリティコードは、メッセージを記録するシステムの種類を特定します。以下のようなコードが定義されています。

ファシリティコード キーワード
--- --
0 kern
1 user
2 mail
3 daemon
4 auth
5 syslog
6 lpr
7 news
8 uucp
9 cron
10 authpriv
11 ftp
12-15 ntpなど予約
16-23 local0~local7

ファシリティコードとキーワードの対応は、OSやsyslogの実装によって異なる場合があります。

重大度レベル



重大度レベルは、メッセージの重要度を示すもので、以下のレベルが定義されています。

重大度レベル キーワード
-- --
0 Emergency
1 Alert
2 Critical
3 Error
4 Warning
5 Notice
6 Info
7 Debug

EmergencyとDebug以外の重大度レベルの意味は、アプリケーションによって異なる場合があります。通常、サーバ側でメッセージを表示する際に、特定の重大度レベル以上をフィルタリング表示します。例えば、Noticeレベルでフィルタリングした場合、Warning、Error、Critical、Alert、Emergencyレベルのメッセージも表示されます。

メッセージ



RFC 3164では、メッセージは「TAG」と「CONTENT」の2つのフィールドで構成されていました。TAGはメッセージを生成したプログラムやプロセスの名前、CONTENTはメッセージの詳細を示します。RFC 5424では、CONTENTは「MSG」と呼ばれるようになり、TAGはヘッダの一部として扱われるようになりました。rsyslogなどのツールは、この新規格に準拠しています。

メッセージの内容はUTF-8でエンコードされ、制御文字の範囲は避けるべきとされています。

ロガー



生成されたログメッセージは、コンソール、ファイル、リモートのsyslogサーバなど、さまざまな場所に送信できます。ほとんどの実装では、ログにメッセージを送信するためのコマンドラインユーティリティ(logger)やソフトウェアライブラリが提供されています。ログを監視するには、クライアントアプリケーションを使用するか、ログファイルに直接アクセスします。tailやgrepなどのコマンドラインツールがよく使用されます。ログサーバは、ローカルファイルだけでなく、ネットワーク経由でログを送信するように設定できます。また、syslogメッセージのフィルタリングや表示を行うレポートプログラムが含まれている実装もあります。

通信プロトコル



syslogは、クライアントサーバモデルで動作し、サーバはクライアントからの接続を特定のポートで待ち受けます。歴史的には、UDPの514番ポートが最も一般的でしたが、UDPには輻輳制御機能がないため、TCPの6514番ポートとTLSによる暗号化が推奨されています。

syslogの制限



syslogメッセージの内容は、プロセス、アプリケーション、OSに依存するため、統一性がありません。フォーマットや内容についての想定もありません。syslogメッセージはフォーマットされていますが、メッセージ部分はフォーマットされていません。また、syslogは片方向通信であり、受信側がメッセージを受信したことを送信側が確認する手段はありません。

今後の展望



syslogの利用は拡大しており、医療分野などでの応用も検討されています。SOX法、PCI DSS、HIPAA法などの規制により、セキュリティ強化が求められており、syslogはログ収集・分析に最適なフォーマットとして活用されています。Windowsイベントビューアなど、他のフォーマットからsyslogへの変換ツールも存在します。

近年では、企業全体のsyslogを収集・分析するマネージド・セキュリティサービス(MSS)も登場しており、人工知能アルゴリズムを用いてパターンを検出し、顧客に問題を通報するサービスも提供されています。

syslogの関連文書



syslogプロトコルは、IETFが発行するRFCによって定義されています。主なRFCは以下の通りです。

  • - RFC 3164: The BSD Syslog Protocol(廃止)
  • - RFC 5424: The Syslog Protocol
  • - RFC 5425: TLS Transport Mapping for Syslog
  • - RFC 5426: Transmission of Syslog Messages over UDP
  • - RFC 5427: Textual Conventions for Syslog Management
  • - RFC 5848: Signed Syslog Messages
  • - RFC 6012: Datagram Transport Layer Security (DTLS) Transport Mapping for Syslog
  • - RFC 6587: Transmission of Syslog Messages over TCP

実装例



以下は、syslogの実装例です。

UNIX



  • - sysklogd
  • - rsyslog
  • - syslog-ng
  • - metalog
  • - msyslog
  • - socklog

Windows



  • - TheOne SysLog Manager
  • - Kiwi Syslog Daemon
  • - MonitorWare Products
  • - NetDecision LogVision
  • - NTsyslog
  • - Syslserve
  • - syslog-ng Agent for Windows
  • - Syslog Watcher

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。