IMPOV::In My Point Of View

仕事、SEO、ウェブマーケティング、時事問題、健康、生き方などなど、書きたいことを勝手に書き倒しているブログです。とどのつまり「便所の落書き」

ユーティリティのインストールと設定 - ConoHa で KUSANAGI その6

f:id:impov:20160529193552p:plain:w200:right

今回は、ユーティリティ関係の細かいものを何個かインストールしたり設定したりします。

特に必須というわけでもないので、スルーしていいかもしれません。

一応、以下のものを導入します。

  1. root 宛のメールを転送
  2. logwatch をインストール
  3. denyhosts をインストール
  4. yum-cron をインストール
  5. logrotate の設定
  6. ClamAV をインストール

root 宛のメールの転送

root のメールボックスには、いろいろなシステム情報が送られてきます。これを普段使用しているメールに転送する設定を行います。

KUSANAGI for ConoHa のイメージでは、mail コマンドが使えません。メールの転送設定ができているか確認するときに不便です。

そこで、まず最初に mailx をインストールします。

yum install mailx

root 宛メールの転送は、一度作業用アカウントに転送してから外部のメールアドレスに転送します。どうして一手間余計に掛けるかは、調べてみてください。

というわけで、作業用アカウント tsuyoshi に転送して外部メールアドレスに転送します。

このとき hostname に実在しないドメイン名が設定されていると、エラー扱いになる場合がありますから、手持ちのドメインのサブドメインなどを割り当てて、hostname も実在するドメイン名に変更しておいた方が良いです。nmtui コマンドで変更することができます。

sed -i '/^root:/d' /etc/aliases  #旧root宛メール転送設定削除

echo "root: tsuyoshi" >> /etc/aliases  #作業用アカウントに転送する

echo "tsuyoshi: mail@example.jp" >> /etc/aliases #外部メールに転送する。

newaliases #転送設定反映

echo test|mail root #テストメールをroot宛に送信する

テストメールが転送先メールアドレス宛に届いていることを確認してみてください。もしかしたら迷惑メールフォルダに振り分けられてるかもしれません。

logwatch

logwatch は、毎日1回サーバーログをまとめてメールで送信してくれます。

yum install logwatch

vim /etc/logwatch/conf/logwatch.conf #設定ファイルを開いて以下のメール先を追加

    MailTo = root

denyhosts

denyhosts は、ssh のログを定期的に集計して、総当り攻撃をしてくる IP アドレスを拒否します。

yum install denyhosts

#(2017/03/06 追記 ここから)
#通知先メールの設定
vim /etc/denyhosts.conf

#ADMIN_EMAIL = root@localhost
ADMIN_EMAIL = root@[サーバーのホスト名]
#(2017/03/06 追記 ここまで)


#自動起動の設定
systemctl enable denyhosts.service

#自動起動の確認
systemctl list-unit-files |grep denyhosts

#起動
systemctl start denyhosts.service

#記入された IP アドレスからの接続を許可する設定ファイル
     /var/lib/denyhosts/allowed-hosts
#接続を拒否する IP アドレスを記入するファイル
     /etc/hosts.deny
#denyhosts の再起動
systemctl restart denyhosts.service

yum-cron

yum-cron は、システムの自動更新をしてくれます。設定によって更新ファイルをダウンロードするだけで、更新自体は手動で行うことも可能です。

yum install yum-cron

# 設定ファイル
    /etc/yum/yum-cron.conf

#自動起動の設定
systemctl enable yum-cron.service

#自動起動の確認
systemctl list-unit-files |grep yum-cron

#起動
systemctl start yum-cron.service

logrotate

ログのローテーション設定を行います。

デフォルトでは4週間分のログを保管することになっていますが、下記の例では24週分のログを保管する設定に変更しています。

#ローテーション間隔を指定する設定ファイルを開く
vim /etc/logrotate.conf

    #1週間単位でローテーション
    # rotate log files weekly
    weekly

    #何世代分のログを残すかを指定、24世代分(24週間分=6ヶ月)に変更
    # keep 4 weeks worth of backlogs
    rotate 4# keep 24 weeks worth of backlogs
    rotate 24

Clamd(2016/08/21追記)

※(2016/08/21追記)この節の Clamd の記述については、

  1. rpmforgeが最近廃止になったこと
  2. 折角デーモンで起動させているのに別プロセスでスキャンを動かしてしまっている

という色々とダメな内容になってしまっていることに気づきました。 別の記事で epel からのインストの方法について書きますのでそちらを参照してください。

CentOS 7 に ClamAV をインストールしてデーモンとして動かす - IMPOV::In My Point Of View

Clamd は、フリーのアンチウィルスソフトです。スキャン中はかなりのリソースを消費しますので、導入やスキャンスケジュールについては各自検討してください。

ご参考までに、立ち上げ直後の KUSANAGI for ConoHa (1GB)で、データベースの更新からフルスキャン終了まで7分ぐらい掛かったようです。しっかり時計を見ていたわけではないのでかなり雑ですが、たぶんそんなもんです。

rpmforge からインストールしますので、新しいレポジトリの登録から行います。

#レポジトリの取得
wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm

rpm -ivh rpmforge-release-*.rpm #RPMforgeリポジトリインストール

rm -f rpmforge-release-*.rpm #ダウンロードしたファイルを削除

yum -y update rpmforge-release #rpmforge-releaseアップデート

yum -y install clamd #clamd インストール

vim /etc/clamd.conf #clamd設定ファイル編集
    User clamav  #コメントアウトする#User clamav

vim /etc/tmpfiles.d/clamd.conf #CentOS7の場合以下の行を書き込んだファイルを作る必要がある
d /var/run/clamav 0755 root root -

systemctl start clamd #clamd起動

systemctl enable clamd #clamd自動起動設定

#ウィルス定義ファイルを最新化
freshclam

#ウィルスの隔離場所を作成
mkdir /root/quarantine
chmod 600 /root/quarantine

#試しにスキャンしてみる(感染ファイルは隔離場所に移動する)
clamscan --infected --move=/root/quarantine/ --recursive

#実行用スクリプトを作成
mkdir /root/sh #スクリプト格納用のディレクトリを作成
vim /root/sh/clamscan.sh #ファイルを作成し下記のスクリプトを書き込む

~~~~スクリプトここから~~~~~
#!/bin/bash

PATH=/usr/bin:/bin

# clamd更新
yum -y update clamd > /dev/null 2>&1

# 除外リスト処理
excludelist=/root/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

# ウィルス定義ファイル更新
freshclam > /dev/null

# ウィルススキャン
CLAMSCANTMP=`mktemp`
clamscan --recursive --move=/root/quarantine/ ${excludeopt} / > $CLAMSCANTMP 2>&1
[ ! -z "$(grep FOUND$ $CLAMSCANTMP)" ] && \

# 検知時メール通知
grep FOUND$ $CLAMSCANTMP | mail -s "Virus Found in `hostname`" root
rm -f $CLAMSCANTMP
~~~~スクリプトここまで~~~~~

chmod 0700 /root/sh/clamscan.sh #権限設定

#動作確認(7分ぐらいかかる?)
/root/sh/clamscan.sh

#ログファイルが作成されていることを確認
ll /var/log/clamav/

    -rw-r----- 1 root   root   5683 May 31 01:55 clamd.log
    -rw-r----- 1 clamav clamav 2120 May 30 23:36 freshclam.log

#Cron 登録
vim /etc/cron.d/clamdscan

~~~~~~cronに登録する内容 ここから~~~~~~
PATH=/sbin:/bin:/usr/sbin:/usr/bin
# Clamd Scan 2:30 on every Wednesday
30 2 * * 3 root /root/sh/clamscan.sh
~~~~~~ここまで~~~~~~

スキャンから除外するファイルは、/root/clamscan.exclude に書き込んでおきます。

感染ファイルの処理方法(削除や移動)やスキャンスケジュール、除外ファイルの設定方法などは一例ですので、ネットでマニュアルを検索して適宜変更してみてください。

なお、clamd の yum update で、epel の clamav と競合が発生してエラーを吐くので、epel の設定ファイルに clamav を除外する設定を書き込みます。

vim /etc/yum.repos.d/epel.repo

[epel]
(省略)
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
exclude=clamav* #この行を追加

次回は、いよいよ KUSANAGI の設定 - ConoHa で KUSANAGI その7 - IMPOV::In My Point Of Viewです。