# apt-get install clamav-daemon
# clamdscan --multiscan --verbose --move=/var/log/clama action_setup: Failed to get realpath of /var/log/clama ERROR: Could not connect to clamd on LocalSocket /var/run/clamav/clamd.sock: No such file or directory ----------- SCAN SUMMARY ----------- Infected files: 0 Total errors: 1 Time: 0.000 sec (0 m 0 s) Start Date: 2021:12:26 09:04:45 End Date: 2021:12:26 09:04:45
# apt-get install apparmor-utils
# aa-complain clamd
/etc/apparmor.d/usr.sbin.clamd
# /etc/init.d/clamav-daemon stop # /etc/init.d/apparmor restart # /etc/init.d/clamav-daemon start
# User clamav User root
# /etc/init.d/clamav-daemon restart # /etc/init.d/clamav-daemon status
#!/bin/bash
PATH=/usr/bin:/bin
TITLE=""
TO="To: root\n"
SENDMAIL=/usr/sbin/sendmail
CLAMDSCAN=/usr/bin/clamdscan
#SENDMAIL=echo
# EXCLUDES=( /proc /sys /run /dev );
# OPT_EXCLUDES=( $(for e in "${EXCLUDES[@]}"; do echo "--excludes-dir=${e}"; done) );
# OPT_MULTI_THREAD=
OPT_MULTI_THREAD=--multiscan
VIRUS_MOVE_PATH=/var/log/clamav/virus
function err_print {
local msg="${@}";
printf "\x1b[31mclamav-run.sh: ${msg}\x1b[0m\n";
}
if [ ! -d ${OPT_VIRUS_MOVE_PATH} ]; then
mkdir -p ${OPT_VIRUS_MOVE_PATH};
fi
# update definition
# freshclam > /dev/null
# full scan (multi-thread)
# ${CLAMDSCAN} --multiscan --verbose --move=/var/log/clamav/virus /
# full scan (single-thread)
${CLAMDSCAN} ${OPT_MULTI_THREAD} --verbose --move=${VIRUS_MOVE_PATH} /
STATUS=$?;
# report
case ${STATUS} in
0 )
err_print "virus not found"
TITLE="Subject: ClamAV scan OK"
;;
1 )
err_print "virus found (status = ${STATUS})"
TITLE="Subject: ClamAV scan NG"
;;
* )
err_print "error occured (status = ${STATUS})"
TITLE="Subject: ClamAV scan Error"
;;
esac
echo -e ${TO}${TITLE} | cat - /var/log/clamav/clamav.log | ${SENDMAIL} -t
unset err_print
# crontab -e ----------------------------------------------------- 0 0 * * * /root/bin/clamav-run.sh -----------------------------------------------------
CONFIG_FANOTIFY=y CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y
$ uname -a Linux martinu 6.1.0-13-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.55-1 (2023-09-29) x86_64 GNU/Linux
$ ls /boot/config-6.1.0-13-* /boot/config-6.1.0-13-amd64
$ rg FANOTIFY /boot/config-6.1.0-13-amd64 9380:CONFIG_FANOTIFY=y 9381:CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y
$ clamdscan --fdpass --infected <path-to-scan-target>
| option | description | remark |
|---|---|---|
| --fdpass | clamd デーモンの実行ユーザー(clamav)と違うユーザーでスキャンする | |
| --infected | ウイルスであった場合のみ標準出力やログに出力 | |
| --config-file=<path> | <path> を clamd デーモンにアクセスするための設定ファイルに指定する | デフォルトの設定ファイルを使用する場合は指定不要 (debian の場合は /etc/clamav/clamd.conf) |
| --move=<path> | <path> を検出したウイルスファイルの移動先ディレクトリに指定する | |
| --log=<path> | <path> をログファイルの場所に指定する | |
| <path-to-scan-target> | スキャン対象のパス |