オープンソース

一覧へ

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

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

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

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

https://github.com/designet-inc-oss/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

下記は設定例です。

設定例1
[common]
ZipSaveDir = "/var/lib/samma/sanitaize/original/";
TmpDir = "/var/lib/samma/sanitaize/tmp/";
SanitizeZIPSaveDir = "/var/lib/samma/sanitaize/sanitized/";
SyslogFacility = "LOG_LOCALO";
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";

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

3.2.1. commonセクション

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

3.2.2. databaseセクション

  • DBDriver
    • sqliteを指定します。
  • DB
    • SQLiteデータベースのファイルパスを設定します。

3.2.3. connectorセクション

  • URLPrefix
    • ZIP無害化WEBインターフェースのURLを設定します。

3.2.4. zipsanitizeセクション

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

3.2.5. zipdeleteセクション

  • SaveLimit
    • 無害化済みのデータを削除するまでの日数を設定します。

3.3. 初期化

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

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

3.4. WEBサーバの設定変更

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

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

<Directory "/usr/ocal/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/sipsanitize_connector

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

# sysremctl 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以外の場合は失敗とみなされます。
  • データを変換する場合、標準入力でデータを受け取り、変換結果を標準出力に出力できる必要があります。
  • 特定のデータに置き換える場合は、標準出力に出力することでファイルの内容は置き換えが可能です。

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

一覧へ