[技術ブログvol.22] LinuxのRPMパッケージの更新履歴を簡単に調べる方法

RPM_Logo_s.png

先日、Linuxの脆弱性 CVE-2015-0235(通称GHOST)が発見されましたが、自分のサーバでセキュリティパッチの適用状況を簡単に確認したいことがあると思います。

今回は、その方法をCVE-2015-0235の対象である「glibc」を対象に、ご紹介します。
(確認したのは、AWS上のCentOS6のサーバです。)

方法その1:rpmコマンドで確認

これが一番簡単な方法ではないかと思いますが、意外と知られていないようです。
結構多いのは、パッケージのバージョンとパッチ適用済みのバージョンを比較して判断する、という方法です。(私も数年前までは、このやり方しか知りませんでした・・。)

使い方

rpmコマンドでは、「--changelog」というqueryオプションを使うだけです。簡単ですね。

# rpm -q --changelog glibc

これで、今使っているサーバのglibcの変更履歴がズラズラっと出てきます。
セキュリティパッチの適用を調べるなら、lessコマンドなどにパイプで渡して「CVE」で検索するといいと思います。

# rpm -q --changelog glibc | less

("CVE-2015-0235"で検索)

* Mon Jan 19 2015 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.12-1.149.5
- Fix parsing of numeric hosts in gethostbyname_r (CVE-2015-0235, #1183533).

上記の場合だと、このサーバのglibcは、CVE-2015-0235に対するパッチが適用済みということが分かります。

方法その2:yumの「changelog」プラグインの利用

先ほどのrpmのオプションと名前が似ているので紛らわしいですね(笑)

このプラグインを利用すると、yum でupdateするときに、「現在のパッケージ」と「アップデートしたパッケージ」の更新差分を表示してくれるものです。

インストール

デフォルトでyumコマンドでインストール可能です。

# yum -y install yum-plugin-changelog
使い方

glibcを例にします。

# yum --changelog update glibc

従来のupdate時の表示の他に、以下の様な更新差分の情報も表示されます。

Changes in packages about to be updated:

updates/other_db | 19 MB 00:05
ChangeLog for: glibc-2.12-1.149.el6_6.5.x86_64, glibc-common-2.12-1.149.el6_6.5.x86_64
* Mon Jan 19 21:00:00 2015 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.12-1.149.5
- Fix parsing of numeric hosts in gethostbyname_r (CVE-2015-0235, #1183533).

* Wed Dec 10 21:00:00 2014 Carlos O'Donell <carlos@redhat.com> - 2.12-1.149.4
- Fix recursive dlopen() (#1173469).

* Tue Dec 9 21:00:00 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.12-1.149.3
- Fix typo in res_send and res_query (#rh1172023).

* Tue Dec 9 21:00:00 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.12-1.149.2
- Fix crashes on invalid input in IBM gconv modules (CVE-2014-6040, #1139571).

* Tue Dec 9 21:00:00 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.12-1.149.1
- Fix wordexp() to honour WRDE_NOCMD (CVE-2014-7817, #1170121).

このままglibcをアップデートすると、CVE-2015-0235の他にも、いくつかのパッチが適用される事がわかります。

yumコマンドで「-y」オプションを付けていないので、アップデート実施の確認時(Is this ok [y/N]:の表示)に、「N」を選択すれば確認だけでアップデートはせずに終了します。(通常のyum updateと同じです)

補足

今回、例にしているglibcの脆弱性は、発見者の報告にある通り、それほど緊急性を要するものではありません。

https://www.qualys.com/research/security-advisories/GHOST-CVE-2015-0235.txt

参考:トレンドマイクロセキュリティブログ

「Linuxに存在する脆弱性「GHOST」システム管理者は落ち着いて対処を」

しかし、脆弱性があることに変わりはないので、忘れずにアップデートしないといけないです。
また、対象がglibcなので、アップデート後はOSを再起動することが望ましいです。

対策パッチは、CentOS/RHELのバージョン5、6、7それぞれでリリースされています。

https://access.redhat.com/security/cve/CVE-2015-0235

Amazon Linuxでもリリース済みです。

https://alas.aws.amazon.com/ALAS-2015-473.html

AWS上のサーバでCVE-2015-0235の対応をする時の注意

AWSの環境で対象のLinuxサーバを利用している場合は、glibcをアップデートするとサーバの時間がUTCに戻る場合があるので、注意が必要です。

UTCに戻ったことに気が付かず使用していると、「cronで動かしていたバッチ処理の時間が変わってしまう」等といった問題が出てしまうので、忘れずにJSTに戻すようにしておきましょう。

UTCに戻ってしまったら改めて、「/etc/localtime」ファイルをJSTのものに指定し直してあげましょう。

#  ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

しかし、ついうっかりこの作業を忘れしてしまう可能性もあります。

その為、「/etc/sysconfig/clock」のファイルでタイムゾーンをJSTに固定しておくと、glibcをアップデートしてもUTCに戻ることはありません。

# vi /etc/sysconfig/clock

ZONE="Asia/Tokyo"
UTC=False

これはLinux自体に起因する問題なので、OSがAmazon LinuxでもRHELやCentOSの場合でも発生します。
しかし、オンプレ環境のようにインストーラでOSをインストールするような場合は、インストール時に時間帯を日本に設定していると思いますので、この問題が起こることは少ないと思います。

お知らせ

上記のように、AWSの環境ではシステム運用において注意点がいくつかありますが、このような事に懸念してAWSの導入を断念されている方はいらっしゃるでしょうか?

当社では、AWSに関するご相談を「なんでも相談室」という形で開設しておりますので、ぜひお気軽にご相談頂ければと思います。

詳細については、下記の開設窓口をご確認下さい。

[AWSクラウド何でも相談室]

kensaku.png

技術ブログ中の人
次回の更新予定は、2月中旬頃です。

返信を残す

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

CAPTCHA