概要

NextcloudとClamAVを連携させます。

環境

  • Ubuntu 22.04
  • Nextcloud 28.02
  • ClamAV 0.103

さっくりとした手順

  1. clamav-daemonを有効化します。
  2. ウイルス定義ファイル(freshclam)を定期的に実行させます。
  3. NextcloudにAntivirusを導入します。
  4. NextcloudのAntivirusを連携させます。

参考にした手順:
https://rair.dev/nextcloud-clamav-antivirus/

前提

  • 性質上、かなりリソースを消費します。ある程度のマシンスペックを覚悟してください。
  • ClamAVをインストールしていることが条件です。

ClamAVを有効化します。

  • ClamAV daemon 状況確認
sudo systemctl status clamav-daemon.service

実行結果

○ clamav-daemon.service - Clam AntiVirus userspace daemon
     Loaded: loaded (/lib/systemd/system/clamav-daemon.service; enabled; vendor preset: enabled)
    Drop-In: /etc/systemd/system/clamav-daemon.service.d
             └─extend.conf
     Active: inactive (dead)
  Condition: start condition failed at Tue 2024-02-20 16:09:56 JST; 19h ago
             └─ ConditionPathExistsGlob=/var/lib/clamav/daily.{c[vl]d,inc} was not met
       Docs: man:clamd(8)
             man:clamd.conf(5)
             https://docs.clamav.net/

最初はエラーになったので、再起動をします。

  • ClamAV daemon 再起動
sudo systemctl restart clamav-daemon.service
  • 再起動後の状況確認
sudo systemctl status clamav-daemon.service
● clamav-daemon.service - Clam AntiVirus userspace daemon
     Loaded: loaded (/lib/systemd/system/clamav-daemon.service; enabled; vendor preset: enabled)
    Drop-In: /etc/systemd/system/clamav-daemon.service.d
             └─extend.conf
     Active: active (running) since Wed 2024-02-21 11:44:33 JST; 4s ago
       Docs: man:clamd(8)
             man:clamd.conf(5)
             https://docs.clamav.net/
    Process: 54279 ExecStartPre=/bin/mkdir -p /run/clamav (code=exited, status=0/SUCCESS)
    Process: 54280 ExecStartPre=/bin/chown clamav /run/clamav (code=exited, status=0/SUCCESS)
   Main PID: 54281 (clamd)
      Tasks: 1 (limit: 18920)
     Memory: 955.7M
        CPU: 4.215s
     CGroup: /system.slice/clamav-daemon.service
             └─54281 /usr/sbin/clamd --foreground=true

今度はOKです。この結果を見てもわかるように、消費メモリが1GBほど。

  • ソケットがリッスンされていることを確認
netstat -a|grep clam
unix  2      [ ACC ]     STREAM     LISTENING     1516341  /var/run/clamav/clamd.ctl

freshclamを定期実行させます。

  • サービススクリプトを作成
cat <<- __EOF__ | sudo tee -a /etc/systemd/system/freshclam.service
[Unit]
Description=Freshclam virus database updater

[Service]
Type=simple
ExecStart=/usr/bin/freshclam -d -c 4
# -c 数字で 頻度を指定します。ここでは日に4回(6時間おき)に更新します

[Install]
WantedBy=multi-user.target
__EOF__
  • 実行権付与
sudo chmod +x /etc/systemd/system/freshclam.service
  • サービス反映
sudo systemctl daemon-reload
  • サービス開始
sudo systemctl start freshclam.service
  • 自動起動有効化
sudo systemctl enable freshclam.service
  • サービス開始確認
systemctl status freshclam.service

Active :inactive (dead)と表示されますが、 freshclam.service: Deactivated successfully.と出ていれば動作に問題はありません。

NextcloudでAntiVirusをインストール

  1. Nextcloudに管理者権限でログインします。
  2. アプリから「Antivirus for files」を検索してインストールします。

Nextcloud Antivirus for files設定

  1. 管理者メニューの「セキュリティ」に進みます。
  2. ファイルのウイルス対策で、以下の通り設定します。
  • モード: ClamAV Daemon (Socket)
  • ソケット: /var/run/clamav/clamd.ctl
  • ストリームの長さ: 262144000 (アップロードできるファイルの容量に合わせます)
  • File size limit for periodic background scans and chunked uploads, -1 means no limit:-1
  • Check only first bytes of the file, -1 means no limit :-1
  • バックグラウンドスキャン中に感染ファイルが見つかった場合: ログのみ (運用に合わせます)

設定後、「保存」をクリックして、設定完了です。