第5章 buster で注意すべき点

目次

5.1. buster へのアップグレード特有の事項
5.1.1. procfs の hidepid マウントオプションはサポートされません
5.1.2. ypbind は -no-dbus オプションを付加すると起動に失敗します
5.1.3. NIS server does not answer NIS client requests by default
5.1.4. sshd が認証に失敗する
5.1.5. デーモンの起動失敗やシステムが起動中にハングアップしているように見える現象
5.1.6. レガシーネットワークインターフェイス名からの移行
5.1.7. Module configuration for bonding and dummy interfaces
5.1.8. OpenSSL のデフォルトバージョンとセキュリティレベルが引き上げられました
5.1.9. Waylandで動作するGNOMEの一部アプリケーションの不具合について
5.1.10. 特記すべき時代遅れとなったパッケージたち
5.1.11. buster で非推奨となったコンポーネント
5.1.12. アップグレード後、再起動前にすること
5.1.13. SysV init 関連パッケージは不要になりました
5.2. セキュリティサポートにおける制限事項
5.2.1. ウェブブラウザとレンダリングエンジンにおけるセキュリティ更新の状態
5.2.2. Go 言語関連パッケージ
5.3. パッケージ固有の問題
5.3.1. Semantics for using environment variables for su changed
5.3.2. 既存の PostgreSQL は再度インデックスを作成する必要があります
5.3.3. mutt と neomutt
5.3.4. Accessing GNOME Settings app without mouse
5.3.5. gnome-disk-utility fails to change LUKS password causing permanent data loss (buster 10.0 only)
5.3.6. evolution-ews has been dropped, and email inboxes using Exchange, Office365 or Outlook server will be removed
5.3.7. Calamares installer leaves disk encryption keys readable
5.3.8. S3QL URL changes for Amazon S3 buckets
5.3.9. Split in configuration for logrotate
5.3.10. The rescue boot option is unusable without a root password

新しいリリースで導入された変更点には副作用が避けられず、どこか他の場所でバグを出してしまうことがあります。この章では、現時点で私たちが知っている問題点を記載しています。正誤表・関連パッケージの付属文書・バグ報告や、「もっと読みたい」で触れられているその他の情報も読んでください。

5.1. buster へのアップグレード特有の事項

この項では stretch から buster へのアップグレードに関連した項目を取り扱います。

5.1.1. procfs の hidepid マウントオプションはサポートされません

/prochidepid マウントオプションを利用すると現在のバージョンの systemd では問題が生じることが知られており、systemd の開発元ではこの設定は非サポートとされています。/etc/fstab を編集してこのオプションを有効にしているユーザーは、buster でのログインセッションが動作することを保証するため、アップグレード作業の前に必ず無効にしてください (再度有効にする方法については Wiki の Hardening に概要があります)。

5.1.2. ypbind は -no-dbus オプションを付加すると起動に失敗します

ypbind のデフォルトオプションが変更されています。変更されているのですが、このファイルを編集していた場合は旧来のデフォルト設定が更新されないので、必ず /etc/default/nis 中の YPBINDARGS= オプションで -no-dbus が含まれていないことを確認してください。-no-dbus オプションがあると ypbind は起動に失敗し、ログイン不能になるかもしれません。詳細は bug #906436 を参照してください。

5.1.3. NIS server does not answer NIS client requests by default

The default behavior of rpcbind has changed to no longer answer remote calls from NIS clients. On NIS servers you will need to add the (Debian-specific) -r flag to the command line options of rpcbind, otherwise users will not be able to log into your NIS client machines. For more info see bug #935492.

5.1.4. sshd が認証に失敗する

sshdPubkeyAcceptedKeyTypes のセマンティクスおよび類似の HostbasedAcceptedKeyTypes オプションが変更されています。以前は受理する鍵の種類を設定していた箇所ですが、現在は対応する認証方法に応じて受理する署名アルゴリズムを指定します。この点は RSA/SHA2 署名アルゴリズムである rsa-sha2-256rsa-sha2-512 とそれらの証明書関連で問題になりえます。それらのオプションを上書きはしているものの、アルゴリズム名を省略してしまっている場合には、認証で失敗が生じます。

これらのオプションがデフォルトの場合は特に対応不要です。

5.1.5. デーモンの起動失敗やシステムが起動中にハングアップしているように見える現象

systemd はブート中にエントロピーを必要とするので、十分なエントロピーが得られない場合にはカーネルはそのようなシステムコールをブロッキング扱いします。randomness サブシステムが十分に初期化されるまで (random: crng init done が完了するまで) に、数分から場合によっては数時間止まっているように見えることがあります 。amd64 システムでは RDRAND 命令があるため、この問題は Debian カーネルの標準設定 (CONFIG_RANDOM_TRUST_CPU) では回避されます。

amd64 以外のシステムや、ある種の仮想マシンで高速な起動を維持するには、エントロピー確保に別の手段を要します。Debian インストーラープロジェクトは haveged をこの目的のために選択しました。ハードウェアによるエントロピー確保ができないシステムの場合に役立ちます。仮想マシンについてはホストから各仮想マシンへ virtio_rng を用いて提供してください。

もし遠隔システムをこの文書を確認される前に buster にアップグレードしてしまった場合は、ping をネットワーク経由で当該システムに送信し続けてください。それによってエントロピーが増してランダムネスプールが確保されれば、システムへの ssh アクセスが再度可能になります。

詳細は wiki を参照し、他の手段については DLange さんによるこの問題の概要説明を確認ください。

5.1.6. レガシーネットワークインターフェイス名からの移行

もし以前のシステムからアップグレードを続けてきていて、streth で非推奨となった古いスタイルのネットワークインターフェイス名 (例えば eth0wlan0 といったもの) をまだ使っている場合、 (いくつかのケースで動作はし続けるでしょうが) buster の udev では最早それらを/etc/udev/rules.d/70-persistent-net.rules ファイル経由でのサポートをしない点に注意してください。buster へのアップグレード後にネットワーク接続を喪失する危険性を回避するために、前もって新スタイルの命名方式に移行しておいてください (PCIバスやスロット位置で決まる名前で、通常 enp0s1wlp2s5 のような名前になります)。インターフェイス名をハードコーディングしているファイアーウォール設定や ifupdown 設定などに注意ください。

The alternative is to switch to a supported mechanism for enforcing the old naming scheme, such as a systemd .link file (see systemd.link(5)). The net.ifnames=0 kernel commandline option might also work for systems with only one network interface (of a given type).

新しい形式の命名が適応できるかを検討する前に、まず現状のインターフェイス名をご確認ください:

$ echo /sys/class/net/[ew]*
    

結果出力の名前ごとに、設定ファイルでの利用状況の確認と、udev が選択するであろう名前の確認を行います:

$ sudo rgrep -w eth0 /etc
$ udevadm test-builtin net_id /sys/class/net/eth0 2>/dev/null
    

This should give enough information to devise a migration plan. (If the udevadm output includes an onboard or slot name, that takes priority; MAC-based names are normally treated as a fallback, but may be needed for USB network hardware.)

命名規則の変更準備が整ったら、70-persistent-net.rules をファイル名変更か各行毎のコメントアウトで無効にします。仮想マシンでは /etc/systemd/network/99-default.link を削除し、(もし virtio ネットワークデバイスを利用していれば) /etc/systemd/network/50-virtio-kernel-names.linkも削除します。その後に initrd を再生成してください:

$ sudo update-initramfs -u
    

その後に再起動すれば、システムは新規命名スタイルを利用します。その他に関連する設定ファイルを修正し、システム動作を試験してください。

See the wiki, upstream documentation, and the udev README.Debian for further information.

5.1.7. Module configuration for bonding and dummy interfaces

Systems using channel bonding and/or dummy interfaces, for instance to configure a machine as a router, may encounter problems upgrading to buster. New versions of systemd install a file /lib/modprobe.d/systemd.conf (intended to simplify configuration via systemd-networkd) which contains the lines

 options bonding max_bonds=0
 options dummy numdummies=0
    

Admins who were depending on different values will need to ensure they are set in the correct way to take precedence. A file in /etc/modprobe.d will override one with the same name under /lib/modprobe.d, but the names are processed in alphabetical order, so /lib/modprobe.d/systemd.conf follows and overrides (for instance) /etc/modprobe.d/dummy.conf. Make sure that any local configuration file has a name that sorts after systemd.conf, such as /etc/modprobe.d/zz-local.conf.

5.1.8. OpenSSL のデフォルトバージョンとセキュリティレベルが引き上げられました

様々なセキュリティ推奨に従い、標準の最低 TLS バージョンが TLSv1 から TLSv1.2 に変更されました。

TLS 接続のセキュリティレベルについても同様で、レベル 1 からレベル 2 に変更されています。これは 80 bit から 112 bit へのセキュリティレベル変更と 2048 ビット長以上の RSA ないし DHE 鍵を必要とすることを意味し、224 ビット長以上の ECC 鍵と SHA-2 ハッシュも要件となります。

システムレベルでの設定は /etc/ssl/openssl.cnf で変更できます。各アプリケーションはそれぞれの設定項目でそれらを上書きも可能です。

標準の /etc/ssl/openssl.cnf には MinProtocolCipherString があります。CipherString にはセキュリティレベルも設定可能になりました。セキュリティレベルの詳細については SSL_CTX_set_security_level(3ssl) マニュアルページをご参照ください。プロトコルの最低要件バージョンについては SSL_CONF_cmd(3ssl) に記載してあります。その他の情報は ciphers(1ssl) および config(5ssl) に記載があります。

システムレベルの /etc/ssl/openssl.cnf による設定は次の設定で元の値に戻すことができます:

        MinProtocol = None
        CipherString = DEFAULT
      

標準設定で問題が生じる場合は、当該する遠隔サイトへ連絡して頂くことを推奨します。

5.1.9. Waylandで動作するGNOMEの一部アプリケーションの不具合について

buster では GNOME の標準ディスプレイマネージャーが Xorg から Wayland に変更されました (「GNOMEは標準で Wayland を利用します」 参照)。人気のパッケージマネージャー synaptic や標準の中国語 (簡体字) 入力メソッド、fcitx、そして多くのスクリーンレコードアプリケーションは Wayland で適切に動作するように更新されていません。それらを用いる場合は GNOME on Xorg セッションでログインする必要があります。

5.1.10. 特記すべき時代遅れとなったパッケージたち

以下は、よく知られていて特に時代遅れとなってしまったパッケージの一覧です (説明については 「利用されなくなったパッケージ」 参照)。

時代遅れとなったパッケージの一覧には以下が含まれます:

  • mcelog はカーネル 4.12からサポート対象外になりました。rasdaemon が代替として利用可能です。

  • パスワードを管理する revelation パッケージは buster に含まれません。keepass2 は XML ファイル形式で revelation からエクスポートされたパスワードデータベースをインポートできます。アップグレードの前には、パスワードアクセス方法の喪失を防ぐために、必ず revelation のエクスポートを行ってください。

  • phpmyadmin パッケージは buster には含まれません。

  • ipsec-toolsracoon パッケージは、開発元が新たな脅威への適応に追従できておらず、buster からは除外されました。

    利用者は libreswan への移行が推奨されます。より広いプロトコル互換性があり、上流での更新も活発に行われています。

    libreswanracoon で利用されている通信プロトコルの上位互換を提供しているため、完全な互換性があると考えられています。

  • シンプルなMTA ssmtp パッケージが buster で無くなりました。これは TLS 証明書の検証に問題があるためです。bug #662960 を参照してください。

  • The ecryptfs-utils package is not part of buster due to an unfixed serious bug (#765854). At the time of writing this paragraph, there was no clear advice for users of eCryptfs, except not to upgrade.

5.1.11. buster で非推奨となったコンポーネント

次のリリースである Debian 11 (コードネーム bullseye) では、いくつかの機能が非推奨となります。11 へ更新する際にトラブルを防ぐためには、ユーザーは他の選択肢へ移行する必要があります。

これには以下の機能が含まれます:

  • Python 2 は開発元でのサポート打ち切りが 2020年1月1日 に予定されています。Debian では python-2.7 パッケージを Debian 11 で無くす予定です。python コマンドに依存したものがある場合は、python3 への移行の準備を開始してください。

  • Icinga 1.x is EOL upstream since 2018-12-31; while the icinga package is still present, users should use the buster lifetime to migrate to Icinga 2 (icinga2 package) and Icinga Web 2 (icingaweb2 package). The icinga2-classicui package is still present to use the Icinga 1.x CGI web interface with Icinga 2, but the support for it will be removed in Icinga 2.11. Icinga Web 2 should be used instead.

  • The Mailman mailing list manager suite version 3 is newly available in this release. Mailman has been split up into various components; the core is available in the package mailman3 and the full suite can be obtained via the mailman3-full metapackage.

    The legacy Mailman version 2.1 remains available in this release in the package mailman, so you can migrate any existing installations at your own pace. The Mailman 2.1 package will be kept in working order for the foreseeable future, but will not see any major changes or improvements. It will be removed from the first Debian release after Mailman upstream has stopped support for this branch.

    Everyone is encouraged to upgrade to Mailman 3, the modern release under active development.

  • The packages spf-milter-python and dkim-milter-python are no longer actively developed upstream, but their more feature-rich replacements, pyspf-milter and dkimpy-milter, are available in buster. Users should migrate to the new packages before the old ones are removed in bullseye.

5.1.12. アップグレード後、再起動前にすること

apt full-upgrade が完了した時点で、正規のアップグレードは完了しています。buster へのアップグレードについては、再起動の実行前に必要となる特別な作業はありません。

5.1.13. SysV init 関連パッケージは不要になりました

[注記]注記

This section does not apply if you have decided to stick with sysvinit-core.

After the switch to systemd as default init system in Jessie and further refinements in Stretch, various SysV related packages are no longer required and can now be purged safely via

apt purge initscripts sysv-rc insserv startpar

5.2. セキュリティサポートにおける制限事項

Debian がセキュリティ問題に対する最小限のバックポートを約束できないパッケージがいくつか存在しています。これらについては以下の章で触れられています。

[注記]注記

debian-security-support パッケージが、インストールされたパッケージのセキュリティサポート状況を確認するのに役立ちます。

5.2.1. ウェブブラウザとレンダリングエンジンにおけるセキュリティ更新の状態

Debian 10 は複数のブラウザエンジンを含んでおり、これらは一定の割合でセキュリティ脆弱性の影響を受けます。高い脆弱性率と一部開発元での長期間サポートブランチの欠落によって、セキュリティ修正をバックポートしてこれらのブラウザならびにブラウザエンジンをサポートする事が難しくなっています。さらに、ライブラリへの内部依存性のため、開発元での新しいリリースへの更新を極めて難しくしています。従って buster に含まれているものの例として webkit や khtml エンジン[6]を使ったブラウザがありますが、これらはセキュリティサポートはされません。一般的にこれらのブラウザを信用できないウェブサイトを閲覧するのに使うべきではありません。webkit2gtk ソースパッケージはセキュリティサポートの対象となっています。

一般的なウェブブラウザ利用として我々は Firefox または Chromium を推奨しています。安定版向けに現行の ESR リリースをリビルドすることで最新を維持します。同じ手法が Thunderbird にも適用されます。

5.2.2. Go 言語関連パッケージ

The Debian infrastructure currently doesn't properly enable rebuilding packages that statically link parts of other packages on a large scale. Until buster that hasn't been a problem in practice, but with the growth of the Go ecosystem it means that Go based packages won't be covered by regular security support until the infrastructure is improved to deal with them maintainably.

If updates are warranted, they can only come via regular point releases, which may be slow in arriving.

5.3. パッケージ固有の問題

大抵の場合、stretch から buster へのアップグレードは淀み無く進むはずです。しかし、少数ではあるもののアップグレード前後で介入が必要となる場合があります。以下にパッケージごとの詳細を記載します。

5.3.1. Semantics for using environment variables for su changed

su has changed semantics in buster and no longer preserves the user environment variables DISPLAY and XAUTHORITY. If you need to run graphical applications with su, you will have to explicitly set them to allow access to your display. See bug #905409 for an extensive discussion.

5.3.2. 既存の PostgreSQL は再度インデックスを作成する必要があります

stretch から buster へのアップグレードの際、glibc のロケールデータがアップグレードされています。具体的には、これは PostgreSQL がテキストのインデックスでどのようにデータをソートするかについて、変更を与えます。破損を防ぐため、locales パッケージまたは locales-all パッケージのアップグレード直後、データベースを運用に戻す前にこのようなインデックスは REINDEX を実施する必要があります。

推奨コマンド:

sudo -u postgres reindexdb --all

別の方法として、pg_upgradecluster を使って PostgreSQL 11 へアップグレードするのがあります (これはすべてのインデックスを再ビルドする pg_dump をデフォルトで利用します。-m upgrade または pg_upgrade の利用は、ロケールの変更で正しいものでは無くなってしまったインデックス順を保持するので安全ではありません

詳細については PostgreSQL Wiki を参照して下さい。

5.3.3. mutt と neomutt

In stretch, the package mutt had patches applied from the sources at https://neomutt.org. Starting from buster, the package providing /usr/bin/mutt will instead be purely based on the original sources from http://www.mutt.org, and a separate neomutt package is available providing /usr/bin/neomutt.

This means that some of the features that were previously provided by mutt are no longer available. If this breaks your configuration you can install neomutt instead.

5.3.4. Accessing GNOME Settings app without mouse

Without a pointing device, there is no direct way to change settings in the GNOME Settings app provided by gnome-control-center. As a work-around, you can navigate from the sidebar to the main content by pressing the Right Arrow twice. To get back to the sidebar, you can start a search with Ctrl+F, type something, then hit Esc to cancel the search. Now you can use the Up Arrow and Down Arrow to navigate the sidebar. It is not possible to select search results with the keyboard.

5.3.5. gnome-disk-utility fails to change LUKS password causing permanent data loss (buster 10.0 only)

Users of the initial buster release images should not change the LUKS password of encrypted disks with the GNOME graphical interface for disk management. The gnome-disk-utility package in buster had a very nasty bug (#928893) when used to change the LUKS password: it deleted the old password but failed to correctly set the new one, making all data on the disk inaccessible. This has been fixed in the first point release.

5.3.6. evolution-ews has been dropped, and email inboxes using Exchange, Office365 or Outlook server will be removed

Users using evolution as their email client and connecting to a server running Exchange, Office365 or Outlook using the evolution-ews plugin should not upgrade to buster without backing up data and finding an alternative solution beforehand, as evolution-ews has been dropped due to bug #926712 and their email inboxes, calendar, contact lists and tasks will be removed and will no longer be accessible with Evolution.

The evolution-ews package has been reintroduced via buster-backports. Users upgrading from stretch to buster can enable buster-backports after the upgrade and then they will be able to reinstall evolution-ews.

5.3.7. Calamares installer leaves disk encryption keys readable

When installing Debian from live media using the Calamares installer (「Debian Live チームからのお知らせ」) and selecting the full disk encryption feature, the disk's unlock key is stored in the initramfs which is world readable. This allows users with local filesystem access to read the private key and gain access to the filesystem again in the future.

This can be worked around by adding UMASK=0077 to /etc/initramfs-tools/conf.d/initramfs-permissions and running update-initramfs -u. This will recreate the initramfs without world-readable permissions.

A fix for the installer is being planned (see bug #931373) and will be uploaded to debian-security. In the meantime users of full disk encryption should apply the above workaround.

5.3.8. S3QL URL changes for Amazon S3 buckets

When using s3ql with Amazon S3 buckets, the configuration needs updating for a change in the URL. The new format is:

s3://<region>/<bucket>/<prefix>

5.3.9. Split in configuration for logrotate

The shipped configurations for /var/log/btmp and /var/log/wtmp have been split from the main configuration file (/etc/logrotate.conf) into separate standalone files (/etc/logrotate.d/btmp and /etc/logrotate.d/wtmp).

If you have modified /etc/logrotate.conf in this regard, make sure to re-adjust the two new files to your needs and drop any references to (b|w)tmp from the main file, since duplicate definitions can cause errors.

5.3.10. The rescue boot option is unusable without a root password

With the implementation of sulogin now used, booting with the rescue option always requires the root password. If one has not been set, this makes the rescue mode effectively unusable. However it is still possible to boot using the kernel parameter init=/sbin/sulogin --force

To configure systemd to do the equivalent of this whenever it boots into rescue mode (also known as single mode: see systemd(1)), run sudo systemctl edit rescue.service and create a file saying just:

[Service]
Environment=SYSTEMD_SULOGIN_FORCE=1
    

It might also (or instead) be useful to do this for the emergency.service unit, which is started automatically in the case of certain errors (see systemd.special(7)), or if emergency is added to the kernel command line (e.g. if the system can't be recovered by using the rescue mode).

For background and a discussion on the security implications see #802211.



[6] These engines are shipped in a number of different source packages and the concern applies to all packages shipping them. The concern also extends to web rendering engines not explicitly mentioned here, with the exception of webkit2gtk.