0.前書き
公開ウェブサーバ用のウイルス対策を行うことにした。
(ファイルアップロードされたりしないので、必要ない気もする…)
先人の知恵を丸パクリしてお借りして構築できたので、備忘録として残していく。
1.前提条件
本サーバではSELinuxが無効になっているため、
有効の状態で本手順を行うと、不都合が生じる可能性があります。
2.ClamAV導入
今回はClamAVを導入する上でEPELを利用するため、EPELを有効にする。
$ sudo yum -y install epel-release
続いてパッケージのインストールを実行する。
$ sudo yum -y install clamav clamav-update clamd
インストールが終わったら、以下の通り「freshclam.conf」の編集を行う。
$ sudo vi /etc/freshclam.conf
150行目の「#NotifyClamd /path/to/clamd.conf」を
「NotifyClamd /etc/clamd.d/scan.conf」に変更または、151行目に追記する。
※筆者は行っていないがここで権限の変更を行ったほうがいい可能性あり。
$ sudo chmod 744 /etc/clamd.d/scan.conf
ウイルス定義データベースの作成
$ sudo freshclam
※ここでエラーになるため、権限の設定を事前に行うべきだったか。
ClamAV update process started at Sat Mar 19 19:25:52 2022
daily database available for download (remote version: 26486)
Time: 0.9s, ETA: 0.0s [========================>] 55.37MiB/55.37MiB
Testing database: ‘/var/lib/clamav/tmp.b97db90d42/clamav-e8447726b74a5f7bd5779cd0db920646.tmp-daily.cvd’ …
Database test passed.
daily.cvd updated (version: 26485, sigs: 1976247, f-level: 90, builder: raynman)
Received an older daily CVD than was advertised. We’ll retry so the incremental update will ensure we’re up-to-date.
daily database available for update (local version: 26485, remote version: 26486)
Current database is 1 version behind.
Downloading database patch # 26486…
Time: 0.0s, ETA: 0.0s [========================>] 15.00KiB/15.00KiB
Testing database: ‘/var/lib/clamav/tmp.b97db90d42/clamav-3667efc3494995c403dc55ce932a92ce.tmp-daily.cld’ …
Database test passed.
daily.cld updated (version: 26486, sigs: 1976332, f-level: 90, builder: raynman)
main database available for download (remote version: 62)
Time: 1.9s, ETA: 0.0s [========================>] 162.58MiB/162.58MiB
Testing database: ‘/var/lib/clamav/tmp.b97db90d42/clamav-b8d9bf6075a228a7d0dfc080509ac65c.tmp-main.cvd’ …
Database test passed.
main.cvd updated (version: 62, sigs: 6647427, f-level: 90, builder: sigmgr)
bytecode database available for download (remote version: 333)
Time: 0.0s, ETA: 0.0s [========================>] 286.79KiB/286.79KiB
Testing database: ‘/var/lib/clamav/tmp.b97db90d42/clamav-ffbd7cc5a1208804c8c4c42bc9b58392.tmp-bytecode.cvd’ …
Database test passed.
bytecode.cvd updated (version: 333, sigs: 92, f-level: 63, builder: awillia2)
ERROR: NotifyClamd: No communication socket specified in /etc/clamd.d/scan.conf
ERROR: Can’t send to clamd: Socket operation on non-socket
権限の変更を行った後、sudo freshclamを実行すると、
以下の表記になり成功したかどうか不明…
ClamAV update process started at Sat Mar 19 19:34:41 2022
daily.cld database is up-to-date (version: 26486, sigs: 1976332, f-level: 90, builder: raynman)
main.cvd database is up-to-date (version: 62, sigs: 6647427, f-level: 90, builder: sigmgr)
bytecode.cvd database is up-to-date (version: 333, sigs: 92, f-level: 63, builder: awillia2)
ともあれ構築を続行し、以下の通り「scan.conf」を編集する。
$ sudo vi /etc/clamd.d/scan.conf
8行目の「Example」を「#Example」に変更または9行目に追記
219行目の「User clamscan」を「User root」変更または220行目に追記
最終行に「LocalSocket /var/run/clamd.scan/clamd.sock」を追記
clamd@scanの有効化と起動を行う。
$ sudo systemctl enable clamd@scan
$ sudo systemctl start clamd@scan
ウイルスチェック用のテストファイルをダウンロードする。
$ sudo wget http://www.eicar.org/download/eicar.com
テストファイルがダウンロードされたことを確認して、
以下コマンドにて、ウイルススキャンを実行する。
$ sudo clamdscan /
スキャンが成功すれば以下のように表示される。
/root/eicar.com: Win.Test.EICAR_HDB-1 FOUND
———– SCAN SUMMARY ———–
Infected files: 1
Time: 56.503 sec (0 m 56 s)
Start Date: 2022:03:19 22:42:16
End Date: 2022:03:19 22:43:12
これでClamAVの導入は完了となる。
3.シェルスクリプトの作成とCron設定
次にパターンファイルの更新とウイルススキャン後のファイル削除を
自動化するためにBashスクリプトとCronで設定を行う。
まず、スクリプトファイルを作成する。
$ sudo vi virus_scan.sh
#!/bin/bash
# ClamAV update
/usr/bin/freshclam
# Virus scan
/bin/clamdscan / –remove
スクリプトを実行し、動作確認する。
$ sudo bash virus_scan.sh
テストファイルが存在する状態で、スクリプトが動作すると
以下のように表示される。
ClamAV update process started at Sat Mar 19 22:42:16 2022
daily.cld database is up-to-date (version: 26486, sigs: 1976332, f-level: 90, builder: raynman)
main.cvd database is up-to-date (version: 62, sigs: 6647427, f-level: 90, builder: sigmgr)
bytecode.cvd database is up-to-date (version: 333, sigs: 92, f-level: 63, builder: awillia2)
/root/eicar.com: Win.Test.EICAR_HDB-1 FOUND
/root/eicar.com: Removed.
———– SCAN SUMMARY ———–
Infected files: 1
Time: 56.503 sec (0 m 56 s)
Start Date: 2022:03:19 22:42:16
End Date: 2022:03:19 22:43:12
ファイルが削除されていることを確認し、クーロン設定のために
権限の付与を行う。
$ sudo chmod 744 /root/virus_scan.sh
今回はAM5:00に実行するようにCronの設定を行う。
$ sudo crontab -e
0 5 * * * /root/virus_scan.sh
※以下のように設定すると毎分設定になり、すぐに検証することが可能。
* * * * * /root/virus_scan.sh
また、以下のコマンドで、Cronの実行ログを確認できる。
$ less /var/log/cron
これで毎朝5:00にClamAVでのにパターンファイルの更新と
ウイルススキャン後のファイル削除を行う設定が完了となる。
コメント