Capítulo 5. Problemas a serem considerados para a buster

Índice

5.1. Itens específicos da atualização para buster
5.1.1. Opção de montagem hidepid para procfs não suportada
5.1.2. ypbind falha ao iniciar com -no-dbus
5.1.3. NIS server does not answer NIS client requests by default
5.1.4. sshd falha ao autenticar
5.1.5. Daemons não iniciam ou o sistema parece travar durante a inicialização
5.1.6. Migrando a partir de nomes de interface de rede legados
5.1.7. Module configuration for bonding and dummy interfaces
5.1.8. Elevados o nível de segurança e a versão padrão do OpenSSL
5.1.9. Alguns aplicativos não funcionam no GNOME sobre Wayland
5.1.10. Pacotes obsoletos dignos de nota
5.1.11. Componentes obsoletos para a buster
5.1.12. Coisas para fazer depois da atualização e antes de reinicializar
5.1.13. Pacotes relacionados ao init SysV não são mais necessários
5.2. Limitações no suporte de segurança
5.2.1. Situação da segurança dos navegadores web e seus motores de renderização
5.2.2. Pacotes baseados em Go
5.3. Cuidados especiais com pacotes específicos
5.3.1. Glibc exige kernel Linux 3.2 ou superior
5.3.2. A semântica para usar variáveis de ambiente para su mudou
5.3.3. Bancos de dados PostgreSQL existentes precisam ser reindexados
5.3.4. mutt e neomutt
5.3.5. Accessing GNOME Settings app without mouse
5.3.6. gnome-disk-utility fails to change LUKS password causing permanent data loss (buster 10.0 only)
5.3.7. evolution-ews has been dropped, and email inboxes using Exchange, Office365 or Outlook server will be removed
5.3.8. Calamares installer leaves disk encryption keys readable
5.3.9. S3QL URL changes for Amazon S3 buckets
5.3.10. Split in configuration for logrotate
5.3.11. The rescue boot option is unusable without a root password

Algumas vezes, mudanças introduzidas em uma nova versão têm efeitos colaterais que não podem ser evitados ou que acabam expondo bugs em outros locais. Esta seção documenta problemas conhecidos. Por favor, leia também a errata, a documentação dos pacotes relevantes, relatórios de bugs e outras informações mencionadas na Seção 6.1, “Leitura complementar”.

5.1. Itens específicos da atualização para buster

Esta seção aborda itens relacionados à atualização da stretch para a buster.

5.1.1. Opção de montagem hidepid para procfs não suportada

A opção de montagem hidepid para /proc é conhecida por causar problemas com versões atuais do systemd, e é considerada pelo upstream do systemd como configuração não suportada. Os usuários que modificaram /etc/fstab para habilitar essa opção são aconselhados a desabilitá-la antes da atualização, para assegurar que sessões de login funcionem na buster. (Uma possível forma de reabilitá-la é descrita na página Hardening do wiki.)

5.1.2. ypbind falha ao iniciar com -no-dbus

As opções padrão do ypbind mudaram. No entanto, se você modificou este arquivo, o padrão antigo não será atualizado e você deve se assegurar de que a opção YPBINDARGS= em /etc/default/nis não inclua -no-dbus. Com -no-dbus presente, ypbind falhará ao iniciar, e você poderá não ser capaz de fazer login. Para mais informações, veja o 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 falha ao autenticar

A semântica de PubkeyAcceptedKeyTypes e das opções similares HostbasedAcceptedKeyTypes para o sshd mudaram. Elas agora especificam algoritmos de assinatura que são aceitos para os seus respectivos mecanismos de autenticação, onde anteriormente especificavam tipos de chaves aceitas. Essa distinção é importante ao usar os algoritmos de assinatura RSA/SHA2 rsa-sha2-256, rsa-sha2-512 e os seus equivalentes em certificados. Configurações que sobrescrevem essas opções mas omitem esses nomes de algoritmos podem causar falhas de autenticação inesperadas.

Nenhuma ação é necessária para configurações que aceitam o padrão para essas opções.

5.1.5. Daemons não iniciam ou o sistema parece travar durante a inicialização

Devido ao systemd precisar de entropia durante a inicialização e ao kernel tratar tais chamadas como bloqueantes quando a entropia disponível estiver baixa, o sistema pode travar por minutos ou horas até que o subsistema de aleatoriedade esteja suficientemente inicializado (random: crng init done). Para sistemas amd64 com suporte à instrução RDRAND, esse problema é evitado pelo kernel do Debian usando essa instrução por padrão (CONFIG_RANDOM_TRUST_CPU).

Sistemas não amd64 e alguns tipos de máquinas virtuais precisam fornecer uma fonte de entropia diferente para continuar a inicializar rapidamente. O haveged foi escolhido para isso no escopo do projeto do Instalador Debian e pode ser uma opção válida caso entropia por hardware não esteja disponível no sistema. Em máquinas virtuais, considere encaminhar entropia do hospedeiro para as VMs via virtio_rng.

Caso você leia isso depois de atualizar um sistema remoto para a buster, envie pacotes ping para o sistema continuamente pela rede, pois isso adicionará entropia ao fornecimento de aleatoriedade e o sistema será alcançável via ssh novamente em algum momento.

Veja o wiki e uma visão geral do problema, por DLange, para outras opções.

5.1.6. Migrando a partir de nomes de interface de rede legados

If your system was upgraded from an earlier release, and still uses the old-style network interface names that were deprecated with stretch (such as eth0 or wlan0), you should be aware that the mechanism of defining their names via /etc/udev/rules.d/70-persistent-net.rules is officially not supported by udev in buster (while it may still work in some cases). To avoid the danger of your machine losing networking after the upgrade to buster, it is recommended that you migrate in advance to the new naming scheme (usually meaning names like enp0s1 or wlp2s5, which incorporate PCI bus- and slot-numbers). Take care to update any interface names hard-coded in configuration for firewalls, ifupdown, and so on.

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).

Para descobrir os nomes no novo estilo que serão usados, primeiro descubra os nomes atuais das interfaces relevantes:

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

Para cada um desses nomes, verifique se ele é usado em arquivos de configuração, e qual nome o udev preferiria usar:

$ 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.)

Quando você estiver pronto para realizar a troca, desabilite o 70-persistent-net.rules renomeando-o ou comentando linhas individualmente. Em máquinas virtuais, você precisará remover os arquivos /etc/systemd/network/99-default.link e (se estiver usando dispositivos de rede virtio) /etc/systemd/network/50-virtio-kernel-names.link. Depois, reconstrua o initrd:

$ sudo update-initramfs -u
    

e reinicialize. O seu sistema deve ter agora os nomes de interface de rede no estilo novo. Ajuste todos os arquivos de configuração remanescentes e teste o seu sistema.

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. Elevados o nível de segurança e a versão padrão do OpenSSL

Seguindo várias recomendações de segurança, a versão padrão mínima do TLS mudou de TLSv1 para TLSv1.2.

O nível de segurança padrão para conexões TLS também foi incrementado, do nível 1 para o nível 2. Isso avança do nível de segurança de 80 bits para o nível de segurança de 112 bits, e exigirá chaves DHE e RSA de 2048 bits ou mais, chaves ECC de 224 bits ou mais, e SHA-2.

As configurações com abrangência em todo o sistema podem ser mudadas em /etc/ssl/openssl.cnf. Aplicativos podem ter também um meio específico por aplicação para sobrepor os valores padrão.

In the default /etc/ssl/openssl.cnf there is a MinProtocol and CipherString line. The CipherString can also set the security level. Information about the security levels can be found in the SSL_CTX_set_security_level(3ssl) manpage. The list of valid strings for the minimum protocol version can be found in SSL_CONF_cmd(3ssl). Other information can be found in ciphers(1ssl) and config(5ssl).

Restaurar os valores padrão com abrangência para todo o sistema em /etc/ssl/openssl.cnf de volta para os seus valores anteriores pode ser feito definindo-se:

        MinProtocol = None
        CipherString = DEFAULT
      

É recomendado que você contate o site remoto se os valores padrão causarem problemas.

5.1.9. Alguns aplicativos não funcionam no GNOME sobre Wayland

GNOME in buster has changed its default display server from Xorg to Wayland (see Seção 2.2.11, “GNOME defaults to Wayland”). Some applications, including the popular package manager synaptic, the default Simplified Chinese input method, fcitx, and most screen recording applications, have not been updated to work properly under Wayland. In order to use these packages, one needs to log in with a GNOME on Xorg session.

5.1.10. Pacotes obsoletos dignos de nota

A seguinte lista é de pacotes conhecidos e obsoletos dignos de nota (veja Seção 4.8, “Pacotes obsoletos” para uma descrição).

A lista de pacotes obsoletos inclui:

  • O pacote mcelog não é mais suportado em versões de kernel superiores a 4.12. rasdaemon pode ser usado como seu substituto.

  • O pacote revelation, que é usado para armazenar senhas, não está incluído na buster. keepass2 pode importar arquivos XML previamente exportados a partir do revelation. Por favor, certifique-se de exportar os seus dados a partir do revelation antes da atualização, para evitar de perder o acesso às suas senhas.

  • O pacote phpmyadmin não está incluído na buster.

  • Os pacotes ipsec-tools e racoon foram removidos da buster, pois as suas fontes ficaram defasadas em se adaptar a novas ameaças.

    Os usuários são encorajados a migrar para libreswan, o qual tem compatibilidade de protocolo mais ampla e está sendo mantido ativamente no upstream.

    O libreswan deve ser completamente compatível em termos de protocolos de comunicação, uma vez que implementa um superconjunto dos protocolos suportados pelo racoon.

  • O MTA simples ssmtp foi removido na buster. Isso se deve a ele não validar certificados TLS atualmente. Veja o bug #662960.

  • O pacote ecryptfs-utils não faz parte da buster devido a um sério bug não corrigido (#765854). Na data da escrita deste parágrafo, não havia um conselho claro para os usuários do eCryptfs, exceto não atualizar.

5.1.11. Componentes obsoletos para a buster

Com a próxima versão do Debian 11 (codinome bullseye), alguns recursos ficarão obsoletos. Os usuários precisarão migrar para outras alternativas para evitar problemas quando atualizarem para o Debian 11.

Isso inclui os seguintes recursos:

  • Python 2 will stop being supported by its upstream on January 1, 2020. Debian hopes to drop python-2.7 for Debian 11. If users have functionality that relies on python, they should prepare to migrate to python3.

  • O Icinga 1.x está no fim do ciclo de vida no upstream desde 31/12/2018. Enquanto o pacote icinga ainda estiver presente, os usuários devem usar o tempo de vida da buster para migrar para o Icinga 2 (pacote icinga2) e para o Icinga Web 2 (pacote icingaweb2). O pacote icinga2-classicui ainda está presente para usar a interface web CGI do Icinga 1.x com o Icinga 2, mas o suporte para tal será removido no Icinga 2.11. O Icinga Web 2 deverá ser usado no seu lugar.

  • A versão 3 da suíte de gerenciamento de listas de e-mail Mailman está disponível como uma novidade neste lançamento. O Mailman foi dividido em vários componentes; o núcleo está disponível no pacote mailman3 e a suíte completa pode ser obtida via o meta pacote mailman3-full.

    A versão legada 2.1 do Mailman continua disponível neste lançamento no pacote mailman, assim você pode migrar quaisquer instalações existentes no seu próprio ritmo. O pacote Mailman 2.1 será mantido em funcionamento no futuro previsível, mas não receberá melhoramentos ou mudanças importantes. Ele será removido no primeiro lançamento do Debian posterior ao encerramento do suporte a essa versão pelo upstream do Mailman.

    Todos são encorajados a atualizar para o Mailman 3, a versão moderna sob ativo desenvolvimento.

  • Os pacotes spf-milter-python e dkim-milter-python não são mais ativamente desenvolvidos pelo upstream, mas os seus substitutos mais ricos em funcionalidades, pyspf-milter e dkimpy-milter, estão disponíveis na buster. Os usuários devem migrar para os novos pacotes antes de os antigos pacotes serem removidos na bullseye.

5.1.12. Coisas para fazer depois da atualização e antes de reinicializar

Quando o apt full-upgrade terminar, a atualização formal estará completa. Para a atualização da buster, não é necessária nenhuma ação especial antes de executar uma reinicialização.

5.1.13. Pacotes relacionados ao init SysV não são mais necessários

[Nota]Nota

Esta seção não se aplica se você decidiu continuar com o sysvinit-core.

Após a mudança para systemd como sistema init padrão na Jessie e refinamentos adicionais na Stretch, vários pacotes relacionados ao SysV não são mais necessários e podem agora ser expurgados com segurança via

apt purge initscripts sysv-rc insserv startpar

5.2. Limitações no suporte de segurança

Há alguns pacotes onde o Debian não pode prometer fornecer portes retroativos mínimos para problemas de segurança. Esses são abordados nas subseções a seguir.

[Nota]Nota

O pacote debian-security-support ajuda a acompanhar a situação do suporte de segurança dos pacotes instalados.

5.2.1. Situação da segurança dos navegadores web e seus motores de renderização

O Debian 10 inclui diversos motores de navegadores que são afetados por um fluxo constante de vulnerabilidades de segurança. A alta taxa de vulnerabilidades e a ausência parcial de suporte do upstream na forma de ramos de longo prazo tornam muito difícil o suporte a esses navegadores e motores com correções de segurança portadas retroativamente. Além disso, as interdependências das bibliotecas tornam extremamente difícil atualizar para versões upstream mais novas. Por isso, navegadores feitos, por exemplo, sobre os motores webkit e khtml[6] foram incluídos na buster, mas não estão cobertos pelo suporte de segurança. Esses navegadores não devem ser usados em sites web não confiáveis. O pacote fonte webkit2gtk é coberto pelo suporte de segurança.

Para o uso geral de um navegador web, nós recomendamos o Firefox ou o Chromium. Eles serão mantidos atualizados reconstruindo as versões ESR correntes para a stable. A mesma estratégia será aplicada para o Thunderbird.

5.2.2. Pacotes baseados em Go

Atualmente, a infraestrutura do Debian não habilita propriamente a reconstrução de pacotes que ligam estaticamente partes de outros pacotes em larga escala. Até a buster, isso não era um problema na prática, mas com o crescimento do ecossistema Go, isso significa que os pacotes baseados em Go não serão cobertos pelo suporte de segurança regular até que a infraestrutura seja aprimorada para lidar com eles de forma a facilitar a sua manutenção.

Se forem necessárias atualizações, elas podem ser distribuídas somente através dos lançamentos pontuais regulares, o que pode demorar a acontecer.

5.3. Cuidados especiais com pacotes específicos

Na maioria dos casos, os pacotes deverão atualizar sem problemas entre stretch e buster. Existe um pequeno número de casos onde alguma intervenção pode ser necessária, seja antes ou durante a atualização; esses estão detalhados a seguir, baseados por pacote.

5.3.1. Glibc exige kernel Linux 3.2 ou superior

A partir da glibc 2.26, é exigido o kernel Linux 3.2 ou mais recente. Para evitar de quebrar completamente o sistema, a pré instalação de libc6 executa uma verificação. Em caso de falha, a instalação do pacote será cancelada, o que deixará a atualização não finalizada. Se o sistema estiver executando um kernel mais antigo que 3.2, por favor, atualize-o antes de iniciar a atualização da distribuição.

5.3.2. A semântica para usar variáveis de ambiente para su mudou

O su mudou a semântica na buster e não preserva mais as variáveis de ambiente DISPLAY e XAUTHORITY. Se você precisa executar aplicativos gráficos com su, você deverá defini-las explicitamente para permitir acesso à sua tela. Veja bug #905409 para uma discussão completa.

5.3.3. Bancos de dados PostgreSQL existentes precisam ser reindexados

Ao atualizar da stretch para a buster, os dados de localização da glibc são atualizados. Especificamente, isso muda como o PostgreSQL ordena dados em índices de texto. Para evitar corrompimento, tais índices precisam ser REINDEXados imediatamente após a atualização dos pacotes locales ou locales-all, antes de colocar os bancos de dados em produção novamente.

Comando sugerido:

sudo -u postgres reindexdb --all

Alternativamente, atualize os bancos de dados para o PostgreSQL 11 usando pg_upgradecluster. (Isso usa pg_dump por padrão, o qual reconstruirá todos os índices. Usar -m upgrade ou pg_upgrade não é seguro porque preserva a agora incorreta ordenação do índice.)

Veja o Wiki do PostgreSQL para mais informações.

5.3.4. mutt e neomutt

Na stretch, o pacote mutt teve patches aplicados a partir dos fontes de https://neomutt.org. Em vez disso, iniciando pela buster, o pacote que fornece /usr/bin/mutt será totalmente baseado nos fontes originais de http://www.mutt.org, e um pacote neomutt separado está disponível, fornecendo /usr/bin/neomutt.

Isso significa que algumas das funcionalidades que anteriormente eram fornecidas pelo pacote mutt não estão mais disponíveis. Se isso quebrar a sua configuração, você poderá instalar o pacote neomutt em seu lugar.

5.3.5. 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.6. 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.7. 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.8. Calamares installer leaves disk encryption keys readable

When installing Debian from live media using the Calamares installer (Seção 2.2.13, “News from Debian Live team”) 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.9. 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.10. 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.11. 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] Esses motores são distribuídos em vários pacotes fonte diferentes e o problema se aplica a todos os pacotes que os distribuem. O problema também se estende a motores de renderização web não mencionados explicitamente aqui, com exceção de webkit2gtk.