読者です 読者をやめる 読者になる 読者になる

さくらの VPS を使ってみる・続

前回の記事では、さくらの VPS の公式マニュアルに従って最低限のセキュリティ設定を行った。

nucl.hatenablog.com

今回は、もう一歩進んだ設定を行う。内容としては、以下のパッケージを導入する。

  • etckeeper
  • yum-cron
  • fail2ban
  • rkhunter

ついでに

  • logrotate の周期の変更

も行った。手順は以下に書かれている内容をフォローした。

nekopunch.hatenablog.com

etckeeper の導入

その名の通り、設定ファイル(/etc 以下のファイル)をバージョン管理するためのパッケージ。 できるだけ早い段階で導入するのが良いと思われる。私の場合は、前の記事で紹介した最低限の 設定が完了した段階で導入することにした。 etckeeper は yum でインストールできる。

# yum -y install etckeeper

CentOS ならば、etckeeper はバージョン管理のために git を使うようになっていて、 管理対象外のファイルの設定は git の流儀で行うことができる。 デフォルトでは /etc/passwd/etc/shadow も管理対象下に置かれてしまうそうなので、これらを外しておく。そのために .gitignore/etc 以下に置く。内容は以下のとおり。

shadow*
gshadow*
passwd*
gpasswd*

以下のコマンドで現在の状態を記録する。

# etckeeper init
# etckeeper commit

git log で initial commit が見えるようになっているはず。

etckeeper は毎日自動的にコミットしてくれるのだが、/etc/crontab を覗いてみてもその記述は見当たらない。 これはどういうことかというと、CentOS 6 の場合、cron ではなく anacron によってスケジューリングされているからだ。ちなみに、anacron のスケジューリング設定は /etc/anacrontab に書かれていて、そこから /etc/cron.daily/etckeeper が間接的に呼びだされる仕組みになっている(らしい)。

yum-cron

最新のパッケージを自動的に拾ってきてくれる。 インストールは yum で行う。自動的に起動するように設定しておく。

# yum -y install yum-cron
# service yum-cron start
# chkconfig yum-cron on

こちらも anacron によって毎日 /etc/cron.daily/0yum.cron が呼び出されている。

fail2ban の導入

ブルートフォースアタック対策のために導入する。事前に jail.confport=sshport=50022 に書き換えておくことが必要。

# yum -y install fail2ban
# vim /etc/fail2ban/jail.conf

自動的に起動するように設定する。

# service fail2ban start
# chkconfig fail2ban on

rkhunter の導入

ルートキット対策のために入れる。インストール後は定義ファイルの更新をしておく。

# yum -y install rkhunte
# rkhunter --update
# rkhunter --propupd

早速スキャンをかけてみる。

# rkhunter --check --skip-keypress --report-warnings-only
Warning: The SSH and rkhunter configuration options should be the same:
         SSH configuration option 'PermitRootLogin': no
         Rkhunter configuration option 'ALLOW_SSH_ROOT_USER': unset
Warning: Suspicious file types found in /dev:
         /dev/.udev/tmp-rules--70-persistent-net.rules: ASCII English text
         /dev/.udev/tmp-rules--70-persistent-cd.rules: ASCII English text

警告がいくつか出た。これらの解消法はまた後で調べることとする。

logrotate の設定を変更

ログをもっと長い期間保存するように変更した。 etckeeper のおかげで、差分を見るのも簡単になり、変更点がすぐ分かる。

diff --git a/logrotate.conf b/logrotate.conf
index 7da6bb7..753baf5 100644
--- a/logrotate.conf
+++ b/logrotate.conf
@@ -1,9 +1,9 @@
 # see "man logrotate" for details
-# rotate log files weekly
-weekly
+# rotate log files monthly
+monthly
 
-# keep 4 weeks worth of backlogs
-rotate 4
+# keep 12 months worth of backlogs
+rotate 12