Linuxにアンチウイルスは必要ないと思っていたのですが、Linuxも増えてきて、ノーガードではリスクが高いと思いアンチウイルスを入れることにしました。
その手順を紹介します。
今回はClamAVというアンチウイルスを使用します。フリーですが、シェアもあり人気があるため、これを採用しました。(日本語サイトはこちら)
スワップの作成からアンチウィルスのインストール設定を行い、Timer起動までを行います。
AWSのEC2(Amazon Linux 2)を環境として使用しています。
スワップの作成
スワップとはディスクをメモリのように使う技術のことを言います。
rootユーザでログインを行い、以下のコマンドでスワップの作成を行います。
dd if=/dev/zero of=/swapfile bs=1M count=2048countの箇所をどのくらいのサイズにするか決める場所です。単位はMB(メガバイト)です。Linuxの推奨としては実メモリの倍程度が良いとされています。(今回は2048にしました)
swapfileのファイル権限を600(ロク・ゼロ・ゼロ)に設定します。
chmod 600skswapコマンドでスワップとして登録します。
mkswap /swapfileLinuxが起動した時にswapfileが読み込まれるようにします
vim /etc/fstab/swapfile swap swap defaults 1 1下記のように入力して保存してください。
スワップを有効化します。swaponの前後を比較してみましょう。
swapon -aswapon -a前

swapon -a後

スワップの無効化には以下のコマンドを入れます。
swapoff -aアンチウイルスのインストール時にメモリを多く使うため、インストール前にスワップを作っておいた方がいいです。
アンチウイルスのインストール
ClamAVを入れる前にepelのインストールを行ってください。
sudo amazon-linux-extras install epel -yEPEL リポジトリは Amazon Linux のオリジナルバージョンに既にインストールされていますが、有効にする必要があります。このリポジトリを有効にするには、yum-config-manager コマンドを使用します。
sudo yum-config-manager --enable epelClamAVのインストールを行います。
yum install –enablerepo=epel clamav clamav-devel clamav-update clamdyを入力しEnterを押してください。
yを入力しEnterを押してください。
インストールが完了しました。
ClamAVの定義ファイルを最新化します。
freshclamfreshclamの定義を変更します。
vim /etc/freshclam.confログをONにします。(コメントを解除)
UpdateLogFile /var/log/freshclam.logログのMAXサイズを2Mにします。(コメントを解除)
LogFileMaxSize 2M時間の記録をします。(コメントを解除)
LogTime yesLogRotateを有効化します。(コメントを解除)
LogRotate yesDatabaseのMirrosサイトを追加します。
DatabaseMirror db.jp.clamv.net
DatabaseMirror database.ClamAV.netzDatabaseOwner をrootユーザに変更します。(ウイルス定義ファイルがroot所有になります)
DatabaseOwner rootClamAVの実行ファイルを作成します
scan.shファイルを新規作成し、以下のプログラムに保存してください。(ファイルの新規作成)
vim /usr/bin/scan.shscan.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}
# EOFClamAVサービスを作成します。
clamscan.serviceを作成します。
vim /etc/systemd/system/clamscan.serviceclamscan.serviceの内容
[Unit]
Description=ClamScanOnchotService
RefuseManualStart=noRefuseManualStop=yes
User=root
[Service]
Type=oneshot
ExecStart=/usr/bin/scan.shClamAVサービスの定期実行を設定します。
clamscan.timerを作成します。
vim /etc/systemd/system/clamscan.timerclamscan.timerの内容
[Unit]
Description=ClamScanTimer
[Timer]
OnCalendar=*-*-* 11:00:00
[Install]
WantedBy=timers.target
scan.shをリストアします。
restorecon -R /usr/bin/scan.sh
systemdの変更後のリロードを行う
systemctl deamon-reloadClamAVタイマーを自動実行設定する
サーバ再起動後に自動でClamAVタイマーが立ち上がるように設定
systemctl enable clamscan.timerタイマーのステータスを確認します。
systemctl status clamscan.timerタイマーのリストを確認します。
systemctl list-timersClamAVタイマーの時間を変更する場合
clamscan.timerの時間を変更した場合、リスタートが必要です。
systemctl restart clamscan.timerすると、Warningが表示されます。
systemd/system内の内容を変更した場合、deamonのリロードを毎回行ってください。
systemctl deamon-reload以上で、ClamAVアンチウイルスの導入完了です。
お疲れ様でした。
まとめ
Linuxにアンチウイルスソフト(ClamAV)を導入してみました。
これでちょっとは安心して枕を高くして寝れそうです。





コメント