前回までの設定で、サーバーはひとまずセキュアな状態になったと思うが、パッケージの更新は日々行われている。今回は初期設定の最後の作業として、パッケージの更新を自動的に行うように設定する。
作業はすべて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 サーバーや、ネームサーバー、メールサーバーなどのサービスの設定を行う。