ウィルス対策ソフト「Clam AntiVirus」を自宅サーバー(CentOS7)にインストールします。
例によってOS標準のリポジトリには存在しません。
RPMforgeリポジトリは終了したのかアクセスできず。
EPELリポジトリでは導入できるらしいです。
以下のサイトを参考に導入しました。
ありがとうございました。
CentOS7へclamavインストール(epelリポジトリ使用) | server-memo.net
「RPMforge」にあるclamdとは異なり、「epel」のリポジトリのClamAVはその機能ごとに色々なパッケージに分かれてるようです。複数のパッケージをインストールします。
■clamavパッケージのインストール
■clamd@scan設定
デーモンとして常時動作させるためclamd@scanの設定を行っていきます。
設定ファイル「/etc/clamd.d/scan.conf」を編集します。
# nano -K /etc/clamd.d/scan.conf
各項目を検索し、変更・追加します。
LogFile /var/log/clamd.scan ←ログファイル設定
LogFileMaxSize 2M ←ログファイルサイズ設定
LogTime yes ←ログに時間を表示
LogRotate yes ←ログローテーション設定
LocalSocket /var/run/clamd.scan/clamd.sock ←ローカルソケット使用設定(1行での設定となります)
FixStaleSocket yes ←異常終了時にソケットを削除
ExcludePath ^/proc/ ←スキャン除外ディレクトリ設定
ExcludePath ^/sys/
ExcludePath ^/dev/
ExcludePath ^/home/satoh163/mondo/
#User clamscan
User root ←実行ユーザ設定
■clamd@scan起動、ステータス確認、有効化(自動起動化)
# systemctl status clamd@scan
# systemctl enable clamd@scan
■ウィルスデータベースの自動更新設定
「freshclam」の設定ファイル「/etc/freshclam.conf」を編集。
# nano -K /etc/freshclam.conf
各項目を検索し、変更・追加します。
UpdateLogFile /var/log/freshclam.log ←ログファイル設定
LogFileMaxSize 2M ←ログファイルサイズ設定
LogTime yes ←ログに時間を表示
LogRotate yes ←ログローテーション設定
#DatabaseMirror database.clamav.net ←コメント化
DatabaseMirror db.jp.clamav.net ←ミラーデータベース設定
#NotifyClamd /path/to/clamd.conf
NotifyClamd /etc/clamd.d/scan.conf ←clamd@scanへの更新通知
●「/etc/sysconfig/freshclam」を編集しておく必要がありました。
● clamd デーモンを起動しておく必要がありました。
# systemctl start clamav-daemon.service
# systemctl status clamav-daemon.service
●また、clamscanがclamdの設定ファイルを/etc/に求めるようなので、シンボリックリンクを張ります。
●それと、clamavというユーザーが存在するか確認(# cat /etc/passwd)し、無ければ作成します。
*ログインの必要がないのでnologinで。
●手動で「freshclam」を実行してウイルスデータベースが更新できることを確認。
ClamAV update process started at Mon Dec 26 19:34:13 2016
Downloading main.cvd [100%] main.cvd updated (version: 57, sigs: 4218790, f-level: 60, builder: amishhammer)
Downloading daily.cvd [100%] daily.cvd updated (version: 22779, sigs: 1187394, f-level: 63, builder: neo)
Downloading bytecode.cvd [100%] bytecode.cvd updated (version: 285, sigs: 57, f-level: 63, builder: bbaker)
Database updated (5406241 signatures) from database.clamav.net (IP: 193.1.193.64)
Clamd successfully notified about the update.
#
●ウィルスデータベースの自動更新設定は、cron 設定ファイル「/etc/cron.d/clamav-update」にあります。
デフォルトで、3時間おきにウイルスデータベースの更新がチェックされます。
通知先を変えたい場合、MAILTO=rootを変更します。
#MAILTO=root
MAILTO=info@a21-hp.com
## It is ok to execute it as root; freshclam drops privileges and becomes
## user ‘clamupdate’ as soon as possible
0 */3 * * * root /usr/share/clamav/freshclam-sleep
処理が完了するとメールが送られてくるはずなのですが、うまく機能していない節がある・・・。
(clamav-freshclam.serviceを起動していないのが原因か?・・・起動すると手動テストが通らない???)
・・・そこで、clamav-freshclam.serviceは停止のまま、とりあえずの代替案として
●crontabでウィルスデータベースの自動更新設定をします。
まず、ウイルスデータベース更新用スクリプトを作成します。(/scriptsディレクトリは昨日作成済み。)
# nano -K /scripts/clamav-update.sh
以下の内容をコピー&ペーストします。
#!/bin/bash /usr/local/bin/freshclam -u root
●作成したファイルに実行権限を付加します。
# chmod +x /scripts/clamav-update.sh
●cronに登録する前に、手動で実行し、動作を確認します。
# sh -x /scripts/clamav-update.sh
処理結果の情報は標準出力のみです。
●クーロンタブ(crontab)で、ジョブを追加します。
# crontab -e
●ファイルの最後にclamav-update.shを追加します。
MAILTO=info@a21-hp.com 00 03 * * * /scripts/do_backup.sh 30 02 * * * /scripts/clamav-update.sh
毎日2:30に、/scripts/clamav-update.sh を自動実行するように追加しました。
■ウィルス検出テスト
先に、ウイルスチェックテスト用ファイル(無害)である「eicar.com」をダウンロード。
# wget http://www.eicar.org/download/eicar.com
clamdscan を手動で実行し、動作確認します。
/root/eicar.com: Eicar-Test-Signature FOUND
———– SCAN SUMMARY ———–
Infected files: 1
Time: 0.017 sec (0 m 0 s)
#
/root ディレクトリ以下のスキャンなので、すぐ終わります。
「Infected files: 1」となっていれば、検出成功です。
■定期ウィルスチェックの設定
まず、ウイルススキャン用スクリプトを作成します。(/scriptsディレクトリは昨日作成済み。)
以下の内容をコピー&ペーストします。
#!/bin/bash SCANDIR=/ VIRUS_MVDIR=/root/virus MAILADDR=info@a21-hp.com CLAMDSCAN=/bin/clamdscan HOSTNAME=a21-hp.com RUNDATE=`date +%Y%m%d-%H%M%S` SCANTMP=/tmp/clamdscan_$RUNDATE CLAMUPDATE="clamav-server \ clamav-data \ clamav-update \ clamav-filesystem \ clamav \ clamav-scanner-systemd \ clamav-devel \ clamav-lib \ clamav-server-systemd" # ClamAV update yum -y update $CLAMUPDATE # Virus scan #$CLAMDSCAN $SCANDIR > $SCANTMP 2>&1 #$CLAMDSCAN $SCANDIR --move=$VIRUS_MVDIR > $SCANTMP 2>&1 $CLAMDSCAN $SCANDIR --remove > $SCANTMP 2>&1 # Mail notification [ ! -z "$(grep FOUND$ $SCANTMP)" ] && \ cat $SCANTMP | mail -s "[Virus Found] $HOSTNAME $RUNDATE" $MAILADDR [ -z "$(grep FOUND$ $SCANTMP)" ] && \ cat $SCANTMP | mail -s "[Virus Not Found] $HOSTNAME $RUNDATE" $MAILADDR rm -f $SCANTMP
必要な部分を修正します。
5行目で、結果の通知先メールアドレスを指定します。
8行目に、ホスト名を指定します。
30~32行目で、ウィルスの対処を選択します。コメントアウトした行により動作が変わります。
30行目は「通知のみ」、31行目は4行目のVIRUS_MVDIRで指定したディレクトリに「移動(隔離)」、32行目は「削除」です。
●作成したファイルに実行権限を付加します。
# chmod +x /scripts/do_virusscan.sh
●cronに登録する前に、手動で実行し、動作を確認します。
# sh -x /scripts/do_virusscan.sh
処理が完了するとメールが送られてきます。
ルート(/)からのスキャンなので、終了まで15分ほどかかりました。
●クーロンタブ(crontab)で、ジョブを追加します。
# crontab -e
●ファイルの最後から2番目にvirus_check.shを追加します。
MAILTO=info@a21-hp.com 00 03 * * * /scripts/do_backup.sh 40 02 * * * /scripts/do_virusscan.sh 30 02 * * * /scripts/clamav-update.sh
毎日2:40に、/scripts/do_virusscan.sh を自動実行するように追加しました。
2:40ウィルスチェック開始後、パッケージのアップデートに関するメールが届きました。
2:57ウィルスチェックが完了し、再度、シェルスクリプトからの通知メールが届きました。
「Infected files: 0」となっており、ウィルスは検出されず。
-
先頭行の「/run/user/1000/gvfs: lstat() failed: Permission denied. ERROR」は、GVFS(GNOMEデスクトップの仮想ファイルシステム)の権限が無いらしい。
実際、# ls -la /run/user/1000 を実行してみると、gvfs のパーミッション、ユーザ、グループ、サイズ、作成日が「?」と表示さます。要は、/run/user/1000/gvfsディレクトリに対して、ウィルススキャン実行ユーザであるrootにアクセス権が無い状態です。
このエラーが出ないようにするには、アンマウントします。
ただし、再起動のたびにマウントされるので、.bashrc 内にumountの記述を追加してみました。
# nano -K ~/.bashrc
最終行にでも以下を追加。オプション「-l」を付けると、正常にアンマウントされます。
umount -l /run/user/1000
再起動したら、今後はエラー表示されない筈です。
それより、ウィルスチェックが開始2:40で完了2:57でした。
続いて3:00からバックアップ処理開始だと少し、時間の余裕が足りなかったようです。
・・・のちほど、見直しましょう。
・・・これで、何とかウィルス対策ソフトも導入完了しました。