特定のファイルなどをスキャンする際に,スキャンエラー"engine abend"でそのファイルのスキャンが失敗する。
この場合、様々な要因が考えられます。以下の手順に沿って原因の確認及び対策を実施してください。
(特にProScanバージョン6.0.7以降のclamdエンジン1.0では、スキャン時に受け入れ可能なファイルサイズ、メモリの利用上限といったエンジン自体が利用可能なリソース上限が大幅に増加しているため、結果的に以前のバージョンで自動的にエンジン内部の制約によりスキャン不可となっていたファイルオブジェクトで、リソース不足が発生してしまうケースが多くなっております。
各種制限値の見直しや物理リソースの増強などをご検討いただければ幸いです)
原因調査:
設定ファイルproscan.conf内[aveserver]セクションでReportLevel=263に設定し、そのファイルを単独でスキャンした結果もエラーになるかどうか確認して下さい。
A)エラーにならない場合、システムフルスキャンや大量にファイルオブジェクトが存在しているディレクトリなどの負荷の高い一括スキャンに伴う物理的、もしくはulimitによる制限が起きている可能性があります。
各種制限値を変更
(AIX:OSマニュアルのulimitコマンド、もしくは/etc/security/limitsのマニュアルを参照、Linux:https://atmarkit.itmedia.co.jp/ait/articles/1908/01/news031.html等の各種マニュアル・資料をご参照下さい。中でも"ulimit -m"で制限される物理メモリはシステム系等のrootユーザー権限で動く全てのプロセスの利用する総メモリの上限値となりますので、可能ならば"unlimited"、/etc/security/limits ファイルでは"-1"に設定して頂くことを推奨致します)
するか、
対象ファイルもしくはディレクトリを設定ファイルの[filescan.object] セクション内ExcludeMaskに指定し、通常時スキャンでは除外する事を推奨します。
その場合、フルスキャン実施後に別途proscanfsの"-E"オプション(コマンドラインオプションは設定ファイルのオプションより優先される)で設定ファイルの例外を上書きし、
"proscanfs -E /dev /path1 /path2"
(上記例では、製品が初期で除外設定をしている/devのみを上書き指定する事で、設定ファイルで除外した"/path1" "/path2"パス内のファイルを別途スキャン出来るようにしています)
のようにしてメインのスキャンとは別にスキャンを行う分割スキャンを行って頂く事で、一時的に除外したパスを含めてスキャンを行うことを可能にしています。
(前述の通りReportLevelを変更したままだとログが肥大化する可能性があるので、標準のReportLevel=7等に戻すことを推奨します)
B)単独でのスキャンでもエラーになる場合、同セクションで設定されている
ReportFileName(標準では/var/opt/proscan/log/clamd.log)に指定されたファイル名のログを確認して下さい。
対象のファイルにおいて起きているエラーを確認し、以下のそれぞれのエラーに:
"Can't write to file ERROR"
各種ログ、あるいはアーカイブを展開する際に利用されるテンポラリディレクトリ(設定ファイルの[path]セクション内TempPath=/var/opt/proscan/tmpで指定)の属するディスクエリアの空きが一時的に枯渇している可能性があります。
上記テンポラリディレクトリ,及び設定ファイルで指定されたログのパスが含まれるディスクエリアを拡張して上記パスへの書き込み容量を確保して頂けるでしょうか。
"Can't open file or directory ERROR","Can't read to file ERROR"
スキャン可能なファイルでないものをスキャンしようとしている場合(デバイスファイルやシステムファイル、アクセス権限の設定によって他のサービス(セキュリティもしくはRDBMS)などがロックしているファイル)をスキャンしようとしている可能性があります。スキャン時に原因となっている設定やサービスを停止できない場合、前述のExcludeMaskに指定して除外することをお勧めします。(特にRDBMSに関しては、多くのベンダーが製品マニュアルやFAQ等においてアンチウィルスでの除外対象とすべきパスを指定しておりますので、そちらの情報もご確認ください)
[aveserver]セクションのReportFileNameで指定されたエンジンログ内にスキャンしたはずのファイル結果がない場合、[filescan.options] セクションのMaxSize設定によるサイズオーバーでスキャン除外されている可能性、あるいは前述のリソース不足によりエンジン自体がクラッシュしてしまった可能性(特にエンジンログがスキャン処理処理途中で記録が途絶えている場合)がございます。
前者の可能性がある場合、スキャン結果もしくはfilescanner.logにて"exclude :"にカウントされていないか確認可能です。
後者の場合はAでご案内した対応方法をご参照頂き、物理リソースの増強や制限値の変更、通常時スキャンでの除外設定にてご対応をお願いします。また単独のスキャンで再現性のあるクラッシュの場合、上記ログと共に弊社サポートまでお知らせ下さい。もし可能でしたら問題の発生しているファイル検体のご提供を頂けると、弊社からエンジン開発元にファイル解析によるクラッシュ原因についての問い合わせをさせて頂くことも可能です。
(いずれの場合も、設定ファイルproscan.conf内[aveserver]セクションでReportLevel=263に設定したままだとログが肥大化する可能性があるので、設定・対応変更後には標準のReportLevel=7等に戻す事をお勧めします)