はじめに
SIEM やデータレイクなんてことばが流行りはじめて早数年経ちますが、運悪く業務ではなかなか関わることができていない今日このごろです。この界隈の情報収集をしているとよく CEF や LEEF ってことばを見かけます。説明しろと言われても今の自分にはできなさそうだったので、調べてみました。
Syslog の形式
Syslog の形式を規定する文書には、RFC 3164 (BSD Syslog Format) と RFC 5424 (Syslog Format) があり、RFC 5424 が IETF による標準化規格となっています。
RFC 3164 と RFC 5424 ではフォーマットの構造が異なりますが、MSG(メッセージ)以外の部分(RFC 3164 であれば PRI + HEADER、RFC 5424 であれば HEADER + STRUCTURED-DATA)を慣例的に Syslog ヘッダー と呼ぶようです。
Syslog Format の MSG(メッセージ)部分は可変長で任意のデータを格納することができますが、そのメッセージ内容を規格化しようとする動きがあり、その中で代表的なものに CEF や LEEF と呼ばれる形式があるということが調べてわかりました。
BSD Syslog Format - RFC 3164
- RFC 3164 - The BSD Syslog Protocol
- NOT規格、あくまで慣習をまとめたもの
- PRI + HEADER + MSG の形式
- PRI (Priority) は (Facility * 8 + Severity) で計算される。
出典:Azure Sentinel | エンジニアの何でもメモ帳
<RFC 3164 Syslog ヘッダのフォーマット>
<優先度タグ ><タイム・スタンプ> <IP アドレスまたはホスト名>
- ※優先度タグはオプション
- ※優先度タグは 1 桁 から 3 桁、またその周りを不等号括弧で囲む必要がある。
RFC 3164 ヘッダーの例:
<13>Jan 18 11:07:53 192.168.1.1
Syslog Format - RFC 5424
- RFC 5424 - The Syslog Protocol
- IETF 形式と呼ばれ、RFC3164 を規格化したもの
- HEADER + STRUCTURED-DATA + MSG の形式
- HEADER の部分は、BSDフォーマットとの互換性を保つため (provide some interoperability with older BSD-based syslog ) のもの。BSD syslog の Facility や Severity から計算される PRI(Priority) は、Header の中の値として存在している。
- STRUCTURED-DATA は、新しく導入された仕組み。好きな情報を入れる事ができる。例として”トラフィック・カウンター”だったり”IPアドレス”などの このsyslog に関係する「メタ情報」を入れ込む事ができる。
- MSG の部分は 2048 Byte 以上は、受け手がサポートしていなかった場合、2048 Byte を超えた所を Truncate (SHOULD) か、メッセージを破棄 (MAY) する。
出典:Azure Sentinel | エンジニアの何でもメモ帳
<RFC 5424 Syslog ヘッダのフォーマット>
<優先度タグ>1 <タイム・スタンプ> <IP アドレスまたはホスト名>
- ※優先度タグは必須
- ※優先度タグは 1 桁 から 3 桁、またその周りを不等号括弧で囲む必要がある。
- ※タイムスタンプのフォーマットは
yyyy-MM-ddTHH:mm:ss.SSSZ
である必要がある。
RFC 5424 ヘッダーの例:
<13>1 2019-01-18T11:07:53.520Z 192.168.1.1
Common Event Format (CEF)
- 特定ベンダーに依存しない、一般的なメッセージフォーマット
- 項目をパイプ(|)で区切る
CEF:Version|Device Vendor|Device Product|Device Version|deviceEventClassId|Name|Severity|Extension
<CEF ヘッダの項目とその意味>
Version | CEF 形式のバージョンを特定する整数値 |
Device Vendor | 送信デバイスのタイプを一意に識別する文字列 |
Device Product | |
Device Version | |
deviceEventClassId | イベントタイプごとの一意の識別子 (文字列または整数値) |
Name | イベントを表す文字列 |
Sevirity | イベントの重要度を表す整数値 (0 ~ 10、10 が最重要イベント) |
Extension | 任意の値 |
出典:共通イベント形式(CEF) - McAfee Enterprise Security Manager 10.2.0
Log Event Extended Format (LEEF)
- IBM 製の SIEM 製品である QRadar 用にカスタマイズされたメッセージフォーマット
- 項目をパイプ(|)で区切る
- UTF-8 を使用する必要がある。
- IBM という特定ベンダー用のフォーマットではあるが、ネットワーク機器などで標準的に対応しているケースがある。
出典:Azure Sentinel | エンジニアの何でもメモ帳
<LEEF ヘッダのフォーマット>
LEEF:Version|Vendor|Product|Version|EventID|
<LEEF ヘッダの項目とその意味>
LEEF:Version | LEEF 形式のバージョンを特定する整数値 |
Vendor | 送信デバイスのタイプを一意に識別する文字列 |
Product | |
Product Version | |
EventID | イベントタイプごとの一意の識別子 (文字列または整数値) |
Delimiter Character | MSG部分の区切り文字(デリミタ)の指定 |
Predefined Key Entries | デリミタ区切りの任意の値 |
以上