3. アプリ色々
直接は関係ないが、この後必要になる wget コマンドを入れておく。
sudo dnf install wget
3.1. Clam AntiVirus
Clam AntiVirus は Linux系で使えるアンチウイルスソフト。
sudo dnf --enablerepo=epel install clamav clamav-scanner-systemd clamav-update
3.1.1. 設定変更
vi /etc/clamd.d/scan.conf
### 以下はコメント解除
LogFile /var/log/clamd.scan
LogFileMaxSize 2M
LogTime yes
LogRotate yes
LocalSocket /run/clamd.scan/clamd.sock
FixStaleSocket yes
ExcludePath ^/proc/
ExcludePath ^/sys/
### 以下は変更
User clamscan
↓
User root
3.1.2. ウイルス定義ファイルの更新設定
/etc/freshclam.conf
### 以下はコメント解除
UpdateLogFile /var/log/freshclam.log
LogFileMaxSize 2M
LogTime yes
LogRotate yes
### 以下は変更
#DatabaseOwner clamupdate
↓
DatabaseOwner root
DatabaseMirror database.clamav.net
↓
DatabaseMirror db.jp.clamav.net
#NotifyClamd /path/to/clamd.conf
↓
NotifyClamd /etc/clamd.d/scan.conf
ここまで出来たら、ウイルス定義ファイルを更新し、サービスを有効化、起動しておく。
sudo freshclam -u root
sudo systemctl enable clamd@scan
sudo systemctl start clamd@scan
最初は、定義ファイルを更新しないままデーモンを起動しようとしたらエラーとなり、定義ファイルを更新してからだと、時間はかなりかかったもののデーモンは起動した。サーバー再起動でデーモンが立ち上がってくることも確認できた。
手動スキャンは以下のコマンド。
clamscan --infected --remove --recursive [ディレクトリ名]
あとは、スキャン用のスクリプトを作って、cronで定期チェックをかけるようにする。
作るファイルは2つ。cronで回すので、root でファイルの作成& crontab の設定まで行う。
まずはスクリプト本体。
vi /root/script/clamscan
#!/bin/bash
PATH=/usr/bin:/bin
# clamd update
yum -y update clamav-server clamav-data clamav-update clamav-filesystem clamav clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd > /dev/null 2>&1
# excludeopt setup
excludelist=/root/script/clamscan.exclude
if [ -s $excludelist ]; then
for i in `cat $excludelist`
do
if [ $(echo "$i"|grep \/$) ]; then
i=`echo $i|sed -e 's/^\([^ ]*\)\/$/\1/p' -e d`
excludeopt="${excludeopt} --exclude-dir=^$i"
else
excludeopt="${excludeopt} --exclude=^$i"
fi
done
fi
# virus scan
CLAMSCANTMP=`mktemp`
clamscan --recursive --remove ${excludeopt} / > $CLAMSCANTMP 2>&1
[ ! -z "$(grep FOUND$ $CLAMSCANTMP)" ] && \
# report mail send
grep FOUND$ $CLAMSCANTMP | mail -s "Virus Found in `hostname`" root
rm -f $CLAMSCANTMP
お次は、除外ディレクトリの設定ファイル。
vi /root/script/clamscan.exclude
/dev/
/etc/
/media/
/mnt/
/opt/
/proc/
/run/
/srv/
/sys/
/usr/
/var/
ファイル名は cron からアクセスできる場所にあれば別に何でもよい。スクリプト内に除外ファイルのパスを直書きしてるので、そこに齟齬が無いように。
あとは、crontab で登録。
chmod +x clamscan
crontab -e
===
MAILTO="test@hogehoge.com"
0 3 * * * /root/script/clamscan
===
まだメールサーバーをインストールして無いので、多分メールは飛ばないと思うが、スクリプトに問題が無ければ、毎日午前3時にスキャンが走るようになる。
3.2. logwatch
実際にメールを受け取るにはメールサーバーの設定が必要だが、とりあえず、先に logwatch での監視の設定だけやっておく。
設定ファイルは、デフォルトを全コピーして必要箇所だけ変える…という情報が多かったが、別にローカル設定ファイルに最小限だけ書けば良さそうなので、必要な項目だけ、ローカル設定ファイルに書いてみる。
dnf install -y logwatch
vi /etc/logwatch/conf/logwatch.conf
### 通知メールの送信先
MailTo = test@hogehoge.com
### ログの出力レベル
Detail = High (Low/Med/High)
### 通知メールの差出人
MailFrom = (任意)
動作確認は、下記で出来る。なお、cron にはインストールした時点で登録されている。
### 標準出力に表示
logwatch --output stdout
### 設定したアドレスにメールで送信
logwatch --output mail
### cronに登録されているのが確認できる
ls -la /etc/cron.daily/0logwatch
-rwxr-xr-x 1 root root 434 5月 11 2019 /etc/cron.daily/0logwatch
3.3. RKHunter
Webサイトなどを運営していると、ファイル改ざんの被害にあうこともあるが、そういった改ざん事案に使われる、rootkit の検出ツールに RKHunter というのがあるので、それも入れておく。
dnf --enablerepo=epel install -y rkhunter
vi /etc/sysconfig/rkhunter
===
MAILTO=root@localhost → 必要に応じて、メールアドレスを変更。
DIAG_SCAN=no → yes に変更して、詳細スキャンできるようにする。
===
### データベース更新
rkhunter --update
### 現時点のシステムのファイル情報を反映
rkhunter --propupd
### チェックの実行 逐一Enter押下が求められるので、うっとうしければ"--sk"オプションを付ける。
rkhunter --check --sk