Nextcloud

ウィルススキャン(アンチウィルス)機能について

Nextcloud には、files_antivirus というアプリがあり、ファイルアップロード時や、定期的なタイミングでウィルススキャンを行うことが可能です。ウィルスの検出処理はClamAV等のバックエンドで動作するアンチウィルスソフトにより行われます。

files_antivirus アプリについては下記リンク先を参照ください。
https://github.com/nextcloud/files_antivirus

インストールや設定方法は下記リンク先をご参照ください。
https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/antivirus_configuration.html

今回は Ubuntu OSでの利用例を紹介したいと思います。

ClamAVのインストール

apt-get install clamav clamav-daemon

files_antivirus アプリを有効化

Nextcloud で files_antivirus アプリを有効化します。
未インストール状態で app:enable を実行した場合でも appストアから自動でダウンロードしてinstallしてくれます。

./occ app:enable files_antivirus

files_antivirus アプリの設定

Nextcloudの管理画面から下記の設定項目を開きます。
管理 => セキュリティ => ファイルのウイルス対策

動作動作モードにはいくつかの種類があります。

1. ローカルのClamAV実行ファイルを読みだしてスキャン(都度実行)
2. ローカルで実行しているClamAV デーモンへのUNIX Socket接続
3. ローカルもしくはリモートで実行しているClamAV デーモンへのTCP/IP接続

今回はローカルマシン上で動作しているClamAVデーモンに UNIX Socket で接続する方法で設定します。

モード:ClamAVデーモン(ソケット)
ソケット:/var/run/clamav/clamd.ctl
を設定

files_antivirus アプリの動作確認

EICAR.com のサイトからテストファイルをダウンロードして、Nextcloudへアップロードしてみます。弊社環境上の制約でブラウザからテストファイルのアップロードができないため、curl コマンドでのWebDAV接続でファイルアップロードしています。

テストファイルのアップロード

curl -u "$USERID:$USERPW" -T EICAR.TXT https://$HOST/remote.php/dav/files/$USERID/Documents/EICAR.TXT

レスポンス内容

<?xml version="1.0" encoding="utf-8"?>
<d:error xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns">
  <s:exception>OCA\DAV\Connector\Sabre\Exception\UnsupportedMediaType</s:exception>
  <s:message>ウイルス Win.Test.EICAR_HDB-1 がファイル内で検出されました。 アップロードを完了できません。</s:message>
</d:error>

テストファイルが検出され、アップロードがブロックされました。
nextcloud.log には次のようなログが記録されます。

{
  "reqId":"XKlAoaEZeBcdmuQPRn3e",
  "level":3,
  "time":"2024-08-16 14:50:04",
  "remoteAddr":"127.0.0.1",
  "user":"USERID",
  "app":"files_antivirus",
  "method":"PUT",
  "url":"/remote.php/dav/files/USERID/Documents/EICAR.TXT",
  "message":"Infected file deleted. Win.Test.EICAR_HDB-1 File: files/Documents/EICAR.TXT.ocTransferId1578600796.part Account: USERID",
  "userAgent":"curl/7.81.0",
  "version":"28.0.8.2",
  "data":{
    "app":"files_antivirus"
  }
}

files_external アプリでS3やSMB外部ストレージを連携している場合にも、ファイルアップロード完了前に検出してくれます。

以上、現場からお届けしました。