LoginSignup
1
2

More than 5 years have passed since last update.

出来るだけコピペでウィルスチェックをしたい<CentOS7 minimal>

Last updated at Posted at 2018-03-03

出来るだけコピペでウィルスチェックをしたいCentOS7

参考

http://www.a21-hp.com/wp/?p=8964
https://www.server-world.info/query?os=CentOS_7&p=clamav
http://www.server-memo.net/server-setting/clamav/epel-clamav-install.html
https://orebibou.com/2016/12/centos-7%E3%81%A7clamav%E3%81%AE%E3%83%AA%E3%82%A2%E3%83%AB%E3%82%BF%E3%82%A4%E3%83%A0%E3%82%B9%E3%82%AD%E3%83%A3%E3%83%B3%E3%82%AA%E3%83%B3%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%82%B9%E3%82%AD/
https://askubuntu.com/questions/591325/how-to-scan-on-access-with-clamav-in-14-04
https://orebibou.com/2017/01/linuxのアンチウィルスソフト『linux-malware-detectlmd』をcentos-7にインス/

別途記載した「出来るだけコピペでCentOS7minimalの環境を作りたい」がベース。

出来るだけコピペでCentOS7minimalの環境を作りたい
https://qiita.com/mm_sys/items/c4f7ae2872d59c464557

テスト用に以下の内容を用意した。

  • 仮想OS(VMware)か直接インストール。
  • OS : CentOS7 minimal
  • 使用ユーザ名 : user
  • Firewallは使う(ゾーンはpublic)
  • SELinuxはpermissive(設定終わってから戻しておいても良いかも)
  • SSH接続で各種設定可能な状態。
  • SUDOの設定済み(rootから直接行うならsudoと記載している所を消す)。

以下の作業はSSH接続とかでコピペしていって設定します。

インストール

sudo yum -y install epel-release
sudo yum -y install --enablerepo=epel clamav-server clamav-data clamav-update clamav-filesystem clamav clamav-scanner clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd

通常スキャンの設定

任意の変更箇所

この変更箇所はClamのリアルタイムスキャンの設定場所だが、今回使わないので必要だと思う人だけがコメントアウトしたり変更する場所。

記載内容 変更例 補足
13 # sudo sed -e '/^#ScanOnAccess... sudo sed -e '/^ScanOnAccess... もし使うのであれば、コメントアウト指定
18 # OnAccessIncludePath /home/user/ OnAccessIncludePath /スキャンするパス/ もし使うのであれば、コメントアウトしてパスを指定
sudo cp -p /etc/clamd.d/scan.conf /etc/clamd.d/scan.conf_`date "+%Y%m%d_%H%M%S"`
sudo sed -e 's/^Example/#Example/g' \
-e '/^#LogFile /s/^#//g' \
-e '/^#LogFileMaxSize /s/^#//g' \
-e '/^#LogTime /s/^#//g' \
-e '/^#LogRotate /s/^#//g' \
-e '/^#LocalSocket /s/^#//g' \
-e '/^#PidFile /s/^#//g' \
-e '/^#FixStaleSocket /s/^#//g' \
-e 's/^User clamscan/User root/g' \
-i  /etc/clamd.d/scan.conf
# Clamのリアルタムスキャンを使うなら下記をコメントアウト(今回は使わない)
# sudo sed -e '/^#ScanOnAccess yes /s/^#//g' -i  /etc/clamd.d/scan.conf
# ディレクトリ指定
sudo cat << '_EOT_' | sudo tee -a /etc/clamd.d/scan.conf
ExcludePath ^/dev/
ExcludePath ^/proc/
ExcludePath ^/sys/
ExcludePath ^/backup/
ExcludePath ^/home/share/
# リアルタイムスキャンする場所の指定(今回はClamのリアルタムスキャンは使用しないので、コメントアウト)
# OnAccessIncludePath /home/user/
_EOT_

リアルタイムスキャンにはファイルを除外する機能はない

http://blog.clamav.net/2016/03/configuring-on-access-scanning-in-clamav.html
Then on-access scanning will be constrained to notify-only mode and will be unable to prevent access to malicious files, since fanotify lacks the ability to block events on the system.
オンアクセス検索は通知のみのモードに制限され、悪意のあるファイルへのアクセスを防ぐことができません。なぜなら、fanotifyはシステム上のイベントをブロックする能力がないからです。

だそうです。
ちなみに、VirusEventという引数があるが、これはセキュリティ的に問題があるようなので、使わないようにします。

定義ファイルの更新

sudo cp -p /etc/freshclam.conf /etc/freshclam.conf_`date "+%Y%m%d_%H%M%S"`
sudo sed -e 's/^Example/#Example/g' \
-e '/^#UpdateLogFile /s/^#//g' \
-e '/^#LogFileMaxSize /s/^#//g' \
-e '/^#LogTime /s/^#//g' \
-e '/^#LogRotate /s/^#//g' \
-e '/^#NotifyClamd /cNotifyClamd /etc/clamd.d/scan.conf' \
-i /etc/freshclam.conf
sudo cat << '_EOT_' | sudo tee -a /etc/freshclam.conf
DatabaseMirror db.jp.clamav.net
_EOT_
sudo ln -s /etc/clamd.d/scan.conf /etc/clamd.conf
# 動かない場合は下記の内容も必要?(自分の環境ではすでにコメントアウトされていました)
# sudo cp -p /etc/sysconfig/freshclam /etc/sysconfig/freshclam_`date "+%Y%m%d_%H%M%S"`
# sudo sed -i -e "s/^FRESHCLAM_DELAY=disabled-warn/#FRESHCLAM_DELAY=disabled-warn/" /etc/sysconfig/freshclam

設定の永続化

sudo setsebool -P antivirus_can_scan_system 1
sudo systemctl start clamd@scan
sudo systemctl enable clamd@scan
sudo systemctl enable clamd@scan.service

sudo useradd -s /sbin/nologin clamav -m -d /usr/local/share/clamav -k /dev/null

定期スキャンの方法

リアルタイムスキャンをするなら、ここは必要ないと思われる。

要変更箇所
記載内容 変更例 補足
4 SCANDIR=/home/user/ SCANDIR=/スキャンしたいところ/ 定期実行の場所変更
sudo cat << '_EOT_' | sudo tee /root/virus_scan.sh
#!/bin/bash

SCANDIR=/home/user/
# 未検証
ls $SCANDIR >/dev/null 2>&1
if [ $? -ne 0 ]; then
  exit
fi
VIRUS_MVDIR=/root/virus

CLAMDSCAN=/bin/clamdscan
HOSTNAME=`hostname`
RUNDATE=`date +%Y%m%d-%H%M%S`
SCANTMP=/tmp/clamdscan_$RUNDATE
clamscan $SCANDIR --remove > $SCANTMP 2>&1
rm -f $SCANTMP
_EOT_

sudo chmod 744 /root/virus_scan.sh
# 動作させる前に、定義ファイルがないとエラーになるからアップデート
sudo freshclam
# 動作確認
sudo sh -x /root/virus_scan.sh

# 動作確認が出来たらcronに登録
sudo cat << '_EOT_' | sudo tee /etc/cron.d/virus-scan
MAILTO=root
15 3 * * * root /root/virus_scan.sh
_EOT_

リアルタイムスキャンで駆除

inotify-toolsと組み合わせてリアルタイムスキャンする方法。

https://hackurx.wordpress.com/2012/06/30/mon-script-clamav-temps-reel/
http://forum.pisilinux.org/english/clamav-and-clamav-automated-tasks/
https://doc.ubuntu-fr.org/clamav

sudo cat << '_EOT_' | sudo tee /root/clamavTR.sh
#!/bin/bash
# Script "ClamAV Real Time", by HacKurx modified by mancora
# http://hackurx.wordpress.com
# Licence: GPL v3
# Dépendance: clamav-daemon inotify-tools
# Recommandé : libnotify

#Définition des repertoires de travailles qui doivent exister
DOSSIER=/home/user/
QUARANTAINE=/tmp
LOG=$HOME/.clamavd-tr.log

while :
do

inotifywait -q -r -e  create,modify,move,delete,open,close,access  "$DOSSIER" --format '%w%f|%e' | sed --unbuffered 's/|.*//g' |

while read FICHIER; do 
    clamdscan -m -v --fdpass "$FICHIER" --move=$QUARANTAINE
        if [ "$?" == "1" ]; then
  echo "`date` - Malware found in the file '$FICHIER'. The file has been moved $QUARANTAINE." >> $LOG 
  echo -e "\033[31mMalware found!!!\033[00m" "The file '$FICHIER' has been moved to quarantaine."
  if [ -f /usr/bin/notify-send ]; then
            notify-send -u critical "ClamAV Real Time" "Malware found!!! The file '$FICHIER' has been moved to quarantaine."
        fi
        fi
done
done
_EOT_
sudo chmod 0755 /root/clamavTR.sh

serviceを登録

sudo cat << '_EOT_' | sudo tee /etc/systemd/system/clamd@realtime.service
[Unit]
Description=RealTImeVirusScan
After=network.target clamd@scan.service

[Service]
Type=simple
ExecStart=/root/clamavTR.sh
_EOT_

探査ディレクトリを浅くして処理を軽くする。

sudo sed -i -e "s/^#MaxDirectoryRecursion 20/MaxDirectoryRecursion 1/" /etc/clamd.d/scan.conf 

実行

sudo systemctl start clamd@realtime.service
sudo systemctl enable clamd@realtime.service

無害Virusのダウンロード

テストで無害なVirusをダウンロードしてみる。
うまく実行できていれば、lsで検索してもダウンロードしてきたファイルが消えているはず。

curl -O http://www.eicar.org/download/eicar.com

ログ表示

上手く出来ているか、inotify_logの中身を見て確認。

# inotify
sudo vi /usr/local/maldetect/logs/inotify_log

次はCrowiを設置してみる。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2