yumのupdateについて

こんにちは、ITサービス課の小松です。
弊社ではLinuxサーバ構築にRHEL系のCentOSを利用するケースが多いです。

今回はCentOSのなかでもyumのパッケージ更新について触れてみたいと思います。

ソフトウェアの脆弱性は日々日々発見されており、昨年度はheartbleedやPOODLEなど
大規模なニュースとなるものが多く発見されました。

CentOSの場合、脆弱性に対する修正パッケージの情報は
https://lists.centos.org/pipermail/centos-announce/
で公開しています。

運用管理者として脆弱性とそれに伴う修正パッケージが発表された場合行うべき選択は
①修正パッケージ適用を行う
②問題から目を背けて見なかったことにする

というわけで①一択ですね。

具体的な例として外部公開向けのWEBサーバで使用するapacheを取り上げてみたいと思います。

yumを利用したapacheの更新方法ですが

# yum update httpd

以上終了です。
しかし全世界の何割かのapacheを使用したWEBサーバは以上終了ではなく
異常終了となるでしょう。変更を適用させるためapacheを再起動させるとapache
が起動しなくなります。

理由を解説するためにRPMパッケージの更新で何が行われたのかを確認してみることにします。
yumパッケージの中身を確認するためにはyumを実行する際にdownloadonlyのオプションを
指定するかyum-utilsに含まれるyumdownloaderを利用します。

# yum install –downloadonly –downloaddir=<directory> httpd (Cent5系の場合)
# yumdownloader httpd

今回のケースだと依存性パッケージを含んだ下記3パッケージがダウンロードされます。
httpd-2.2.15-47.el6.centos.x86_64.rpm
httpd-tools-2.2.15-47.el6.centos.x86_64.rpm
mod_ssl-2.2.15-47.el6.centos.x86_64.rpm

rpmファイル自体はlessやcatで中身が閲覧できるので内容を確認すると何が起こるか一目瞭然です。

# less httpd-2.2.15-47.el6.centos.x86_64.rpm


Name        : httpd                        Relocations: (not relocatable)
Version     : 2.2.15                            Vendor: CentOS
Release     : 47.el6.centos                 Build Date: 2015年08月25日 02時53分56秒
Install Date: (not installed)               Build Host: c6b8.bsys.dev.centos.org
Group       : System Environment/Daemons    Source RPM: httpd-2.2.15-47.el6.centos.src.rpm
Size        : 3087061                          License: ASL 2.0
Signature   : RSA/SHA1, 2015年08月25日 03時20分55秒, Key ID 0946fca2c105b9de
Packager    : CentOS BuildSystem <
http://bugs.centos.org>
URL         :
http://httpd.apache.org/
Summary     : Apache HTTP Server
Description :
The Apache HTTP Server is a powerful, efficient, and extensible
web server.
* 月  8月 24 2015 Johnny Hughes <
johnny@centos.org> – 2.2.15-47
=- Roll in CentOS Branding

* 火  8月 18 2015 Jan Kaluza <jkaluza@redhat.com> – 2.2.15-47
=- fix regressions caused by fix for CVE-2015-3183
—————————————–<中略>———————————————————
drwxr-xr-x    2 root    root                        0  8月 25 02:53 /etc/httpd
drwxr-xr-x    2 root    root                        0  8月 25 02:53 /etc/httpd/conf
drwxr-xr-x    2 root    root                        0  8月 25 02:53 /etc/httpd/conf.d
-rw-r–r–    1 root    root                      392  8月 25 02:53 /etc/httpd/conf.d/README
-rw-r–r–    1 root    root                      299  8月 18 14:57 /etc/httpd/conf.d/welcome.conf
-rw-r–r–    1 root    root                    34419  8月 18 14:57 /etc/httpd/conf/httpd.conf
-rw-r–r–    1 root    root                    13139  8月 25 02:53 /etc/httpd/conf/magic
lrwxrwxrwx    1 root    root                       19  8月 25 02:53 /etc/httpd/logs -> ../../var/log/httpd
lrwxrwxrwx    1 root    root                       29  8月 25 02:53 /etc/httpd/modules -> ../../usr/lib64/httpd/modules
lrwxrwxrwx    1 root    root                       19  8月 25 02:53 /etc/httpd/run -> ../../var/run/httpd
-rw-r–r–    1 root    root                      185  8月 18 14:57 /etc/logrotate.d/httpd
-rwxr-xr-x    1 root    root                     2001  8月 25 02:53 /etc/rc.d/init.d/htcacheclean
-rwxr-xr-x    1 root    root                     3371  8月 25 02:53 /etc/rc.d/init.d/httpd
-rw-r–r–    1 root    root                      529  8月 18 14:57 /etc/sysconfig/htcacheclean
-rw-r–r–    1 root    root                      947  8月 18 14:57 /etc/sysconfig/httpd
drwxr-xr-x    2 root    root                        0  8月 25 02:53 /usr/lib64/httpd
drwxr-xr-x    2 root    root                        0  8月 25 02:53 /usr/lib64/httpd/modules
—————————————–<以下略>———————————————————

注目してほしいのは変更対象と追加を含んだファイルの一覧が記載されており、またオーナーとパーミッションが
デフォルト値になっているということです。
おせっかいにもオーナーパーミッションを書き換え、あまつさえ存在しないファイルに関しては作成してくれるという
親切設計のため、意図せぬ変更が発生しトラブルを招くケースが相当数存在します。

ブラックボックスの少ないLinuxだからこそ事前になにが起きるかを予測し、柔軟に対処する能力が求められます。

# yum update httpd
短い一行のコマンドですがくれぐれも扱いには注意しましょう。
 

Share on Facebook0Tweet about this on Twitter0Share on Google+0Share on LinkedIn0Pin on Pinterest0
Tagged on: , , ,