Debian の修正はどのように出荷されるか
Debian developer
Hideki Yamane
<henrich@debian.org>
このスライドの位置づけ
●
背景: Debian は高いパッケージ品質(注:ソフトウェア品
質ではない)を誇りますが、他のソフトウェア同様にバグや脆
弱性とは無縁ではありません。そのため、 Debian プロジェ
クトは必要に応じて修正をリリースしており、 Debian を運
用する際にはこの修正を確実に適用することが基本となります
●
目的: Debian での修正リリースに関する今の所の方針や関
連用語を紹介します
●
関連資料:これは RHKK 森若さんの「
Red Hat Enterprise Linuxの修正はどのように出荷されるか」
のある意味パロディです
agenda
●
Debian での「修正」とは
●
修正のリリースポリシー
●
修正の告知
deb パッケージ
●
Debian では、「 deb パッケージ」という単位でソ
フトウェアを配布しています。
– deb パッケージには、ソフトウェア名・製品のバージョ
ン・バージョン・対応アーキテクチャを含む名前が付与
されます
●
例: libc6_2.27-6_amd64.deb
●
deb パッケージは依存関係の情報を持っており、動作
に必要な他のパッケージの導入を必要に応じて自動で行
い、競合するパッケージのインストールを予防します
●
修正は新しいバージョンのパッケージとして配布します
「パッケージの更新」は何をするのか
●
バイナリやドキュメント等のファイルを更新
●
設定ファイル( /etc 以下)を更新
– ユーザーによる変更があった場合にはアップグレード時
に都度確認がかかる(うざいとも言われますが…)
– (サービスが無効になっていなければ)
サービスの再起動
– パッケージに含まれるメンテナスクリプトの実行
●
deb パッケージは、インストールや更新の前後など各種タイミ
ングで実行するスクリプトを含んでいる
「パッチでの配布」との違い
●
パッケージ単位で配布する Debian の方式は、以下の特徴があります
●
特定の修正(パッチ)だけを選択的に適用する方法は Debian からは
提供されません
– 例:バグ修正がバージョン 1.0-2 で行われた後、セキュリティ上の問題に
対する修正が行われた。セキュリティ上の問題に「だけ」対応したパッ
ケージ 1.0-1+securityfix みたいなバージョンを導入したい
→やりたいなら自分でやって、しらん
●
パッケージをダウングレードすることでアップデートのキャンセルが非
常に簡単に実施できます
– 設定ファイルの置き換えなどが発生していなければ、パッケージをダウン
グレードするだけでアップデート前の状態に戻る(もちろん、自動アップ
デートしないようにバージョンを hold しておきましょう)
パッケージリポジトリ
●
deb パッケージはパッケージリポジトリとして世界各
地にミラーされています
●
RHEL の yum リポジトリと違ってグループ分けとい
うのはありません。
– main/contrib/non-free の3つは「コンポーネント」
で「 Debian フリーソフトウェアガイドラインに完全に
合致いるか」という視点で区別されています
●
ユーザーは全部有効にして使っても構いません(再配布のとき
はいろいろ制限が発生すると思いますが…)
Debian 修正の「リリース」とは
●
修正のリリースはパッケージをリポジトリに登録するこ
とで行われます
– セキュリティ修正の場合は DSA(Debian セキュリティ
勧告)も同時に作成・公表されます
– 修正の適用は自動や強制ではなく、各システムで apt コ
マンドを使って行います(セキュリティ修正の適用を自
動化してくれるツールもあります)
apt コマンド
●
apt コマンドはパッケージリポジトリを利用し
て、 deb パッケージの新規導入や更新を行います
1. “apt update” パッケージデータベースの更新
yum と違って update ではパッケージは入らない。
2. deb パッケージの依存関係を解決し、必要パッケージを確定
3. “apt upgrade/full-upgrade” パッケージの更新を実施
4. “apt install” 必要な deb パッケージを自動的にダウン
ロードして導入
インターネット接続できない場合の更新
●
インターネット接続できない場合は?
– ftpsync で必要なアーキテクチャのミラーサーバー
を作成してそこを指定
– DVD/blu-ray イメージを使う
バックポート(その1)
●
Debian では、コミュニティの最新バージョンに含ま
れるバグ修正を、リリースしたバージョンに含まれる過
去のバージョンへ最小限の変更で適用することがありま
す。
●
バックポートの例:
– Debian8 の openssl は 1.0.1t というバージョンをベースにしている
– OpenSSL コミュニティ:脆弱性 CVE-2017-3736 への対策
は、 openssl1.0.2m および 1.1.0g に対して行われた
– Debian : DLA-1449-1 で 1.0.1t に対して問題修正の対応。
新しいバージョンでもたらされた機能拡張は含まず
バックポート(その2:注意点)
●
一部のセキュリティ監査ツールはソフトウェアのバー
ジョン番号だけを参照して問題を報告するというザルの
ようなものがあります。問題はすでに Debian では対
処済みである場合があります。
– セキュリティ問題の CVE 名から、
Debianセキュリティトラッカーを確認しましょう。
バックポート(その3: backports )
●
Debian では利便性のために、 testing (テスト
版)に存在している新しいバージョンのソフトウェアを
stable (安定版)で使えるようにパッケージし直し
たものがあります。
– これを「 backports パッケージ」といいます
– backports パッケージを利用するには /etc/apt/
sources.list 以下に設定を追加するだけです
– 注意点としては「セキュリティ修正を含む継続的な更新
は担保されない」ということがあります
修正がリリースされる期間
●
Debian プロジェクトによって修正が作成・リリースさ
れる期間は
– 「安定版」である期間(おおよそ2年)
– 新しいバージョンがリリースされて「旧安定版」になって
から1年間
– → 計・約3年
●
Debian LTS チームによって修正が作成・リリースさ
れる期間は
– 今の所約2年間(ただし、サポート対象パッケージの範囲
は極めて狭くなっている)
セキュリティ勧告
●
パッケージのセキュリティ修正は「セキュリティ勧告
(アドバイザリ)」と呼ばれる形で告知されます
– 各アドバイザリには(通常)対応する deb パッケージが
含まれる
– 1つのアドバイザリで複数の問題に対応することも
●
セキュリティ勧告には、どのような問題があったのか、
どのパッケージが関連するか等が記載されています
●
https://www.debian.org/security/ 参照
RHEL との違い(アドバイザリ編)
●
セキュリティ修正以外の変更についてはアドバイザリの
ような形では出ない
●
代わりに「ポイントリリース」時にざっくり概要だけが
記載される
– 例:Debian9.5リリース記事
アドバイザリを受け取る
●
https://lists.debian.org/debian-security-announce/
で subscribe を行って
debian-security-announce@lists.debian.orgへのメー
ルを受け取ります。
●
自分のシステムに合わせたカスタマイズはできません
システムごとのアドバイザリを確認
●
提供してません
●
いい方法あったら教えてください
アドバイザリの検索
●
Debian セキュリティトラッカー
– 脆弱性の CVE ID から問題の概要、 Debian への影響の
有無・軽微さなどの見解メモ(公式なものではない)、
他製品の対応アドバイザリへのリンクなど
– https://security-tracker.debian.org/tracker/
最後に
●
こんなもんですかね?
●
もうちょっと説明がほしいというのがあれば
ご連絡ください

Debianの修正はどのように出荷されるか