オープンソース

サーバー構築のデージーネットTOP > OSS情報 > デージーネットのOSS > SaMMA ZIP無害化プラグイン

next up previous contents
Next: 4. SaMMA ZIP無害化プラグインの動作 Up: SaMMA ZIP無害化プラグイン Previous: 2. SaMMA ZIP無害化プラグインを利用するために


3. SaMMA ZIP無害化プラグインのインストール

本章では、ZIP無害化プラグインのインストール・設定方法について解説します。

3.1 ZIP無害化プラグインの入手と展開

ZIP無害化プラグインは、OSDNのSaMMAプロジェクトのダウンロードページから入手することができます。

http://osdn.jp/projects/samma/

以下のファイルをダウンロードしてください。

zipsanitize-version.tar.gz

ダウンロード後、ZIP無害化プラグインを展開します。
以下は、/usr/local/配下にZIP無害化プラグインのアーカイブを展開する例です。

# tar xzf zipsanitize-*.tar.gz -C /usr/local

上記のように展開した場合、展開後のディレクトリ構成は表のようになります。
本マニュアルでは、これを前提に解説を進めます。

ディレクトリ構成
ディレクトリ/ファイル名 解説
/usr/local/zipsanitize プログラムのベースディレクトリ
/usr/local/zipsanitize/public 公開ディレクトリ
/usr/local/zipsanitize/config 設定ディレクトリ
/usr/local/zipsanitize/tmpl 画面/メールテンプレートディレクトリ
/usr/local/zipsanitize/class ライブラリディレクトリ
/usr/local/zipsanitize/bin 実行ファイル格納ディレクトリ

3.2 ZIP無害化プラグインの設定

ZIP無害化プラグインの設定を行ないます。設定ファイルは以下のパスに存在しています。

/usr/local/zipsanitize/config/zipsanitize.conf

下記は設定例です。

設定例
[common]
ZipSaveDir = "/var/lib/samma/sanitaize/original/";
TmpDir = "/var/lib/samma/sanitaize/tmp/";
SanitizeZIPSaveDir = "/var/lib/samma/sanitaize/sanitized/";
SyslogFacility = "LOG_LOCAL0";
WebUser = "apache";

[database]
DBDriver = "sqlite"
DB = "/var/lib/samma/sanitaize/sqlite.db";

[connector]
URLPrefix = "http://example.com/zipsanitize/";

[zipsanitize]
MailSubject = "無害化を行ないました"
WarnMailSubject = "一部ファイルの無害化に失敗しました"
ErrMailSubject = "無害化に失敗しました"
MailFrom = "postmaster@example.com"
SanitizeFailedAction = "encrypt"
ZipFileMax = 1000

[zipdelete]
SaveLimit = "30";

各設定の意味は以下の通りです。

commonセクション
項目名 解説
ZipSaveDir 無害前のZIPファイルの配置パスを設定します。
TmpDir 無害化前のZIPファイルを展開する一時ディレクトリのパスを設定します。
SanitizeZipSaveDir 無害のZIPファイルの配置パスを設定します。
SyslogFacility Syslogのファシリティを設定します。 フォーマットはPHPのSyslogファシリティのマクロに準拠します。
WebUser WEBサーバの実行ユーザを設定します。

databaseセクション
項目名 解説
DBDriver sqliteを指定します。
DB SQLiteデータベースのファイルパスを設定します。

connectorセクション
項目名 解説
URLPrefix ZIP無害化WEBインタフェースのURLを設定します。

zipsanitizeセクション
項目名 解説
MailSubject 無害化後に送信するメールの件名を設定します
WarnMailSubject 一部ファイルの無害化に失敗した場合に送信する警告メールの件名を設定します
ErrMailSubject コマンドの失敗など致命的なエラーの場合に送信するエラーメールの件名を設定します
MailFrom メールのFromを設定します
SanitizeFailedAction 無害化に失敗した場合の挙動を設定します。encryptまたはpassを設定できます。 encryptの場合は、無害化に失敗したZIPをランダムパスワードで再圧縮して送信します。ランダムパスワードは、ログに出力します。passの場合は、該当ファイルを無害化せずに送信します。
ZipFileMax ZIPファイルに格納されているファイル数の上限値を設定します。 上限に達している場合は、無害化処理が必ず失敗します。

zipdeleteセクション
項目名 解説
SaveLimit 無害化済みのデータを削除するまでの日数を設定します。

3.3 初期化

ZIP無害化プラグインが利用するディレクトリやデータベースの初期化を行ないます。 初期化は、zsctrlコマンドを利用して行ないます。実行後、設定ファイルに設定したディレクトリやデータベースファイルが作成されていれば完了です。

初期化例
# /usr/local/zipsanitize/bin/zsctrl init

3.4 WEBサーバの設定変更

ZIP無害化プラグインのWEBインタフェースを参照するための設定を行ないます。 本手順ではApache HTTP ServerのAliasディレクティブを利用します。 なおアクセス制限の設定は、利用する環境に合わせて設定を行ってください。

設定例
# vi /etc/httpd/conf.d/zipsanitize.conf
Alias zipsanitize "/usr/local/zipsanitize/public"

<Directory "/usr/local/zipsanitize/public">
Require all granted
</Directory>

設定後、WEBサーバをリロードします。

# systemctl reload httpd.service

3.5 SaMMAの設定変更

SaMMAのharmless.confに設定を行ないます。 以下は、Content-Typeが「application/x-zip-compressed」や「application/zip」の 添付ファイルが存在する場合に、ZIP無害化コネクタにデータを渡す設定です。

harmless.conf設定例
application/x-zip-compressed text/plain - /usr/local/zipsanitaize/bin/zipsanitize_connector
application/zip text/plain - /usr/local/zipsanitaize/bin/zipsanitize_connector

設定後、SaMMAを再起動します。

# systemctl restart samma.service

3.6 ZIP無害化プラグインの無害化ルールの設定

最後にZIP無害化プラグインの無害化ルールを設定します。 rule.confに設定を行ないます。 以下はhtmlファイルをpython-html2textコマンドでtext形式に変換する例です。

rule.conf
###############################################################################
# suffix covert_ext command
###############################################################################
html    txt     /bin/python-html2text
*     -      none


rule.confの書式は以下の通りです。

  • 一行あたり空白文字(スペース・タブ文字)区切りで3カラム設定します。
  • 1カラム目は、無害化対象のファイル拡張子です
  • 2カラム目は、無害化後のファイル拡張子です
  • 3カラム目は、無害化を行うコマンドです。3カラム目以降はコマンドのオプションとみなされます。
  • #から始まる行はコメント行とみなされます。


無害化対象のファイル拡張子の仕様は以下の通りです。

  • ファイル拡張子をASCII文字で指定します。
  • 「file.txt」をマッチさせたい場合、txtを設定します。つまりドットは不要です。
  • 1行にカンマ区切りで複数の拡張子を設定することができます。
  • *を指定することで、他のルールでマッチしなかったファイルを処理するルールになります。
  • 拡張子は大文字小文字区別なく一致するように処理されます。
  • 同じ拡張子を複数設定することはできません。


無害化後のファイル拡張子の仕様は以下の通りです。

  • 無害化コマンドの実行に成功した場合のみ、拡張子の変更が行われます
  • -を指定すると拡張子の変更を行ないません。


無害化コマンドの仕様は以下の通りです。

  • 絶対パスでコマンドを指定します。
  • 変換の結果は、コマンドの終了コードが0の場合、成功とみなされます。0以外の場合は失敗とみなされます。
  • データを変換する場合、標準入力でデータを受け取り、変換結果を標準出力に出力できる必要があります。
  • 特定のデータに置き換える場合は、標準出力に出力することでファイルの内容は置き換えが可能です。

以上でインストールは完了です。


next up previous contents
Next: 4. SaMMA ZIP無害化プラグインの動作 Up: SaMMA ZIP無害化プラグイン Previous: 2. SaMMA ZIP無害化プラグインを利用するために

2017年10月31日