運用時のパッケージのアップデート

前回までの設定で、サーバーはひとまずセキュアな状態になったと思うが、パッケージの更新は日々行われている。今回は初期設定の最後の作業として、パッケージの更新を自動的に行うように設定する。

作業はすべてsu で root になって実施している。

対象
内部用サーバー
外部用サーバー
OS
CentOS release 5.10

運用とパッケージの更新

アップデートは、OS の種類を問わず頭を悩ませる問題だ。セキュリティを考慮すると、更新が出たらすぐに適用したいが、OS 上で動かしているアプリケーションに問題が発生する可能性がある。運用を考えると、ステージング環境でテストしてから適用したいが、何をテストしたらいいかわからないテスト完了前に攻撃を受ける可能性もある。

今回のサーバーは、Web サーバー、メールサーバー、DNS などが動作する予定だ。自社の規模を考えると、Web サーバーは一時的に停止しても問題ない。DNS はスレーブサーバーを設定するので、一時的に落ちても大きな問題はないだろう。問題はメールサーバーだが、メールが受信できなくなる問題と、パッケージを更新しなかったことによりクラッキングされる被害を考えると、クラッキングされる被害の方が大きい。自動的にパッケージを更新することにした。
パッケージ更新の方針は、以下の通りだ。

  • パッケージは yum で自動更新する
  • パッケージの更新情報をメールで送信する
  • kernel など、再起動が必要なパッケージが含まれる場合は、メールを人間がチェックして手動で行う

yum による自動更新の設定

yum を自動的に動作させるのであれば、cron を使うのが手っ取り早い。cron の実行結果はメールで送信してくれるので、要件を満たすことができる。毎日実行するように、「vi /etc/cron.daily」に、ファイルを作成して内容を編集、最後に実行権をつけた。

[root@server ~]# vi /etc/cron.daily/yum
... 編集
[root@server ~]# chmod +x /etc/cron.daily/yum

「/etc/cron.daily/yum」ファイルの内容は、以下の通りだ。「-y」オプションは、自動的に「yes」と答えるためのもので、「-d 1」は、デバッグレベルの設定だ。

#!/bin/sh
/usr/bin/yum -y -d 1 update

デバッグレベルを指定したのは、メールで送信されてきたときに読みやすい形式にするためだ。デバッグレベルを指定しないと、コンソールに出力するための制御文字が含まれてメールが読みにくくなる。デバッグレベルを1に指定すると、制御文字を含まず、アップデートがないときは何も表示せずに終了する。cron が yum を自動的に実行してアップデートがあると、以下のようなメールが root 宛に届く。

/etc/cron.daily/yum:


================================================================================
 Package           Arch           Version                 Repository       Size
================================================================================
Updating:
 gnupg2            x86_64         2.0.14-6.el6_4          updates         1.6 M
 libgcrypt         x86_64         1.4.5-11.el6_4          updates         229 k

Transaction Summary
================================================================================
Upgrade       2 Package(s)

Total download size: 1.8 M

Updated:
  gnupg2.x86_64 0:2.0.14-6.el6_4        libgcrypt.x86_64 0:1.4.5-11.el6_4       

パッケージの更新も自動的に行うようにできたので、サーバーの初期設定は今回で終了だ。次回からは、Web サーバーや、ネームサーバー、メールサーバーなどのサービスの設定を行う。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Time limit is exhausted. Please reload CAPTCHA.