アンチウィルスClamAVのインストールです。
…インストールや設定の仕方によっては、システムファイルをウィルスと誤検知した際に、該当ファイルに対して自動リムーブやムーブ設定を行っている場合、サーバが壊れる可能性が高いので導入には注意しましょう。
当サイトは私的なメモでありますが、閲覧は自由です。
全ては自己責任になっています。
注意されたし。
# yum install --enablerepo=epel clamav clamav-server clamav-server-systemd clamav-update clamav-scanner Installed: clamav.x86_64 0:0.99.2-8.el7 clamav-scanner.noarch 0:0.99.2-8.el7 clamav-server.x86_64 0:0.99.2-8.el7 clamav-server-systemd.noarch 0:0.99.2-8.el7 clamav-update.x86_64 0:0.99.2-8.el7 Dependency Installed: clamav-data.noarch 0:0.99.2-8.el7 clamav-filesystem.noarch 0:0.99.2-8.el7 clamav-lib.x86_64 0:0.99.2-8.el7 clamav-scanner-sysvinit.noarch 0:0.99.2-8.el7 clamav-server-sysvinit.noarch 0:0.99.2-8.el7 nmap-ncat.x86_64 2:6.40-7.el7 Complete!
# vi /etc/clamd.d/scan.conf # Comment or remove the line below. Example ↓変更 # Comment or remove the line below. #Example # Run as another user (clamd must be started by root for this option to work) # Default: don't drop privileges User clamscan ↓変更(root権限で実行) # Run as another user (clamd must be started by root for this option to work) # Default: don't drop privileges #User clamscan # Path to a local socket file the daemon will listen on. # Default: disabled (must be specified by a user) #LocalSocket /var/run/clamd.scan/clamd.sock ↓変更(#をはずす) # Path to a local socket file the daemon will listen on. # Default: disabled (must be specified by a user) LocalSocket /var/run/clamd.scan/clamd.sock #DetectBrokenExecutables yes ↓変更 ※重要 #DetectBrokenExecutables yes DetectBrokenExecutables no ※最終行に追加 # 除外対象ディレクトリ ExcludePath ^/proc/ ExcludePath ^/dev/ ExcludePath ^/sys/
/boot/efi/EFI/redhat/grub.efi: Heuristics.Broken.Executable FOUND
/usr/lib64/libgcj_bc.so.1.0.0: Heuristics.Broken.Executable FOUND
/root/eicar.com: Eicar-Test-Signature FOUND
上記の対策に下記を行います。
# vi /etc/clamd.d/scan.conf #DetectBrokenExecutables yes DetectBrokenExecutables no
# freshclam Downloading bytecode-305.cdiff [100%] Downloading bytecode-306.cdiff [100%] Downloading bytecode-307.cdiff [100%] Downloading bytecode-308.cdiff [100%] Downloading bytecode-309.cdiff [100%] Downloading bytecode-310.cdiff [100%] Downloading bytecode-311.cdiff [100%] Downloading bytecode-312.cdiff [100%] bytecode.cld updated (version: 312, sigs: 74, f-level: 63, builder: neo) Database updated (6309601 signatures) from database.clamav.net (IP: 69.12.162.28)
# systemctl enable clamd.scan # systemctl start clamd.scan
もくじ
起動しなかった場合
# systemctl status clamd.scan.service ● clamd.scan.service - SYSV: The clamd server running for scan Loaded: loaded (/etc/rc.d/init.d/clamd.scan; bad; vendor preset: disabled) Active: failed (Result: exit-code) since Wed 2017-09-27 15:18:31 JST; 21s ago Docs: man:systemd-sysv-generator(8) Process: 677 ExecStop=/etc/rc.d/init.d/clamd.scan stop (code=exited, status=0/SUCCESS) Process: 1384 ExecStart=/etc/rc.d/init.d/clamd.scan start (code=exited, status=1/FAILURE) clamd[1389]: Not loading PUA signatures. clamd[1389]: Bytecode: Security mode set to "TrustSigned". clamd[1389]: Loaded 6303893 signatures. clamd[1389]: LOCAL: Socket file /var/run/clamd.scan/clamd.sock is in use by another process. clamd.scan[1384]: Starting clamd.scan: ERROR: LOCAL: Socket file /var/run/clamd.scan/clamd.sock is in use by another process. clamd.scan[1384]: [FAILED] systemd[1]: clamd.scan.service: control process exited, code=exited status=1 systemd[1]: Failed to start SYSV: The clamd server running for scan. systemd[1]: Unit clamd.scan.service entered failed state. systemd[1]: clamd.scan.service failed.
# echo SHUTDOWN | nc -U /var/run/clamd.scan/clamd.sock
# ps aux | grep "clam" root 1529 0.0 0.0 112664 980 pts/0 S+ 15:20 0:00 grep --color=auto clam root 32487 0.0 0.0 0 0 ? Zs 15:00 0:00 [freshclam-sleep] <defunct>
# kill -9 32487
# systemctl start clamd.scan
テスト
# clamdscan -c /etc/clamd.d/scan.conf
ウィルス検知テスト
# wget http://www.eicar.org/download/eicar.com
# clamdscan -c /etc/clamd.d/scan.conf /root/eicar.com: Eicar-Test-Signature FOUND ----------- SCAN SUMMARY ----------- Infected files: 1 Time: 0.003 sec (0 m 0 s)
模擬ウィルス削除
# rm -f eicar.com
定期実行設定
定期実行スクリプト @see https://qiita.com/yamadar/items/c916152462272b397100
# vi /root/clamdscan.sh #!/bin/sh ## ----------------------------------------------- SCAN_DIR=/ LOG="/var/log/clamdscan_result.log" LOG_LATEST="/var/log/clamdscan_result.log.latest" FROM=ClamAV@`hostname` TO=root ## ----------------------------------------------- #----------------------------- # virus database update freshclam --quiet #----------------------------- # update clamd yum -y update clamd > /dev/null 2>&1 yum -y update clamav-db > /dev/null 2>&1 #----------------------------- # restart clamd (release memory) systemctl restart clamd.scan > /dev/null #----------------------------- # scan /usr/bin/clamdscan -c /etc/clamd.d/scan.conf --infected --log=$LOG $SCAN_DIR > $LOG_LATEST #----------------------------- # send email if virus is found cat $LOG_LATEST | grep 'FOUND' > /dev/null if [ "$?" -eq 0 ] then { echo "From: $FROM" echo "To: $TO" echo "Subject: [SERVER] Virus Found in `hostname`" echo echo "Virus Found in `hostname`" echo cat $LOG } | /usr/sbin/sendmail -f $FROM $TO fi
# chmod +x /root/clamdscan.sh
設定を反映
# systemctl restart clamd@scan
テスト
# wget http://www.eicar.org/download/eicar.com
# /root/clamdscan.sh
メールが飛んだらOK
# vi /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO='' # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed ## 2時50分にClamAV実行 50 2 * * * root /root/clamdscan.sh
# systemctl restart crond