プログラマーのメモ書き

伊勢在住のプログラマーが気になることを気ままにメモったブログです

セキュリティアップデートの自動インストール

現在、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です。

 

で、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 の通知設定』にセキュリティアップデート適用時のメール通知についてまとめました。