Arch Linux インストール日記 4

そうだ!アンチウイルスソフト ClamAV を入れよう

当初ここで紹介した方法では clamav-freshclam.service が正常に起動していなかった疑いがあります

対象となる方は 2024年2月14日 以前に、このサイトを見られて設定された方です

つきましては $ systemctl status clamav-freshclam.service のコマンドを実行して、緑の●になっていれば大丈夫ですが、赤のxになっている場合は、 $ systemctl disable clamav-freshclam.service および $ systemctl stop clamav-freshclam.service (ともに root パスワードを要求されます)の処理後、再起動をして新しいやり方を実行してみて下さい

※ここのブログの仕様なのか、半角記号2つ — が全角記号1つ ー として表示されることがあるようです
もし上記の物が同じように見えた場合、本来は半角記号2つだと思って下さい

ArchLinux ; Clamav ( アンチウィルスソフト )
2024/02/24 の時点では、設定の一部と6-1以降のスクリプトおよびスキャンの自動化の箇所が該当の場所になります
6-1以降は利用していませんが、自分の勉強の参考として残しております
https://korodes.com/arch_08/

新しい設定のやり方を参考にしたサイトさん
CentOS7でウィルス対策
https://gtrt7.com/blog/linux/clamav
ClamAVによるリアルタイムスキャンの設定
https://inaba-serverdesign.jp/blog/20231122/clamav-realtime-scan-v10.html

ClamAV ArchWiki
https://wiki.archlinux.jp/index.php/ClamAV

というわけで、始まります 


1.ClamAV Clam AntiVirus のインストール

$ sudo pacman -S clamav
2.ウイルス定義ファイル更新設定

2-1. 以下のコマンドを実行して下さい

$ sudo nano /etc/clamav/freshclam.conf

以下の箇所を訂正・追記・確認をして下さい(該当場所は Ctrl+w で検索して下さい)

#DatabaseDirectory /var/lib/clamav  
   ->    DatabaseDirectory /var/lib/clamav  

UpdateLogFile /var/log/clamav/freshclam.log  ※途中全角のoは本来半角です 
    ->    そのままで OK ですが、もし先頭に # が付いていたら外して下さい 

#DatabaseOwner clamav 
    ->    DatabaseOwner clamav

DatabaseMirror database.clamav.net 
    ->    #DatabaseMirror database.clamav.net 
          DatabaseMirror db.jp.clamav.net

#LogTime yes 
    ->    LogTime yes

#LogSyslog yes 
    ->    #LogSyslog yes
          LogSyslog no

Ctrl+o で保存、Ctrl+x で終了する

2-2. 次に以下のコマンドを実行して下さい

freshclam.log の作成
$ sudo touch /var/log/clamav/freshclam.log  ※oは本来半角です

freshclam.log の権限を root から clamav に変更します
$ sudo chown clamav:clamav /var/log/clamav/freshclam.log  ※oは本来半角です

権限が変更されているか確認します
$ ls -l /var/log/clamav/freshclam.log  ※oは本来半角です
-rw-r--r-- 1 clamav clamav 0 Feb 14 16:41 /var/log/clamav/freshclam.log  
上記のように clamav clamav となっていれば OK です
3.ウイルス定義ファイル最新化
 公式サイトによると、最初にウイルス定義のファイル更新を行わないと、サービスの起動等に不具合が生じるようです

$ sudo freshclam

freshclam のサービスの起動と有効化
$ sudo systemctl start clamav-freshclam.service
$ sudo systemctl enable clamav-freshclam.service

freshclam のサービスが正常にスタートしているか確認します
$ systemctl status clamav-freshclam
● clamav-freshclam.service - ClamAV virus database updater
     Loaded: loaded (/usr/lib/systemd/system/clamav-freshclam.service; enabled
; preset: disabled)
     Active: active (running) since Wed 2024-02-14 16:47:15 JST; 58s 
ago
       Docs: man:freshclam(1)
             man:freshclam.conf(5)
             https://docs.clamav.net/
   Main PID: 1804 (freshclam)
      Tasks: 1 (limit: 18800)
     Memory: 2.3M (peak: 2.8M)
        CPU: 12ms
     CGroup: /system.slice/clamav-freshclam.service
             └─1804 /usr/bin/freshclam -d --foreground=true
と、上記のように緑の●になっていてサービスが enabled 、Active が activ (running) になっていれば成功です
4.Clam AntiVirus起動・有効化
※追記          
 正直なところ、デーモンの起動は必要ない のではないかと思っています
 ここを初めて読まれた方は、5に進んで下さい
   私も当初は起動させていましたが、clamdscan を使っているわけでもないので不要ではないかと思い、現在は止めています
   Arch Linux 公式にも clamdscan を使わないなら必要ないと書いていますし…
   もし、この追記を見る 起動・有効化 された方は下記のコマンドを入力して 再起動 することにより完全に止まります

$ systemctl disable clamav-daemon.service
$ systemctl stop clamav-daemon.service
$ reboot

   あくまでデーモンを起動・有効化したいんだ、という方は下記のコマンドを実行して下さい
 なお、デーモンを起動すると1GBほどメモリを食いますし、Clamscan を実行すると更に1GBほどメモリを食うことになりますので、メモリが無駄になる可能性があります

$ systemctl start clamav-daemon.service
$ systemctl enable clamav-daemon.service

起動状態の確認
$ systemctl status clamav-daemon.service

エラーとか起きてなければ OK だと思います
5.試しにウィスルスキャンを実施
  あくまで ClamAV がきちんと機能しているかテストするためだけの疑似ウイルスファイルです
  実際には無害ですので安心して下さい

$ cd /home
$ curl https://secure.eicar.org/eicar.com.txt | clamscan -

下記の表示が出て検出されたら成功

stdin: Win.Test.EICAR_HDB-1 FOUND ← ココと

----------- SCAN SUMMARY -----------
Known viruses: 8682384
Engine version: 1.2.1
Scanned directories: 0
Scanned files: 1
Infected files: 1 ← ココ
Data scanned: 0.00 MB
Data read: 0.00 MB (ratio 0.00:1)
Time: 17.245 sec (0 m 17 s)
Start Date: 2024:01:08 14:11:09
End Date: 2024:01:08 14:11:26
6.ウィルススキャン自動実行スクリプトの導入
※設定方法自体を自己流に変化させましたので、こちらを導入されるかはお任せいたします
 特に問題があるとは思いませんが、色々やらかしてPCに再度ArchLinuxを再インストールしたあとは使用していませんので、検証は今後は個人的にはしますが、ここで述べることは致しません
 代わりに公式サイトから以下のとおりスキャンの方法がありますので、ご承知おきください
 全スキャンは簡単な文面でのスクリプト化すると楽になるでしょう(誰でも出来ますが、そのうち更新します)

◆指定のファイルだけスキャン 
$ clamscan test.txt

◆指定フォルダ内にあるファイルだけをスキャン(下の階層にあるファイルはスキャンしません)
$ clamscan --bell /home/*

◆指定のフォルダを再帰的にスキャン(下の階層も含めて全てスキャン)
$ clamscan --recursive --bell /home

◆ルートディレクトリ下の全てのファイルをスキャン(※ root 権限でもスキャン出来ないものは除く
$ sudo clamscan --recursive --bell --exclude-dir='^/sys|^/dev' /

※ # ( root ) で実行と書きましたが、sudo で大丈夫でした。
※ root 権限でもスキャンできないものというのは、その名のとおり root でも権限のない箇所です。
調べた限りでは、ArchLinux が起動している時に使用されている場所で、それ以外では使用されないため root でも処理が出来ないようです。

◆オプションについて
  --recursive ... -r でも代用可能、再帰処理をするオプション
  --infected ... -i でも代用可能、感染したファイルだけを表示させるオプション、自分は処理の経過状況がわからないので付けないことが多いです
  --bell ... 感染したファイルを見つけるとベルを鳴らしてくれるオプション、聞いたことないですが
  --remove ... 感染したファイルを削除するオプション、誤検知の可能性もあるので非推奨です
  --move=/dir ... 感染したファイルを指定するディレクトリに移動させます
  --help ... オプションが見れるヘルプ
  Windows のアンチウイルスでもそうですが、誤検知があったりしますので極力 remove や move は使わずに
  自力で考えて削除等をした方がいいと思います
  重要なファイルだったりすると目も当てられない状況にならないとも限りませんので
 
------------------------------------
以下は、現在利用はしていませんが、勉強のために残している部分です
完全丸パクリですので公式さんを見られたほうが見やすいです \(^o^)/
https://korodes.com/arch_08/

  6-1.ディレクトリの作成

$ sudo mkdir -p /srv/system

  6-2.シェルスクリプトファイル clamscan.sh を /srv/system 内に作成

$ sudo nano /srv/system/clamscan.sh

以下の内容を記述して Ctrl+o で保存、Ctrl+x で編集を終了します

  ------この下の内容から------

#!/bin/bash
PATH=/usr/bin:/bin
# excludeopt setup
excludelist=/srv/system/clamscan.exclude
if [ -s $excludelist ]; then
for i in `cat $excludelist`
do
if [ $(echo "$i"|grep \/$) ]; then
i=`echo $i|sed -e 's/^\([^ ]*\)\/$/\1/p' -e d`
excludeopt="${excludeopt} --exclude-dir=$i"
else
excludeopt="${excludeopt} --exclude=$i"
fi
done
fi
# signature update
freshclam
# virus scan
clamscan --recursive --remove ${excludeopt} /

  ------この上の内容まで記述------

   6-3.上記のスクリプトに権限を付与
  
 $ sudo chmod 700 /srv/system/clamscan.sh
7.ウイルススキャン除外ディレクトリー設定
※ sudo コマンドでは出来ないので root で入って設定する

$ su
# echo "/sys/" >> /srv/system/clamscan.exclude
# echo "/proc/" >> /srv/system/clamscan.exclude
# exit
8.ウィルススキャンの定期実行 個人的に必要ないので未導入
一応、今後のために備忘記録としてパクります \(^o^)/

  8-1.cronieをインストールしてcrontabを利用できるようにする
  
$ sudo pacman -S cronie
$ systemctl enable --now cronie.service

  8-2.crontabで一時的に nano をテキスト エディターとして使用する場合

$ sudo export EDITOR=nano
$ sudo export VISUAL=nano

  8-3.恒久的にcrontabで nano をテキスト エディターとして使用する場合 vi とシンボリックリンクする
  
$ sudo ln -s /usr/bin/nano /usr/bin/vi

  8-4.crontab を実行
  
$ sudo crontab -e

  8-5.cron が開くので、一番下まで下りて下記を記述
  
0 1 * * * /srv/system/clamscan.sh > /dev/null 2>&1
  
上記の例だと毎日午前1時にスキャンするという意味・・・だと思う
9.試しにスクリプトを実行し、フルスキャンする
※ Arch Linux をインストールしてすぐに導入すれば 30 分もかからない…と思います

$ sudo /srv/system/clamscan.sh

----------- SCAN SUMMARY -----------
Known viruses: 8680766
Engine version: 1.2.1
Scanned directories: 4057
Scanned files: 54544
Infected files: 0
Data scanned: 3709.86 MB
Data read: 2589.74 MB (ratio 1.43:1)
Time: 604.708 sec (10 m 4 s)
Start Date: 2023:12:19 10:38:39
End Date:   2023:12:19 10:48:44

なお、/home/username は ~/ に省略可能ダゾ (^^)

一応念の為に、username は個々で設定した一般ユーザー名です

これで、終わりです

Comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です