【Ubuntu 16.04 LTS Server】ClamAVで定期的にウイルスチェックし、メール通知する

スポンサーリンク
728×90 ビッグバナー

前記事でUbuntu Serverをインストールしたが、念の為、アンチウイルスソフトウェア ClamAV をインストールし、定期的にチェックするようにする。

お家サーバ用に、4/21日にリリースされたばかりの、Ubuntu 16.04 (LTS) Serverをインストールしたので、メモを残す。 ...

準備

下記コマンドでインストール

$ sudo apt install clamav clamav-daemon

尚、clamav関連の設定ファイルは、/etc/clamav/フォルダにインストールされる。

ウイルス定義の更新

$ sudo freshclam

上記コマンドで、ウイルス定義が更新できるが、下記のようなエラーが出る場合はlog設定を変更して、再度実行。

ERROR: /var/log/clamav/freshclam.log is locked by another process
ERROR: Problem with internal logger (UpdateLogFile = /var/log/clamav/freshclam.log).

デフォルト設定だと、freshclam(ウイルス定義更新)の際にログ関係でエラーが起こりやすい。したがって、一度ログファイルを削除し、ログロテートの設定を変更しておく。

$ sudo rm /var/log/clamav/freshclam.log
$ sudo touch /var/log/clamav/freshclam.log
$ sudo chown clamav:clamav /var/log/clamav/freshclam.log
$ sudo nano /etc/logrotate.d/clamav-freshclam
create 640 clamav adm
  ↓
create 640 clamav clamav

ウイルス定義の自動更新確認

clamavパッケージをインストールすると、ウイルス定義の自動更新が行われるサービスが登録されてるが確認する。

$ sudo service clamav-freshclam status

尚、/var/log/clamav/freshclam.logファイルにログが記録される。

手動でウイルスチェックの実行

下記コマンド、手動スキャン実行できるが、けっこう時間が掛かる(遅い)。

$ sudo clamscan --infected --remove --recursive /home 

フルスキャンするスクリプトファイルを作成

$ sudo nano /opt/script/clam-full.sh
#!/bin/sh
echo =========================================
date
clamscan / \
     --infected \
     --recursive \
     --log=/var/log/clamav/clamscan.log \
     --move=/var/log/clamav/virus \
     --exclude-dir=^/sys \
     --exclude-dir=^/proc \
     --exclude-dir=^/dev \
     --exclude-dir=^/var/log/clamav/virus

# --infected 感染を検出したファイルのみを結果に出力
# --recursive 指定ディレクトリ以下を再帰的に検査 圧縮ファイルは解凍して検査
# --log=FILE ログファイル
# --move=DIR 感染を検出したファイルの隔離先
# --remove 感染を検出したファイルを削除
# --exclude=FILE   検査除外ファイル(パターンで指定)
# --exclude-dir=DIR 検査除外ディレクトリ(パターンで指定)

if [ $? = 0 ]; then
  echo "ウイルス未検出."
else
  echo "ウイルス検出!!"
fi

実行権限を与える

$ sudo chmod +x /opt/script/clam-full.sh

試しに実行してみる

$ sudo /opt/script/clam-full.sh

完了までけっこう時間がかかる(1時間程度)
尚、/var/log/clamav/clamscan.logファイルにログが記録される。

cronでウイルススキャンの定期実行

$ sudo crontab -e
# m h  dom mon dow   command
0 2 * * mon /opt/script/clam-full.sh >> /var/log/clamav/clamav_scan.log

スキャン結果をメールで通知する

ウイルス検出時にはメール通知があると便利である。
まずは、スクリプトからmailコマンドが使えるようにしておく必要がある。mailコマンドやメールサーバの構築は下記記事を参照。

Ubunt Serverを独自ドメインで運用しているが、SSLボックス(CoreSSL) の公式SSL証明書を発行して貰うには、ドメイン所有...

前述で作成したスクリプトの最後の箇所を、下記のようにmail送信するように変更。

if [ $? = 0 ]; then
    echo "ウイルス未検出."
    # cat /var/log/clamav/clamscan.log | mail -s "Clamav scan OK." hogeuser@localhost
else
    echo "ウイルス検出!!"
    cat /var/log/clamav/clamscan.log | mail -s "Clamav scan NG!" hogeuser@localhost
fi

clamdを使ってみる

clamav-daemonパッケージをインストールすると、clamdのサービスが起動する。
clamdはサーバとして動作し、clamdscanコマンドを用いてソケット通信を介してウイルス検査を実行する。clamscanよりも実行速度は速いが、デーモンが必要な為、管理が複雑となる。

下記の値を調整する。
デフォルトでは、データベースファイルの更新を1時間毎(3600秒)にチェックする。

$ sudo nano /etc/clamav/clamd.conf
SelfCheck 3600

下記行を、コメントアウトしてClam AntiVirusをrootユーザーで実行する。clamavというユーザーで実行するとroot権限のファイルを検査できないため。

User clamav
↓
#User clamav

設定変更したら、下記コマンドでサービスを再起動

sudo service clamav-daemon restart

サービスの動作確認は下記。

sudo service clamav-daemon status

尚、/var/log/clamav/clamav.logファイルにログが記録される。

clamdscanコマンドで手動チェック実行

$ sudo clamdscan /root

尚、clamdscanコマンドは実行が早いが、引数が一部使えない。
又、clamdscanで、/homeフォルダなどスキャンすると「lstat() failed: Permission denied. ERROR」が発生する。調べてみたが、いまの所対策は判らないのでclamdscanは単体ファイルのスキャンなどで利用する事にした。

補足

  • Linuxにウイルス対策ソフトは不要?という議論はあるが、念の為 ClamAV をインストール。
  • /sysなどのフォルダ下で「Permission denide」のエラーが発生するので、/sys、/dev、/proc フォルダはスキャンから除外。(参考 12. 参照)
  • --logオプションを指定しても、結果は標準出力にも表示される。
  • clamscanコマンドの終了ステータス($?)で、ウイルス検出したかどうか判断できる。
  • clamdscanコマンドを利用しないのであれば、clamav-daemonパッケージのインストールは不要。

参照記事

参考

  1. Ubuntu14.04LTSで出来るだけSecureなサーバを構築する
  2. Clam AntiVirus インストール – Server World
  3. 無料で使えるLinuxのアンチウイルスソフト「Clam AntiVirus」の導入と設定の解説
  4. ClamAV
  5. ClamAV – ubuntu documentation
  6. Installing And Scanning By ClamAV On Ubuntu 14.04 LTS
  7. clamavのスキャン中のメモリ使用量を抑える
  8. Clam Antivirusに関するメモ
  9. 新米Linuxユーザーへの一言アドバイス――アンチウイルスソフトは不要です
  10. Linuxにアンチウイルスソフトは不要なのか?
  11. Clam Antivirusに関するメモ
  12. clamav + cron フルスキャンを定期実行
  13. 4.1.3. clamscanの戻り値
  14. (Linux) ClamAVで起動時スキャン、結果のメール送信
  15. シェルスクリプト(bash)のif文とtestコマンド([])自分メモ
  16. linux / mail > コマンドラインからメールを送る > echo “test” | mail -s “subject” user@software.com | ファイル添付メールの送信
スポンサーリンク
レシポンシブ広告
レシポンシブ広告

シェアする

フォローする