Debian 13 (trixie) - アンチウィルスソフト導入!

Updated:


Debian GNU/Linux 13 (trixie) にウイルス対策ソフト ClamAV をインストールする方法についての記録です。

以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。
(当然ながら、興味がなければスルーしてください)

0. 前提条件

  • Debian GNU/linux 13.0.0 (trixie; 64bit) での作業を想定。
  • root ユーザでの作業を想定。

1. ClamAV のインストール

# apt -y update
# apt -y install clamav

ClamAV インストール後は、ウイルスデータベース更新のサービス clamav-freshclam が自動で起動しているはず。
また、しばらくすると、 /var/lib/clamav/ ディレクトリ配下にウイルスデータベースがダウンロードされる。
ダウンロードの状況は、ログファイル /var/log/clamav/freshclam.log で確認できる。

2. ウイルススキャンのテスト(clamscan, ウイルス無しの場合)

以下のようにして、ウイルススキャンを行ってみる。
(スキャンするディレクトリを指定するなら、最後にディレクトリを指定する)

# clamscan --infected --remove --recursive

----------- SCAN SUMMARY -----------
Known viruses: 8708636
Engine version: 1.4.3
Scanned directories: 5
Scanned files: 5
Infected files: 0
Data scanned: 0.02 MB
Data read: 0.01 MB (ratio 2.00:1)
Time: 27.205 sec (0 m 27 s)
Start Date: 2025:10:01 15:06:10
End Date:   2025:10:01 15:06:37
  • --infected : 感染ファイルのみ結果出力
  • --remove : 感染ファイルを削除(注意)
    --move で感染ファイルを別ディレクトリへ移動してもよいだろう)
  • --recursive : サブディレクトリも再帰的にスキャン

その他のオプションについては clamscan --help 等で確認

3. テスト用ウイルスファイルの準備

ウイルスが有る場合に正常に機能するかをテストするために、まずテスト用ウイルスを用意する。

File: eicar.com

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
  • ここ からダウンロードすることも可能。
  • これ をダウンロードしてもよい。

4. ウイルススキャンのテスト(clamscan, ウイルス有りの場合)

# clamscan --infected --remove --recursive
/root/eicar.com: Eicar-Signature FOUND
/root/eicar.com: Removed.

----------- SCAN SUMMARY -----------
Known viruses: 8708636
Engine version: 1.4.3
Scanned directories: 5
Scanned files: 6
Infected files: 1
Data scanned: 0.02 MB
Data read: 0.01 MB (ratio 2.00:1)
Time: 27.144 sec (0 m 27 s)
Start Date: 2025:10:01 15:07:08
End Date:   2025:10:01 15:07:36
  • --infected : 感染ファイルのみ結果出力
  • --remove : 感染ファイルを削除(注意)
    --move で感染ファイルを別ディレクトリへ移動してもよいだろう)
  • --recursive : サブディレクトリも再帰的にスキャン

その他のオプションについては clamscan --help 等で確認

5. ClamAV デーモン のインストール

clamscan によるウイルススキャンは重いため、リアルタイムスキャンには clamdscan を使用する。

# apt -y install clamav-daemon

ClamAV デーモンインストール後は、clamav-daemon が自動で起動しているはず。

6. ウイルススキャンのテスト(clamdscan, ウイルス無しの場合)

以下のようにして、clamdscan でウイルススキャンを行ってみる。
(スキャンするディレクトリを指定するなら、最後にディレクトリを指定する)

# clamdscan --fdpass --infected --remove

----------- SCAN SUMMARY -----------
Infected files: 0
Time: 16.896 sec (0 m 16 s)
Start Date: 2025:10:01 15:08:06
End Date:   2025:10:01 15:08:23
  • --fdpass : clamav と異なるユーザでスキャンする場合
    (今回、 root ユーザなので)
  • --infected : 感染ファイルのみ結果出力
  • --remove : 感染ファイルを削除(注意)
    --move で感染ファイルを別ディレクトリへ移動してもよいだろう)
  • clamdscan では --recursive オプションは使用不可

7. テスト用ウイルスファイルのダウンロード

(3. と同じ)

8. ウイルススキャンのテスト(clamdscan, ウイルス有りの場合)

# clamdscan --fdpass --infected --remove
/root/eicar.com: Eicar-Signature FOUND
/root/eicar.com: Removed.

----------- SCAN SUMMARY -----------
Infected files: 1
Time: 0.027 sec (0 m 0 s)
Start Date: 2025:10:01 15:08:49
End Date:   2025:10:01 15:08:49
  • --fdpass : clamav と異なるユーザでスキャンする場合
    (今回、 root ユーザなので)
  • --infected : 感染ファイルのみ結果出力
  • --remove : 感染ファイルを削除(注意)
    --move で感染ファイルを別ディレクトリへ移動してもよいだろう)
  • clamdscan では --recursive オプションは使用不可

9. freshclam の設定

# dpkg-reconfigure clamav-freshclam

インタラクティブに次の項目を設定できる。

  • ウイルスデータベースの更新方法
    daemon / ifup.d / cron / manual ?
    (当方、 daemon とした)
  • データベースを取得するためのミラーサイトの選択
    (以下の1番目を選択。2,3番目はデフォルト)
    • DatabaseMirror db.jp.clamav.net
    • DatabaseMirror db.local.clamav.net
    • DatabaseMirror database.clamav.net
  • プロキシの設定
    (当方はプロキシは使用しない。何も入力せずに次へ)
  • 一日当たりの更新回数
    (当方、デフォルトの「1日24回」とした)
  • データベース更新後に clamd に通知するか?
    (当方、「通知 Yes」とした)
  • バイトコードデータベースをダウンロードするか?
    (当方、「ダウンロード Yes」とした(ある意味、ダウンロードは必須なので))
  • プライベートミラーを私用するか?
    (当方、使用しない(ローカル環境で複数の ClamAV を使用しない)ので、何も入力せずに次へ)
  • ログローテーションするか?
    (当方、「する Yes」とした)

設定ファイルは以下のようになった。

File: /etc/clamav/freshclam.conf

# Automatically created by the clamav-freshclam postinst
# Comments will get lost when you reconfigure the clamav-freshclam package

DatabaseOwner clamav
UpdateLogFile /var/log/clamav/freshclam.log
LogVerbose false
LogSyslog false
LogFacility LOG_LOCAL6
LogFileMaxSize 0
LogRotate true
LogTime true
Foreground false
Debug false
MaxAttempts 5
DatabaseDirectory /var/lib/clamav
DNSDatabaseInfo current.cvd.clamav.net
ConnectTimeout 30
ReceiveTimeout 0
TestDatabases yes
ScriptedUpdates yes
CompressLocalDatabase no
Bytecode true
NotifyClamd /etc/clamav/clamd.conf
# Check for new database 24 times a day
Checks 24
DatabaseMirror db.jp.clamav.net
DatabaseMirror db.local.clamav.net
DatabaseMirror database.clamav.net

10. ClamAV デーモンの設定

# dpkg-reconfigure clamav-daemon

設定項目が多数あるが、全てデフォルトでよい。

設定ファイルは以下のようになった。

File: /etc/clamav/clamd.conf

#Automatically Generated by clamav-daemon postinst
#To reconfigure clamd run #dpkg-reconfigure clamav-daemon
#Please read /usr/share/doc/clamav-daemon/README.Debian.gz for details
LocalSocket /var/run/clamav/clamd.ctl
FixStaleSocket true
LocalSocketGroup clamav
LocalSocketMode 666
# TemporaryDirectory is not set to its default /tmp here to make overriding
# the default with environment variables TMPDIR/TMP/TEMP possible
User clamav
ScanMail true
ScanArchive true
ArchiveBlockEncrypted false
MaxDirectoryRecursion 15
FollowDirectorySymlinks false
FollowFileSymlinks false
ReadTimeout 180
MaxThreads 12
MaxConnectionQueueLength 15
LogSyslog false
LogRotate true
LogFacility LOG_LOCAL6
LogClean false
LogVerbose false
PreludeEnable no
PreludeAnalyzerName ClamAV
DatabaseDirectory /var/lib/clamav
OfficialDatabaseOnly false
SelfCheck 3600
Foreground false
Debug false
ScanPE true
MaxEmbeddedPE 10M
ScanOLE2 true
ScanPDF true
ScanHTML true
MaxHTMLNormalize 10M
MaxHTMLNoTags 2M
MaxScriptNormalize 5M
MaxZipTypeRcg 1M
ScanSWF true
ExitOnOOM false
LeaveTemporaryFiles false
AlgorithmicDetection true
ScanELF true
IdleTimeout 30
CrossFilesystems true
PhishingSignatures true
PhishingScanURLs true
PhishingAlwaysBlockSSLMismatch false
PhishingAlwaysBlockCloak false
PartitionIntersection false
DetectPUA false
ScanPartialMessages false
HeuristicScanPrecedence false
StructuredDataDetection false
CommandReadTimeout 30
SendBufTimeout 200
MaxQueue 100
ExtendedDetectionInfo true
OLE2BlockMacros false
AllowAllMatchScan true
ForceToDisk false
DisableCertCheck false
DisableCache false
MaxScanTime 120000
MaxScanSize 100M
MaxFileSize 25M
MaxRecursion 16
MaxFiles 10000
MaxPartitions 50
MaxIconsPE 100
PCREMatchLimit 10000
PCRERecMatchLimit 5000
PCREMaxFileSize 25M
ScanXMLDOCS true
ScanHWP3 true
MaxRecHWP3 16
StreamMaxLength 25M
LogFile /var/log/clamav/clamav.log
LogTime true
LogFileUnlock false
LogFileMaxSize 0
Bytecode true
BytecodeSecurity TrustSigned
BytecodeTimeout 60000
OnAccessMaxFileSize 5M

11. ウイルススキャンの定期実行設定

clamdscan による実行用スクリプトの作成。(一例。簡易版)

File: /root/clamdscan.sh

#!/bin/bash

PATH=/usr/bin:/bin

# ウイルススキャン
CLAMSCANLOG=`mktemp`
TARGET="$(mount | egrep -v ' type +(sysfs|proc|configfs) ' | cut -d ' ' -f 3)"
clamdscan --fdpass --infected --remove $TARGET > $CLAMSCANLOG 2>&1

# レポートのメール送信(ウイルス検知時のみ)
# ※ログ内の行の最後に "FOUND" の文字列があるものをチェック
if [ -n "$(grep FOUND$ $CLAMSCANLOG)" ]; then
  grep -A 1 FOUND$ $CLAMSCANLOG | mail -s "Virus Found in `hostname`" root
fi

# スキャンログをシスログに出力
cat $CLAMSCANLOG | logger -t $(basename ${0})
rm -f $CLAMSCANLOG
  • 上記スクリプト内 $TARGET について、
    仮想ファイルシステムをスキャンする際に LibClamAV Warning: fmap_readpage: pread fail: ... という警告が出力されるので、それを抑止するため、スキャン対象を仮想ファイルシステム以外としている。
  • それでもエラーになる(スキャンできない)ファイルが多数存在する。(要調査

実行権限付与。

# chmod +x /root/clamdscan.sh

cron 登録。(毎日深夜2:50に実行する例)

File: /etc/cron.d/clamdscan

50 2 * * * root /root/clamdscan.sh > /dev/null

以上。





 

Sponsored Link

 

Comments