現在、EC2上でRedmineを運用しています(設定時の記事はこちら)。先日、OpenSSLの脆弱性(OpenSSL の脆弱性対策について(CVE-2014-0160))が見つかり話題になっていたので、一応個人で使ってるサーバーですがOpenSSLをアップデートしようと思いたっていろいろと調べてみました。
結論からすると、このサーバーに使っているOS(Ubuntu12.04)の場合、セキュリティアップデートだけを自動的にインストールしてくれる設定が可能だったので、それを適用しました(今回の脆弱性もセキュリティアップデート扱いです)。
なお、Ubuntuのアナウンスは、こちら(USN-2165-1: OpenSSL vulnerabilities )にあります。
設定方法
あちこちに設定方法は書かれていますので、詳しくはそちらをご覧ください。ま、そんな難しい話でもなく、ようは、
sudo apt-get update sudo apt-get install unattended-upgrades
でOKです。
- Ubuntu 12.04 LTS でセキュリティアップデートを自動的に行う
- Ubuntu Weekly Recipe 第83回 アップデートの管理
- How do you use apt-get to only install critical security updates on ubuntu?
- AutomaticSecurityUpdates
で、apt-getでインストールした覚えなんて無いのですが、一応、今のサーバーを調べてみると、
bitnami@ip-10-132-170-91:~$ aptitude show unattended-upgrades パッケージ: unattended-upgrades 状態: インストール済み 自動的にインストールされた: いいえ バージョン: 0.76 優先度: 任意 セクション: admin メンテナ: Michael Vogt アーキテクチャ: all 展開サイズ: 229 k 依存: debconf (<= 0.5) | debconf-2.0, debconf, python, python-apt (<= 0.7.90), apt-utils, apt, ucf, lsb-release 提案: bsd-mailx 説明: automatic installation of security upgrades This package can download and install security upgrades automatically and unattended, taking care to only install packages from the configured APT source, and checking for dpkg prompts about configuration file changes. This script is the backend for the APT::Periodic::Unattended-Upgrade option. bitnami@ip-10-132-170-91:~$
となっており、なんと、既にパッケージが入っていました。もともと、BitnamiのRedmineスタックを利用していたのでインストール済みだったようです。
動作してるかどうか、下記のサイトを参考に /etc/apt/apt.conf/.d を調べてみると、
bitnami@ip-10-132-170-91:/etc/apt$ cd apt.conf.d/ bitnami@ip-10-132-170-91:/etc/apt/apt.conf.d$ ls 01autoremove 10periodic 20archive 50unattended-upgrades 90cloud-init-pipelining 05aptitude 15update-stamp 20changelog 70debconf 99update-notifier bitnami@ip-10-132-170-91:/etc/apt/apt.conf.d$ ls -l
とあり、20auto-upgrades ファイルがないようです。また、ログも出てないので、動いていないようです。
unattended-upgradesはインストールしただけでは動かない
なので、セットアップします。
bitnami@ip-10-132-170-91:~$ sudo dpkg-reconfigure -plow unattended-upgrades
コマンドを実行すると、『自動設定をするか?』(のような内容を)と聞かれるので『はい』を選択すれば(カーソルを合わせてスペースキーを押せば)終わりです。所定のファイルも作られています。
bitnami@ip-10-132-170-91:~$ ls /etc/apt/apt.conf.d/ 01autoremove 10periodic 20archive 20changelog 70debconf 99update-notifier 05aptitude 15update-stamp 20auto-upgrades 50unattended-upgrades 90cloud-init-pipelining bitnami@ip-10-132-170-91:~$ bitnami@ip-10-132-170-91:~$ cat /etc/apt/apt.conf.d/20auto-upgrades APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Unattended-Upgrade "1"; bitnami@ip-10-132-170-91:~$
あとは更新がかかるのを待ちます。unattended-upgrades は毎日更新確認をするので、翌日に結果を確認しました。
更新結果の確認
上記設定を行った翌日に確認すると、
bitnami@ip-10-132-170-91:/etc$ dpkg --list | grep ssl ii libflac8 1.2.1-6 Free Lossless Audio Codec - runtime C library ii libflac8:i386 1.2.1-6 Free Lossless Audio Codec - runtime C library ii libssl0.9.8:i386 0.9.8o-7ubuntu3.1 SSL shared libraries ii libssl1.0.0 1.0.1-4ubuntu5.5 SSL shared libraries ii libssl1.0.0:i386 1.0.1-4ubuntu5.5 SSL shared libraries ii libwavpack1:i386 4.60.1-2 audio codec (lossy and lossless) - library ii openssl 1.0.1-4ubuntu5.5 Secure Socket Layer (SSL) binary and related cryptographic tools ii python-openssl 0.12-1ubuntu2 Python wrapper around the OpenSSL library bitnami@ip-10-132-170-91:/etc$
となっていたのが、
bitnami@ip-10-132-170-91:~$ dpkg --list | grep -i ssl ii libcurl3 7.22.0-3ubuntu4.8 Multi-protocol file transfer library (OpenSSL) ii libcurl3:i386 7.22.0-3ubuntu4.8 Multi-protocol file transfer library (OpenSSL) ii libflac8 1.2.1-6 Free Lossless Audio Codec - runtime C library ii libflac8:i386 1.2.1-6 Free Lossless Audio Codec - runtime C library ii libssl0.9.8:i386 0.9.8o-7ubuntu3.1 SSL shared libraries ii libssl1.0.0 1.0.1-4ubuntu5.12 SSL shared libraries ii libssl1.0.0:i386 1.0.1-4ubuntu5.12 SSL shared libraries ii libwavpack1:i386 4.60.1-2 audio codec (lossy and lossless) - library ii openssl 1.0.1-4ubuntu5.12 Secure Socket Layer (SSL) binary and related cryptographic tools ii python-m2crypto 0.21.1-2ubuntu2 a crypto and SSL toolkit for Python ii python-openssl 0.12-1ubuntu2.1 Python wrapper around the OpenSSL library bitnami@ip-10-132-170-91:~$
となりました。libssl, openssl のバージョンが更新されているので、これで、問題なさそうです。
ちなみに、OpenSSLのコマンドでバージョンを表示させても、アップデート前後で変わらずに、
bitnami@ip-10-132-170-91:/etc$ openssl version OpenSSL 1.0.1c 10 May 2012
と表示されますが、ちゃんとパッケージは更新されてるようです。
その他
通常、アップデートをする場合、
sudo apt-get update sudo apt-get dist-upgrade
で行うことが多いと思います。ただ、この場合、dist-upgradeでアップグレードすると、セキュリティ以外のアップデートも同時に行われるため、サーバーに対して実行するにはちょっと怖いです。
対象パッケージのみをアップデートしたい場合は、
sudo apt-get install 更新したいパッケージ名
のようにするとよいようです(下記記事を参考にしてください)。
OpenSSLのCVE-2014-0160にパッチを当てる(Ubuntu 12.04.1 LTS)
今回は、OpenSSLだけでなくセキュリティアップデートを自動でインストールする設定としましたが、自動インストールの結果、サーバーの再起動が必要になることもあるため、これでは不都合ということもあると思います。その場合は、/etc/apt/apt.conf.d/50unattended-upgrads を編集することで再起動しないようにすることもできるそうです。
詳しくは、unattended-upgrades パッケージをインストールしたら作られる、 /usr/share/doc/unattended-upgrades/ にある README 等をご覧ください。
2015/9/13追記
『[Ubuntu] unattended-upgrade の通知設定』にセキュリティアップデート適用時のメール通知についてまとめました。