CentOS5 システムを最新の状態にする - itochif.com
GNOME端末を起動する
CentOS5 公開鍵のインポート
yumを使用してパッケージのインストールやアップデートを行う時には、自動的にパッケージの完全性や出所が正しいかどうかの確認が行われます。 確認を行うにはrpmデータベースにCentOS5のGngPG公開鍵を追加する必要があります。
# /bin/rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5 # /bin/rpm -qa "gpg-pubkey*" # 取り込まれている公開鍵の確認 gpg-pubkey-e8562897-459f07a4 # /bin/rpm -qi "gpg-pubkey-e8562897-459f07a4" # gpg-pubkey-e8562897-459f07a4の詳細情報 Name : gpg-pubkey Relocations: (not relocatable) Version : e8562897 Vendor: (none) Release : 459f07a4 Build Date: 2008年02月23日 16時00分00秒 Install Date: 2008年02月23日 16時00分00秒 Build Host: localhost Group : Public Keys Source RPM: (none) Size : 0 License: pubkey Signature : (none) Summary : gpg(CentOS-5 Key (CentOS 5 Official Signing Key)図1.公開鍵のインポートと確認) Description : -----BEGIN PGP PUBLIC KEY BLOCK----- Version: rpm-4.4.2 (beecrypt-4.1.2) mQGiBEWfB6MRBACrnYW6yKMT+MwJlCIhoyTxGf3mAxmnAiDEy6HcYN8rivssVTJkCFtQBlBO pLV/OW2YtKrCO2xHn46eNfnMri8FGT8g+9JF3MUVi7kiV1He4iJynHXB+F2ZqIvHf3IaUj1y s+p8TK64FDFxDQDrGQfIsD/+pkSGx53/877IrvdwjwCguQcrIoip5TH0Fj0OLUY4asYVZH8E AIqFHEqsY+9ziP+2R3/FyxSllKkjwcMLrBug+cYOLYDD6eQXE9Mq8XKGFDj9ZB/0+JzK/XQe StheeFG75q3noq5oCPVFO4czuKErIRABqKbDBhaTj3JhOgM12XsUYn+rI6NeMV2ZogoQCC2t WmDETfRpYp2moo53NuFWHbAyXjETA/sHEeQT9huHzdi/lebNBj0L8nBGfLN1nSRP1GtvagBv kR4RZ6DTQyl0UzOJRA3ywWlrL9IV9mrpb1Fmn60l2jTMMCc7J6LacmPK906N+FcN/Docj1M4 s/4CNanQNhzcFhAFtQL56SNyLTCk1XzhssGZ/jwGnNbU/aaj4wOj0Uef5LRGQ2VudE9TLTUg S2V5IChDZW50T1MgNSBPZmZpY2lhbCBTaWduaW5nIEtleSkgPGNlbnRvcy01LWtleUBjZW50 b3Mub3JnPohkBBMRAgAkBQJFnwekAhsDBQkSzAMABgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJ EKikR9zoViiXKlEAmwSoZDvZo+WChcg3s/SpNoWCKhMAAJwIE2aXpZVrpsQnInUQWwkdrTiL 5YhMBBMRAgAMBQJFnwiSBYMSzAIRAAoJEDjCFhY5bKCk0hAAn134bIx3wSbq58E6P6U5RT7Z 2Zx4AJ9VxnVkoGHkVIgSdsxHUgRjo27NF7kBDQRFnwezEAQA/HnJ5yiozwgtf6jt+kii8iua +WnjqBKomPHOQ8moxbWdv5Ks4e1DPhzRqxhshjmub4SuJ93sgMSAF2ayC9t51mSJV33KfzPF 2gIahcMqfABe/2hJaMzcQZHrGJCEX6ek8l8SFKou7vICzyajRSIK8gxWKBuQknP/9LKsoczV +xsAAwUD/idXPkk4vRRHsCwc6I23fdI0ur52bzEqHiAIswNfO521YgLk2W1xyCLc2aYjc8Ni nrMX1tCnEx0/gK7ICyJoWH1Vc7//79sWFtX2EaTO+Q07xjFX4E66WxJlCo9lOjosVk5qc7R+ xzLDoLGFtbzaTRQFzf6yr7QTu+BebWLoPwNTiE8EGBECAA8FAkWfB7MCGwwFCRLMAwAACgkQ qKRH3OhWKJfvvACfbsF1WK193zM7vSc4uq51XsceLwgAoI0/9GxdNhGQEAweSlQfhPa3yYXH =o/Mx -----END PGP PUBLIC KEY BLOCK-----
ファイアウォールの設定
ファイアウォールの設定で行ったiptablesの設定ではyumでのパッケージ更新のための通信が破棄されてしまいます。 以下は[yum update]コマンドを使用した時の/var/log/messagesの内容です。
# /bin/grep DROP /var/log/messages Feb 23 16:00:00 www kernel: [DROP DEFAULT] :IN= OUT=eth0 SRC=192.168.10.2 DST=XXX.XXX.XXX.XXX LEN=52 TOS=0x00 PREC=0x00 TTL=64 ID=43145 DF PROTO=TCP SPT=52059 DPT=80 WINDOW=5840 RES=0x00 SYN URGP=0 Feb 23 16:00:00 www kernel: [DROP DEFAULT] :IN= OUT=eth0 SRC=192.168.10.2 DST=XXX.XXX.XXX.XXX LEN=52 TOS=0x00 PREC=0x00 TTL=64 ID=47281 DF PROTO=TCP SPT=42747 DPT=21 WINDOW=5840 RES=0x00 SYN URGP=0図2.ファイアウォールによって破棄されたyumの通信(抜粋)
これら通信を行うために上記ログから必要な情報を抜き出すと以下のリストになります。
- 外向きの通信の新規接続(OUT=eth0/フラグがSYNのみ)
- 送信元IPアドレスはこのサーバ(SRC=192.168.10.2)
- 宛先IPアドレスはこのサーバ以外のANY(DST=XXX.XXX.XXX.XXX)
- TCPの通信(PROTO=TCP)
- 宛先ポートは80と21(DPT=80/DPT=21)
ファイアウォールの設定で作成したシェルスクリプトに、この情報を元にして作成したiptablesコマンドを追記します。 「※この下に受け入れる接続を記述する」の部分に以下の設定を追記します。
# ----- yum 用 /sbin/iptables -A OUTPUT -p tcp -o $IF1 -s $IP1 --dport 80 -m state --state NEW -j ACCEPT /sbin/iptables -A OUTPUT -p tcp -o $IF1 -s $IP1 --dport 21 -m state --state NEW -j ACCEPT図3.「ファイアウォールの設定」に追記するコマンド
上記のコマンドを追記した後、以下のコマンドでパケットフィルタテーブルを更新します。
# /usr/local/sbin/iptables.sh ファイアウォールのルールを /etc/sysconfig/iptables に保存中[ OK ] ファイアウォールルールを適用中: [ OK ] チェインポリシーを ACCEPT に設定中filter [ OK ] iptables モジュールを取り外し中 [ OK ] iptables ファイアウォールルールを適用中: [ OK ] iptables モジュールを読み込み中ip_conntrack_netbios_ns [ OK ]図4. パケットフィルタテーブルの更新
システムを最新の状態に更新する
ファイアウォールの設定も完了したので、実際にyumを使用してシステムを最新の状態に更新します。
# yum update Loading "installonlyn" plugin Setting up Update Process Setting up repositories extras 100% |=========================| 1.1 kB 00:00 updates 100% |=========================| 951 B 00:00 base 100% |=========================| 1.1 kB 00:00 addons 100% |=========================| 951 B 00:00 Reading repository metadata in from local files primary.xml.gz 100% |=========================| 91 kB 00:01 ################################################## 305/305 primary.xml.gz 100% |=========================| 168 kB 00:01 ################################################## 326/326 Resolving Dependencies --> Populating transaction set with selected packages. Please wait. ---> Downloading header for libpng to pack into transaction set. libpng-1.2.10-7.1.el5_0.1 100% |=========================| 11 kB 00:00 ---> Package libpng.i386 2:1.2.10-7.1.el5_0.1 set to be updated ---> Downloading header for firefox to pack into transaction set. firefox-1.5.0.12-9.el5.ce 100% |=========================| 99 kB 00:00 ---> Package firefox.i386 0:1.5.0.12-9.el5.centos set to be updated -------------------- <中略> -------------------- Transaction Summary ============================================================================= Install 2 Package(s) Update 44 Package(s) Remove 0 Package(s) Total download size: 111 M Is this ok [y/N]: y #yを入力 Downloading Packages: (1/46): libpng-1.2.10-7.1 100% |=========================| 242 kB 00:01 (2/46): firefox-1.5.0.12- 100% |=========================| 20 MB 01:08 -------------------- <中略> -------------------- Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Updating : kernel-headers ####################### [ 1/90] Updating : tzdata ####################### [ 2/90] -------------------- <中略> -------------------- Installed: kernel.i686 0:2.6.18-53.1.13.el5 kernel-devel.i686 0:2.6.18-53.1.13.el5 Updated: autofs.i386 1:5.0.1-0.rc2.55.el5.3 cairo.i386 0:1.2.4-3.el5_1 cups.i386 1:1.2.4-11.14.el5_1.4 cups-libs.i386 1:1.2.4-11.14.el5_1.4 device-mapper-multipath.i386 0:0.4.7-12.el5_1.2 e2fsprogs.i386 0:1.39-10.el5_1.1 e2fsprogs-libs.i386 0:1.39-10.el5_1.1 firefox.i386 0:1.5.0.12-9.el5.centos flac.i386 0:1.1.2-28.el5_0.1 fontconfig.i386 0:2.4.1-7.el5 gdb.i386 0:6.5-25.el5_1.1 glibc.i686 0:2.5-18.el5_1.1 glibc-common.i386 0:2.5-18.el5_1.1 glibc-devel.i386 0:2.5-18.el5_1.1 glibc-headers.i386 0:2.5-18.el5_1.1 hal.i386 0:0.5.8.1-25.el5_1.1 hal-gnome.i386 0:0.5.8.1-25.el5_1.1 httpd.i386 0:2.2.3-11.el5_1.centos.3 kernel-headers.i386 0:2.6.18-53.1.13.el5 kpartx.i386 0:0.4.7-12.el5_1.2 libXfont.i386 0:1.2.2-1.0.3.el5_1 libexif.i386 0:0.6.13-4.0.2.el5_1.1 libpng.i386 2:1.2.10-7.1.el5_0.1 libxml2.i386 0:2.6.26-2.1.2.1 libxml2-python.i386 0:2.6.26-2.1.2.1 logrotate.i386 0:3.7.4-8 mcstrans.i386 0:0.2.6-1.el5_1.1 nscd.i386 0:2.5-18.el5_1.1 openldap.i386 0:2.3.27-8.el5_1.3 pcre.i386 0:6.6-2.el5_1.7 perl.i386 4:5.8.8-10.el5_0.2 poppler.i386 0:0.5.4-4.3.el5_1 postgresql-libs.i386 0:8.1.11-1.el5_1.1 rsh.i386 0:0.17-38.el5 samba-common.i386 0:3.0.25b-1.el5_1.4 selinux-policy.noarch 0:2.4.6-106.el5_1.3 selinux-policy-targeted.noarch 0:2.4.6-106.el5_1.3 telnet.i386 1:0.17-39.el5 tzdata.noarch 0:2007k-1.el5 util-linux.i386 0:2.13-0.45.el5_1.1 xorg-x11-drv-keyboard.i386 0:1.1.0-3 xorg-x11-server-Xnest.i386 0:1.1.1-48.26.el5_1.5 xorg-x11-server-Xorg.i386 0:1.1.1-48.26.el5_1.5 xorg-x11-server-Xvfb.i386 0:1.1.1-48.26.el5_1.5 Complete!図5.システムが最新の状態に更新されている
システムを常に最新の状態にする
前述のとおり、脆弱性の修正や機能追加のアップデートパッケージ等は常に更新されています。 ここではシステムを常に最新の状態に保つ設定を行います。 ただし、ソフトウェアによっては自動的にアップデートされる事により問題が発生する事もあるため、 検証を必要とするソフトウェアについては自動アップデートから除外する設定も行います。
# echo exclude=httpd* >> /etc/yum.conf # echo exclude=bind* >> /etc/yum.conf図6.bindやhttpd関連パッケージを自動更新しない設定例
自動的にシステムを最新の状態に保つためにcrontabにyum updateコマンドを登録します。
# /usr/bin/crontab -e ------------------------------ 次の行からcrontabの中身 05 05 * * * /usr/bin/yum -y update ------------------------------ crontab終了図7.5時5分に[/usr/bin/yum -y update]を実行するようcrontabに記載
自動的にシステムを最新の状態にするのではなく、更新パッケージをメールにて通知するには[/usr/bin/yum -y update]の部分を[/usr/bin/yum -y check-update]に変更します。
更新日 3/09/2008

![インテルCentrino Duo搭載ThinkPad T60 [468x60]](http://www.ibm.com/jp/pc/campaign/affiliate/10000001.gif)

コンピュータの世界では、毎日様々なソフトウェアに存在する脆弱性が報告されています。 ソフトウェアによっては、これらを修正するためのパッチや新バージョンのプログラムを提供しています。 ここでは、yumを使用してシステムを最新の状態にします。