[samba-jp:21976] 共有フォルダからクライアントPCへのデータ転送監視について

森川武 t.morikawa137 @ gmail.com
2013年 5月 21日 (火) 16:49:16 JST


はじめまして。
森川と申します。

Windows からSamba(3.6.5)サーバに接続し、ある決められた転送量(閾値)超える
クライアントへのコピー操作が行われた場合にSambaへのアクセスを遮断するような仕組みを構築しようと考えています。
これらはユーザごとに監視し、あるユーザが一人でも閾値を超えたら、全ユーザのSambaへのアクセスを遮断します。

環境は以下のようになります。

OS:CentOS6.2
samba:3.6.5


ここでのコピー操作というのは、ドラッグ&ドロップによる共有フォルダからのデータコピーもしくは
Ctrl+c、Ctrl+vによるデータコピーを指しています。

それを実現するためにはクライアントからのコピー操作を監視する必要があります。
そこで2つのアプローチを考えました。

【案1】
full-auditが出力するログから、それを判断しようと考えました。
しかし、ログからWindowsのエクスプローラ上で検索などとの判別ができず、その上、
OSによって出力されるログが異なるため(SMB1と2の差?)、実現に至ることができませんでした。
検索やOSによって共有フォルダを開いただけで、コピー操作を行ったときの同様のログが出力されてしまい
「クライアントへのデータコピーをしたときのみ」ということができませんでした。

【案2】
2つ目のアプローチとして/proc/[PID]/ioを監視する方法を考えました。
コピー操作を行う際、sambaはユーザごとにプロセスを生成するため、
ioを監視し、閾値を超えたらsambaへのアクセスを遮断するという方法です。
しかし、この方法でも、共有フォルダに対してウィルススキャンした場合や
Windowsのエクスプローラでファイル内容検索等を行った場合でもIOが共有フォルダ上の
ファイルサイズ分発生してしまい、意図しないところでsambaへのアクセスが遮断されてしまう
という現象が発生してしまいました。
この現象は冷静に考えてみると、当たり前のことで、ウィルススキャンもファイル内容検索も
クライアントが行っていることなので、それにはデータをクライアントに共有フォルダ上から
取得する必要があるため、IOは発生して当然です。

以上のアプローチを行い、いずれも欠陥があり、実現に至ることができませんでした。

コピー操作として判断できる情報、もしくは同じような仕組みを実現しているミドルウェアなど
何でもいいので情報を頂ければ幸いです。

以上、よろしくお願い致します。


samba-jp メーリングリストの案内