BSD界隈四方山話

第51回2016Q2までのFreeBSD SA/ENから見るアップデート適用方法

5月の大型連休に入ったタイミングと大型連休の最中の双方のタイミングでFreeBSDセキュリティアドバイザリ(Security Advisories)と不具合情報(Errata Notices)が公開されました。連休明けにアップデートの適用とシステムの再起動にいそしんでいる管理者の方々も少なくないのではないかと思います。このタイミングでこれまでのSA/ENの発行状況を見ながら、今後の運用案などを考えます。

1996~2016 SA/EN発行推移

これまでに発行されたセキュリティアドバイザリと不具合情報はFreeBSD Security AdvisoriesFreeBSD Errata Noticesに掲載されていますので、ここから簡単にデータをグラフにまとめてみます。

 年別セキュリティアドバイザリ発行件数
図 年別セキュリティアドバイザリ発行件数

セキュリティアドバイザリの発行件数は2014年からふたたび高くなっています。2016年のまだ3分の1ほどしか経過していませんが、すでに2014年の半分以上の件数が発行されています。このままのペースでセキュリティアドバイザリが発行されれば、2016年のセキュリティアドバイザリの総数は結構な数に上る可能性があります。

 年別不具合情報発行件数
図 年別不具合情報発行件数

不具合情報も2014年から発行件数が増えているのですが、こちらも2016年の3分の1の段階で2014年の件数の半分以上の件数が発行されています。2016年には2014年および2015年を上回る件数の発行が行われる可能性があります。

 年別 SA/EN発行日別数
図 年別 SA/EN発行日別数

件数は上記のとおりですが、実際には同じ日に複数のセキュリティアドバイザリや不具合情報が報告されますので、アップデートを適用するユーザや管理者からすれば、発行件数ではなく、発行されたタイミングが年に何回あったかが、そのままアップデートの手間の総量になります。このため、発行された日の数を集計したものが上記グラフです。これまでと同じ傾向が続くのであれば、2016年は2014年と2015年の間くらいの発行日件数になる可能性があります。

よく取られるセキュリティ・アップデート方法

いったん運用を開始したシステムでよくとられるセキュリティアップデートの適用方法は、公開されるセキュリティ情報を精査して、システムに影響を与えると思われるものだけに対して最小限のセキュリティアップデートを適用するというものです。顧客から運用しているシステムのダウンタイムをできるだけ短くすることを求められている場合などに特にこうした方法がとられます。

しかしながらこの方法はなかなか面倒なことであるというのも確かですし、どの修正を適用してどの修正は適用していないかということを管理者が管理する必要があるため、時間が経つにつれて状況がどんどん複雑になっていくという課題を抱えています。

ここにさらにWebサーバやメールサーバ、利用している各種ライブラリのセキュリティ脆弱性に対して個別にアップデートをかけていくということになると、管理の手間は相当なものになってきます。このあたりで悲鳴を上げている現場は少なくないようです。

こんなアップデート方法はいかが?

現在、FreeBSDのamd64(x86_64)向けのパッケージは2日に1回といった頻度で最新版がアップデートされています。アプリケーションを2日に1回アップデートするというのは動作検証の労力を加味すると、ちょっとばかりしんどい頻度です。しかし、セキュリティ脆弱性が存在する古いソフトウェアを使い続けるわけにもいきませんので、何らかのタイミングでパッケージをアップデートする必要があるのも事実です。

かりに2016年におけるSA/EN発行日の数が24回になるとしましょう。簡単に考えて月に2回、だいたい2週間に1回の割合でセキュリティアドバイザリや不具合情報が公開され、アップデート版が提供されることになります。これはアップデート頻度としてそれほど悪くないタイミングです。

先ほどの個別精査とアップデートの方法の真逆の方法として、ひとつ自分がお薦めするセキュリティアップデートの方法が次の方法です。セキュリティアドバイザリや不具合情報が公開されたのに合わせて、パッケージも一緒に最新版へアップグレードするというものです。まとめて最後にシステムを再起動してシステムもサービスもフレッシュな状態にします。作業は機械的で単純です。何も考えずにルーチンワークを行います。

緊急性の高いセキュリティ脆弱性を除き、たとえば第2週の金曜日の18:00および第4週の金曜日の18:00からをシステムのアップデート作業時間として確保しシステムのアップデートと再起動を実施するといったように、タイムベースでスケジュールしてしまうのも手だと思います。アップデート作業自体はそのほとんどがfreebsd-update(8)とpkg(8)で半自動的に終わりますので、パッケージの統廃合が実施されたとかソフトウェアの挙動が変わったといったことがないかぎり数分の作業で終わるでしょう(この時間帯だと、問題がでた場合には定時では帰れなくなるでしょうが……。そこは祈りましょう⁠⁠。

可能な限りダウンタイムを避けたいとか、アップデートによってシステムが動作しなくなることを避けたい場合には、システム構成の話になってきますが、正副の2台構成にして先に副をアップデートして動作検証、動作が確認とれた段階で動作を正から副に移動させ、次に正をアップデートする、といったようなことをすることになると思います。

セキュリティアップデートをちゃんと適用

運用状況はケースバイケースですのでひとつの方法ですべてまかなえるといったことはあり得ません。それぞれの状況に合わせて運用してもらいたいと思うのですが、少なくともセキュリティアドバイザリが報告されたあとで何もしないといった状況は避けたいところです。英語が苦手だとセキュリティアドバイザリそのものに気がつかないとか、なかったことにする傾向が見られるようですが、そこはなんとか食らいつきましょう。

FreeBSD勉強会 告知

第52回 5月26日(木)19:00~ FreeBSD翻訳に貢献しよう!基本的なツールの使い方

ソースコードが読めないからドライバを書いたりカーネルを書き換えたりできないし、新しくportsを作るのもちょっと難しい……そう思ってはいませんか? プロジェクトに貢献するのはなにもソースコードだけではありません。FreeBSDにはFreeBSD Handbookという優れたドキュメントがあります。このドキュメントを翻訳するだけでも、多くの日本のユーザに貢献することになります。

FreeBSD Docチームは最近POの機能を取り込んだ翻訳システムを構築して活用しています。このシステムを導入する前に比べると自動化できる部分も増えましたし、システマティックに変更部分を判断することもやりやすくなりました。こうした新しい翻訳作業に関してdocチームは各国で開催されるカンファレンスやサミットでチュートリアルを開催するなど、こうした仕組みを広く伝える取り組みをおこなっています。

今回の勉強会では、翻訳するにあたって使われているツールやサービスについて紹介したり、実際にどうやって作業を行っているのかの紹介を実施します。実際に翻訳作業をするわけではなくても、新しいドキュメント管理の方法を学ぶという上でも役に立つのではないかと思います。多くの方のご参加をお待ちしております :)

参加申請はこちらから。

第53回 6月22日(水)19:00~ ZFSマスターベーシックス

ストレージシステムや仮想化システムのファイルシステムとしてデファクトスタンダードになりつつあるZFS。FreeBSDでネイティブに動作するファイルシステムで、FreeBSDをストレージシステムや仮想化システムのオペレーティングシステムとして採用する強い同期になっています。

ZFSについては聞いたことはあるけど使ったことはない、どんなものか知りたい、使ってみたい、という方向けの勉強会です。ZFSの概要や基本的な使い方などを紹介します。

参加申請はこちらから。

おすすめ記事

記事・ニュース一覧