ユーティリティのインストールと設定 - ConoHa で KUSANAGI その6
今回は、ユーティリティ関係の細かいものを何個かインストールしたり設定したりします。
特に必須というわけでもないので、スルーしていいかもしれません。
一応、以下のものを導入します。
- root 宛のメールを転送
- logwatch をインストール
- denyhosts をインストール
- yum-cron をインストール
- logrotate の設定
- 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 の記述については、
- rpmforgeが最近廃止になったこと
- 折角デーモンで起動させているのに別プロセスでスキャンを動かしてしまっている
という色々とダメな内容になってしまっていることに気づきました。 別の記事で 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です。