Linuxにアンチウイルスは必要ないと思っていたのですが、Linuxも増えてきて、ノーガードではリスクが高いと思いアンチウイルスを入れることにしました。
その手順を紹介します。
今回はClamAVというアンチウイルスを使用します。フリーですが、シェアもあり人気があるため、これを採用しました。(日本語サイトはこちら)
スワップの作成からアンチウィルスのインストール設定を行い、Timer起動までを行います。
AWSのEC2(Amazon Linux 2)を環境として使用しています。
スワップの作成
スワップとはディスクをメモリのように使う技術のことを言います。
rootユーザでログインを行い、以下のコマンドでスワップの作成を行います。
dd if=/dev/zero of=/swapfile bs=1M count=2048
countの箇所をどのくらいのサイズにするか決める場所です。単位はMB(メガバイト)です。Linuxの推奨としては実メモリの倍程度が良いとされています。(今回は2048にしました)
swapfileのファイル権限を600(ロク・ゼロ・ゼロ)に設定します。
chmod 600
skswapコマンドでスワップとして登録します。
mkswap /swapfile
Linuxが起動した時にswapfileが読み込まれるようにします
vim /etc/fstab
/swapfile swap swap defaults 1 1
下記のように入力して保存してください。
スワップを有効化します。swaponの前後を比較してみましょう。
swapon -a
swapon -a前
swapon -a後
スワップの無効化には以下のコマンドを入れます。
swapoff -a
アンチウイルスのインストール時にメモリを多く使うため、インストール前にスワップを作っておいた方がいいです。
アンチウイルスのインストール
ClamAVを入れる前にepelのインストールを行ってください。
sudo amazon-linux-extras install epel -y
EPEL リポジトリは Amazon Linux のオリジナルバージョンに既にインストールされていますが、有効にする必要があります。このリポジトリを有効にするには、yum-config-manager コマンドを使用します。
sudo yum-config-manager --enable epel
ClamAVのインストールを行います。
yum install –enablerepo=epel clamav clamav-devel clamav-update clamd
yを入力しEnterを押してください。
yを入力しEnterを押してください。
インストールが完了しました。
ClamAVの定義ファイルを最新化します。
freshclam
freshclamの定義を変更します。
vim /etc/freshclam.conf
ログをONにします。(コメントを解除)
UpdateLogFile /var/log/freshclam.log
ログのMAXサイズを2Mにします。(コメントを解除)
LogFileMaxSize 2M
時間の記録をします。(コメントを解除)
LogTime yes
LogRotateを有効化します。(コメントを解除)
LogRotate yes
DatabaseのMirrosサイトを追加します。
DatabaseMirror db.jp.clamv.net
DatabaseMirror database.ClamAV.netz
DatabaseOwner をrootユーザに変更します。(ウイルス定義ファイルがroot所有になります)
DatabaseOwner root
ClamAVの実行ファイルを作成します
scan.shファイルを新規作成し、以下のプログラムに保存してください。(ファイルの新規作成)
vim /usr/bin/scan.sh
scan.shの内容
#!/bin/sh
# ClamAVによるウイルススキャンスクリプト scan.sh
# ウイルススキャンを実行し、ウイルスを検知した場合隔離を行う。
# スキャンの実行前には、ClamAVプログラムおよびウイルス定義をアップデートする。
# スキャンの除外対象ディレクトリの末尾には、/ をつける。
export LANG=C
## ログ格納先
LOGFILE=/var/log/scanvirus.log
SCAN_RESULT=/var/log/scanresult.txt
MAX_FILESIZE=50M
MAX_SCANSIZE=50M
## スキャン除外リスト
excludeopt=""
excludeopt="${excludeopt} --exclude-dir=^/sys/"
excludeopt="${excludeopt} --exclude-dir=^/proc/"
excludeopt="${excludeopt} --exclude-dir=^/dev/"
excludeopt="${excludeopt} --exclude-dir=^/tmp/clamdscan-quarantinedir-.*/"
## 隔離ディレクトリ
QUARANTINEDIR=/tmp/clamdscan-quarantinedir-$(date +%Y%m%d)
mkdir -p ${QUARANTINEDIR}
echo "===== Scan Virus =====" >> ${LOGFILE}
echo "`date` Scan Virus start" >> ${LOGFILE}
# 1. ClamAVプログラムのアップデート
echo "`date` Update ClamAV start" >> ${LOGFILE}
yum -y --enablerepo=epel update ClamAV 1>> ${LOGFILE} 2>&1
echo "`date` Update ClamAV end" >> ${LOGFILE}
# 2. ウイルス定義の更新
echo "`date` Update Database start" >> ${LOGFILE}
/usr/bin/freshclam 1>> ${LOGFILE} 2>&1
echo "`date` Update Database end" >> ${LOGFILE}
# 3. ウイルススキャンの実施
echo "`date` Do Scan Virus start" >> ${LOGFILE}
echo "excludeopt: ${excludeopt}" >> ${LOGFILE}
/usr/bin/clamscan \
--max-filesize=${MAX_FILESIZE} --max-scansize=${MAX_SCANSIZE} \
--infected --move=${QUARANTINEDIR} --recursive ${excludeopt} / 1> ${SCAN_RESULT} 2>> ${LOGFILE}
cat ${SCAN_RESULT} >> ${LOGFILE}
echo "`date` Do Scan Virus end" >> ${LOGFILE}
echo "`date` Scan Virus complete" >> ${LOGFILE}
# EOF
ClamAVサービスを作成します。
clamscan.serviceを作成します。
vim /etc/systemd/system/clamscan.service
clamscan.serviceの内容
[Unit]
Description=ClamScanOnchotService
RefuseManualStart=noRefuseManualStop=yes
User=root
[Service]
Type=oneshot
ExecStart=/usr/bin/scan.sh
ClamAVサービスの定期実行を設定します。
clamscan.timerを作成します。
vim /etc/systemd/system/clamscan.timer
clamscan.timerの内容
[Unit]
Description=ClamScanTimer
[Timer]
OnCalendar=*-*-* 11:00:00
[Install]
WantedBy=timers.target
scan.shをリストアします。
restorecon -R /usr/bin/scan.sh
systemdの変更後のリロードを行う
systemctl deamon-reload
ClamAVタイマーを自動実行設定する
サーバ再起動後に自動でClamAVタイマーが立ち上がるように設定
systemctl enable clamscan.timer
タイマーのステータスを確認します。
systemctl status clamscan.timer
タイマーのリストを確認します。
systemctl list-timers
ClamAVタイマーの時間を変更する場合
clamscan.timerの時間を変更した場合、リスタートが必要です。
systemctl restart clamscan.timer
すると、Warningが表示されます。
systemd/system内の内容を変更した場合、deamonのリロードを毎回行ってください。
systemctl deamon-reload
以上で、ClamAVアンチウイルスの導入完了です。
お疲れ様でした。
まとめ
Linuxにアンチウイルスソフト(ClamAV)を導入してみました。
これでちょっとは安心して枕を高くして寝れそうです。
コメント