先日、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
参考:トレンドマイクロセキュリティブログ
しかし、脆弱性があることに変わりはないので、忘れずにアップデートしないといけないです。
また、対象が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に関するご相談を「なんでも相談室」という形で開設しておりますので、ぜひお気軽にご相談頂ければと思います。
詳細については、下記の開設窓口をご確認下さい。
次回の更新予定は、2月中旬頃です。