#author("2023-12-17T13:36:40+09:00","","")
#author("2023-12-17T13:38:12+09:00","","")
#topicpath

//////////////////////////////////////////////////////////////////////////////
* ClamAV [#ybd9545e]
- アンチウイルスソフト

///////////////////////////////////////////////////////////////////////////////
* 目次 [#u3cbd3b6]
#contents();

//////////////////////////////////////////////////////////////////////////////
* 準備 [#if342208]
//============================================================================
** インストール [#of00fd6f]
- 幾つか設定の仕方があるが、定期自動実行をしたい為、 daemon をインストールする:
 # apt-get install clamav-daemon

//============================================================================
** 設定 [#dec237f6]
- 素でとりあえず実行してみると、エラーになる:
 # 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
-- これは apparmor というカーネル拡張機能が clamav の動作を制限している為に起きる。
- apparmor の設定を変更する
// ++ /etc/apparmor.d/local/usr.sbin.clamd の編集
//  /home/ r,
// -- 書式:
//  /<clamavのアクセスを許可するパス>/ <パーミッション>,
//  # パスの最後の "/" と、パーミッションの最後の "," は必要なので注意。
++ apparmor-utils をインストールする(デフォルトでは入っていない)
 # apt-get install apparmor-utils
++ clamav を root で実行出来るように設定変更する
 # aa-complain clamd
--- これによって、以下のファイルが変更される:
 /etc/apparmor.d/usr.sbin.clamd
++ apparmor の設定を反映させる為、apparmor と clamd を再起動する
 # /etc/init.d/clamav-daemon stop
 # /etc/init.d/apparmor restart
 # /etc/init.d/clamav-daemon start


- root 権限で実行させる
++ /etc/clamav/clamd.conf
 # User clamav
 User root
--- この設定ファイルは、行の途中からコメントを書くことは出来ない(書くとエラーになる)ので注意。
++ 変更を反映させる為、daemon を再起動する
 # /etc/init.d/clamav-daemon restart
 # /etc/init.d/clamav-daemon status
- 自動実行させる
++ 自動実行用のスクリプトを用意する
--- /root/bin/clamav-run.sh
 #!/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
 
++ cron に登録する
 # crontab -e
 -----------------------------------------------------
 0 0 * * * /root/bin/clamav-run.sh
 -----------------------------------------------------

//============================================================================
** リアルタイムスキャンの設定 [#q287e4a4]
+ 稼働中のカーネルが FANOTIFY をサポートしていることを確認する
-- 以下の2行が確認出来ればOK
 CONFIG_FANOTIFY=y
 CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y
-- 確認手順
+++ /boot/config-<VERSION> の <VERSION> 部分が何かを特定する為、稼働中のカーネルのバージョンを確認する
 $ 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
+++ 稼働中のカーネルの config ファイルのファイル名を確認する
 $ ls /boot/config-6.1.0-13-*
 /boot/config-6.1.0-13-amd64
+++ config ファイルの設定内容から、関係箇所を grep (または rg)で検索し、値を確認する 
 $ rg FANOTIFY /boot/config-6.1.0-13-amd64 
 9380:CONFIG_FANOTIFY=y
 9381:CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y

//////////////////////////////////////////////////////////////////////////////
* 手動スキャン [#c927f10b]
- 手動スキャンには、 (1) clamscan を使う方法と、(2) clamav-daemon を動かしておいて clamdscan を使う方法の2つがある。
- (1) はオーバーヘッドが大きく非常に時間がかかるので、(2) を使うことにする。
//============================================================================
** clamdscan による手動スキャン [#e2fe3173]
- コマンド書式
 $ clamdscan --fdpass --infected <path-to-scan-target>
- コマンドラインオプション
|~option               |~description                                                       |~remark |
|--fdpass              |clamd デーモンの実行ユーザー(clamav)と違うユーザーでスキャンする  | |
|--infected            |ウイルスであった場合のみ標準出力やログに出力                       | |
|--config-file=<path>  |<path> を clamd デーモンにアクセスするための設定ファイルに指定する |デフォルトの設定ファイルを使用する場合は指定不要&br;(debian の場合は /etc/clamav/clamd.conf) |
|--move=<path>         |<path> を検出したウイルスファイルの移動先ディレクトリに指定する    | |
|--log=<path>          |<path> をログファイルの場所に指定する                              | |
|<path-to-scan-target> |スキャン対象のパス                                                 | |



//////////////////////////////////////////////////////////////////////////////
* 参考リンク [#links]
- [[ClamAVによる定期ウイルススキャンの設定>https://inaba-serverdesign.jp/blog/20170913/clamav_scan_virus_install.html]]
- [[Debian 9.3でchkrootkitとClamAVでウイルス対策 (Linux自作PC 9)>https://ksk-log.com/post/2017/12/2017-12-13-linux-gpu-pc9/]]
- [[Debian 9.3 ClamAV高負荷問題の対処3 (Linux自作PC)>https://ksk-log.com/post/2018/01/2018-01-09-high-load4/]]
- [[如是我聞 - a blog about life and tech>https://blog.nomott.com/linux-antivirus-clamav-install-config/]]

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS