Name

vfs_smb_traffic_analyzer — Samba VFS の読み書き動作をソケット経由でヘルパーアプリケーションに記録する

Synopsis

vfs objects = smb_traffic_analyzer

説明

このVFSモジュールは、samba(7)システムの一部である。

vfs_smb_traffic_analyzer VFSモジュールは、 Sambaサーバー上のクライアントファイル操作のログを取り、 このデータを、SQLデータベースに送る、ヘルパプログラム (以下では"Receiver")に対して ソケット上で送信する。ヘルパプログラムの詳細な情報は、 http://holger123.wordpress.com/smb-traffic-analyzer/ にあるプロジェクトホームページから得られる。 データに対して何かを行うReceiverに、VFSモジュールは依存するので、 その開発によって進化することになる。それゆえ、モジュールは異なった プロトコルバージョンで動作し、receiverは、使用するプロトコルをデコード 出来るようにしなければならない。プロトコルバージョン1は、2008年9月25日に Sambaに導入された。これはとても単純なプロトコルで、VFS操作の小さな 一覧のみをサポートし、いくつかの欠点があった。プロトコルバージョン2では バージョン1が持っていた問題を解決することと、新しい機能追加が行われた ものである。 Samba 4.0.0リリースから、モジュールは既定値でバージョン2のプロトコルで 動作する。

プロトコルバージョン1の説明

vfs_smb_traffic_analyzerプロトコルバージョン1は 以下のVFS操作を認識する:

write
pwrite
read
pread

vfs_smb_traffic_analyzer sends the following data in a fixed format seperated by a comma through either an internet or a unix domain socket:

vfs_smb_traffic_analyzerは、コンマによって分離された 固定フォーマットで、以下のデータを、インターネットまたはUNIXドメインソケット を通じて送る:

	BYTES|USER|DOMAIN|READ/WRITE|SHARE|FILENAME|TIMESTAMP
	

レコードの詳細:

  • BYTES - VFS操作のバイト単位の長さ

  • USER - 操作を開始したユーザー

  • DOMAIN - ユーザーのドメイン

  • READ/WRITE - "W"なら書き込み操作、"R"なら読み出し操作

  • SHARE - VFS操作が行われた共有の名前

  • FILENAME - VFS操作によって使われたファイルの名前

  • TIMESTAMP - VFS操作が行われたことを示す "yyyy-mm-dd hh-mm-ss.ms" での時間

  • IP - VFS操作を開始したクライアントマシンのIPアドレス(v4又はv6)。

このモジュールはスタック可能である。

プロトコルバージョン1の問題点

長い間、プロトコルバージョン1にはいくつかの問題点があった。

  • 構文解析の問題(Problematic parsing) - プロトコルバージョン1はデータのブロックを分離するのに、 ハイフンとカンマを使っている。ファイル名にハイフンがあると、 receiverがデータを間違った方法でデコードするため、問題が 発生する。

  • 安全でないネットワーク転送(Insecure network transfer) - プロトコルバージョン1は、すべてのデータを、ネットワーク上で 暗号化しないで送信する。

  • サポートしているVFS操作の制限 - プロトコルバージョン1は4つのVFS操作しかサポートしていない。

  • プロトコルの更新版がない(No subreleases of the protocol) - プロトコルバージョン1は、そのバージョンで固定であり、互換がある 更新版において、新規機能の導入やバグ修正が出来ない。

バージョン2のプロトコル

プロトコルバージョン2はバージョンv1で導入された問題を解決する試みである。 利用者の観点から、以下の変更がその他の強化に加えて最も顕著である:

  • モジュールからのデータは、secrets.tdb中に格納されるキーにより暗号化 することが出来る。receiverは同じキーを使わなければならない。 モジュールはデータを送る時にAESブロック暗号化を行う。

  • モジュールは、副リリース番号を伴うreceiverに対してそれ自身を識別でき、 receiverはモジュールに対して異なった副リリース番号と一緒に動作できる。 The module now can identify itself against the receiver with a sub-release number, where the receiver may run with a different sub-release number than the module. しかしながら、V2.xプロトコル上で両者が動いても、たとえモジュールが より新しい副リリース中でのみ実装される機能を使うとしても、receiverは クラッシュしない。最終的に、もしもモジュールが、新しい副リリースから 新しい機能を使う場合で、receiverが古いプロトコルで動作する場合、 それは単に機能を無視するだけである。もちろん、receiverとモジュールが 共にプロトコルの同じ副リリースを使うのが最善である。

    However, as long as both run on the V2.x protocol, the receiver will not crash, even if the module uses features only implemented in the newer subrelease. Ultimatively, if the module uses a new feature from a newer subrelease, and the receiver runs an older protocol, it is just ignoring the functionality. Of course it is best to have both the receiver and the module running the same subrelease of the protocol.

  • プロトコルV1の構文解析問題はもはや起きない。なぜならV2では適切な 方法で、データパッケージを整理する。 The parsing problems of protocol V1 can no longer happen, because V2 is marshalling the data packages in a proper way.

  • モジュールは現在すべてのVFS機能毎にデータを作成する能力が潜在的にある。 プロトコル V2.0では、8つのVFS機能、すなわち、rite,read,pread,pwrite, rename,chdir,mkdir と rmdirをサポートする。より多くのVFS機能の サポートは、将来の副リリースの課題の1つである。

    The module now potientially has the ability to create data on every VFS function. As of protocol V2.0, there is support for 8 VFS functions, namely write,read,pread,pwrite, rename,chdir,mkdir and rmdir. Supporting more VFS functions is one of the targets for the upcoming sub-releases.

プロトコルV2を有効にするには、protocol_version VFS オプションを使わなければ ならない(オプション節を参照)。

プロトコルV1とV2.xにおけるオプション

smb_traffic_analyzer:mode = STRING

もしも、STRINGが "unix_domain_socket" に一致するならば、モジュール は/var/tmp/stadsocketに位置するunixドメインソケットを使い、もしも、 STRINGにそのほかの文字列か、未定義ならば、モジュールは、データの転送 のためにインターネットドメインソケットを使う。

smb_traffic_analyzer:host = STRING

モジュールはホスト名がSTRINGという名前のシステムにデータを送る。

smb_traffic_analyzer:port = STRING

モジュールはSTRING中で指定されたTCPポートにデータを送る。

smb_traffic_analyzer:anonymize_prefix = STRING

モジュールは、STRINGで与えられたプレフィックスと単純なハッシュ値で ユーザー名を置き換える。バージョン2.xのプロトコルでは、ユーザーのSIDも 匿名化する。

smb_traffic_analyzer:total_anonymization = STRING

もしもSTRINGが'yes'に一致するならば、このモジュールは、 追加のハッシュ値を生成しないで、smb_traffic_analyzer:anonymize_prefix オプションによって与えられる文字列で、任意のユーザー名を置き換える。 これは、任意の転送データが1人のユーザーにマッピングされ、ユーザーに 関連するデータの完全な匿名化を提供する。バージョン2.xのプロトコルでは、 ユーザーのSIDも匿名化する。

smb_traffic_analyzer:protocol_version = STRING

もしもSTRINGがV1に一致する場合、 モジュールはバージョン1のプロトコルを使う。もしもSTRINGが なかった場合、モジュールはバージョン2のプロトコルを使い、それが 既定値となる。

使用例

共有"example_share"上でプロトコルV2を走らせ、インターネットソケットを使う

        [example_share]
        path = /data/example
        vfs_objects = smb_traffic_analyzer
        smb_traffic_analyzer:host = examplehost
        smb_traffic_analyzer:port = 3491
        

unixドメインソケットを使い、共有"example_share"上でモジュールを走らせる

	[example_share]
	path = /data/example
	vfs objects = smb_traffic_analyzer
	smb_traffic_analyzer:mode = unix_domain_socket
	

The module running on share "example_share", using an internet socket, connecting to host "examplehost" on port 3491.

インターネットソケットを使い、ポート3491のホスト名"examplehost"に対して 接続し、共有"example_share"上でモジュールを走らせる

	[example_share]
	path = /data/example
	vfs objects = smb_traffic_analyzer
	smb_traffic_analyzer:host = examplehost
	smb_traffic_analyzer:port = 3491
	

The module running on share "example_share", using an internet socket, connecting to host "examplehost" on port 3491, anonymizing user names with the prefix "User".

インターネットソケットを使い、ポート3491のホスト名"examplehost"に対して 接続し、プレフィックス"User"でユーザー名を匿名化する

	[example_share]
	path = /data/example
	vfs objects = smb_traffic_analyzer
	smb_traffic_analyzer:host = examplehost
	smb_traffic_analyzer:port = 3491
	smb_traffic_analyzer:anonymize_prefix = User
	

バージョン

このマニュアルページはSamba3.3(訳注 4.x?)用のものである。

著者

オリジナルの Samba ソフトウェアと関連するユーティリティは、Andrew Tridgell によって作成された。現在 Samba は Samba Team に よって、Linuxカーネルの開発と同様のオープンソースプロジェクト として開発が行なわれている。

オリジナルのバージョンのVFSモジュールとヘルパツールは、 Holger Hetterichによって作成された。

日本語訳

このマニュアルページは Samba 4.0.0 - 4.0.7 に対応する。

このドキュメントの Samba 3.2.8 - 4.0.7 対応の翻訳は

  • 太田俊哉 (ribbon@samba.gr.jp)

によって行なわれた。