Capítulo 5. Problemas a estar atento na buster

Índice

5.1. Itens específicos de actualizações para Buster
5.1.1. Não é suportada a opção de mount hidepid para procfs
5.1.2. ypbind falha o arranque com -no-dbus
5.1.3. NIS server does not answer NIS client requests by default
5.1.4. sshd falha a autenticação
5.1.5. Daemons falham o arranque ou o sistema parece congelado durante o arranque
5.1.6. Migrar de nomes antigos de interfaces de rede
5.1.7. Configuração do módulo para interfaces de bonding e dummy
5.1.8. Versão predefinida do OpenSSL e nível de segurança elevados
5.1.9. Algumas aplicações não funcionam em GNOME com Wayland
5.1.10. Pacotes relevantes obsoletos
5.1.11. Componentes depreciados para buster
5.1.12. Coisas a fazer após a actualização e antes de reiniciar
5.1.13. Já não são necessários pacotes relacionados como init SysV
5.2. Limitações no suporte de segurança
5.2.1. Estado da segurança dos navegadores web e seus rendering engines
5.2.2. Pacotes baseados em Go
5.3. Problemas com pacotes específicos
5.3.1. As semânticas para utilizar variáveis de ambiente do su foram alteradais
5.3.2. As bases de dados PostgreSQL existentes necessitam ser reindexadas
5.3.3. mutt e neomutt
5.3.4. Aceder à aplicação de definições do GNOME sem o rato
5.3.5. o gnome-disk-utility falha a alteração da palavra-passe de LUKS causando perda de dados permanente (apenas buster 10.0)
5.3.6. o evolution-ews foi abandonado, e as caixas de email que utilizem Exchange, Office365 ou Outlook serão removidas
5.3.7. O instalador Calamares deixa as chaves de encriptação do disco legíveis
5.3.8. Alterações do S3QL URL para S3 buckets da Amazon
5.3.9. Split in configuration for logrotate
5.3.10. The rescue boot option is unusable without a root password

Por vezes, as alterações introduzidas num novo lançamento têm efeitos secundários que não podemos evitar razoavelmente, ou porão a descoberto bugs noutro lado. Esta secção documenta os problemas que conhecemos. Por favor leia a errata, a documentação dos pacotes relevantes, relatórios de bugs e outra informação mencionada em Secção 6.1, “Leitura adicional”.

5.1. Itens específicos de actualizações para Buster

Esta seção cobre itens relacionados com a actualização de stretch para buster.

5.1.1. Não é suportada a opção de mount hidepid para procfs

É conhecido que a opção hidepid de mount para /proc causa problemas com as atuais versões de systemd, e é considerado pelo seu desenvolvimento como configuração não-suportada. Os utilizadores que tenham modificado /etc/fstab para activar esta opção são aconselhados e desativa-la antes da atualização, para assegurar que as sessões de login funcionam em buster. (Um caminho possível para as reactivar é sublinhado na página Hardening do Wiki.)

5.1.2. ypbind falha o arranque com -no-dbus

As opções predefinidas de ypbind foram alteradas. No entanto, se alterou este ficheiro então a antiga predefinição não será atualizada e tem de assegurar que a opção YPBINDARGS= em /etc/default/nis não inclui -no-dbus. Se estiver presente -no-dbus, ypbind irá falhar o arranque, e poderá não conseguir fazer login. Para mais informações veja o bug 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 a autenticação

Foram alteradas as semânticas das opções PubkeyAcceptedKeyTypes e a similar HostbasedAcceptedKeyTypes para sshd. Agora estas especificam algoritmos de assinatura que são aceites pelo seu respectivo mecanismo de autenticação, onde previamente estas especificavam tipos de chaves aceites. Esta distinção interessa quando utilizar algoritmos de assinatura RSA/SHA2 rsa-sha2-256, rsa-sha2-512 e os seus certificados hómologos. As configurações que ultrapassam estas opções mas omitam estes nomes de algoritmos podem causar falhas de autenticação inesperadas.

Não é necessária nenhuma ação para configurações que aceitem as predefinições para estas opções.

5.1.5. Daemons falham o arranque ou o sistema parece congelado durante o arranque

Devido ao systemd necessitar de entropia durante o arranque e o kernel tratar tais chamadas como bloqueios quando a entropia disponivel for muito baixa, o sistema pode congelar por minutos ou horas até que o susbsistema de aleatoriadade esteja iniciado convenientemente (random: crng init done). Para sistemas amd64 que suportem a instrução RDRAND este problema é evitado pelo kernel Debian ao utilizar esta instrução como predefinida (CONFIG_RANDOM_TRUST_CPU).

Sistemas que não amd64 e alguns tipos de máquinas virtuais necessitam de fornecer uma fonte de entropia diferente para continuar o arranque rápido. Foi escolhido o haveged para isto dentro do projecto Instalador Debian e pode ser uma opção válida se não tiver disponível hardware de entropia neste sistema. Em máquinas virtuais considere encaminhar entropia do host para as VMs via virtio_rng.

Se ler isto após atualizar um sistema remoto para buster, faça ping na rede continuamente ao sistema já que isto acrescenta entropia ao pool de aleatoriedade e o sistema eventalmente ficará novamente acessível por ssh.

Para outras opções veja o wiki e a visão geral de DLange sobre o problema.

5.1.6. Migrar de nomes antigos de interfaces de rede

Se o seu sistema foi atualizado a partir de um lançamento anterior, e ainda utiliza o estilo antigo de nomes de interface de rede que foram descontinuados com o stretch (tais como eth0 ou wlan0), deve ter em atenção que o udev em buster já não suporta o mecanismo de definir nomes através de /etc/udev/rules.d/70-persistent-net.rules (apesar de ainda poder existir nalguns casos). Para evitar o perigo da sua máquina perder a ligação à rede após a atualização para buster, é recomendado que migre em avanço para o novo esquema de nomes (normalmente significa nomes como enp0s1 ou wlp2s5, que incorpora os números do bus e slot PCI). Trate de atualizar qualquer nome de interface definido explicitamente na configuração de firewalls, ifupdown, e por aí fora.

A alternativa é mudar para um mecanismo suportado para impor o antigo esquema de nomes, tal como um ficheiro systemd .link (veja systemd.link(5)). A opção de linha de comandos do kernel net.ifname=0 também poderá funcionar para sistemas com apenas um interface de rede (de um dado tipo).

Para encontrar os nomes com o novo estilo que serão utilizados, primeiro encontre os nomes atuais os interfaces relevantes:

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

Para cada um destes nomes, verifique nos ficheiros de configuração se é utilizado, e que nome udev deve preferir utilizar para isso:

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

Isto deve fornecer informação suficiente para conceber um plano de migração. (se a saída de udevadm incluir um nome onboard ou slot, isso terá prioridade; os nomes baseados no MAC são normalmente tratados como recurso, mas poderão ser necessários para hardware USB de rede.)

Assim que estiver preparado para fazer a mudança, desabilite 70-persistent-net.rules quer renomeando-o ou comentando as linhas individuais. Em máquinas virtuais irá necessitar de remover os ficheiros /etc/systemd/network/99-default.link e (caso utilize dispositivos de rede virtio) /etc/systemd/network/50-virtio-kernel-names.link. Depois reconstrua o initrd:

$ sudo update-initramfs -u
    

e reinicie. O seu sistema deverá agora ter o novo estilo de nomes de interface de rede. Ajuste quaisquer outros ficheiros de configuração, e teste o seu sistema.

Para mais informação veja o wiki, a documentação original, e o README.Debian do udev.

5.1.7. Configuração do módulo para interfaces de bonding e dummy

Os sistemas que utilizam channel bonding e/ou interfaces dummy, por exemplo para configurar uma máquina como router, podem encontrar problemas ao atualizar para buster. As novas versões de systemd instalam um ficheiro /lib/modprobe.d/systemd.conf (que se destina a simplificar a configuração através de systemd-networkd) o qual contém as linhas

 options bonding max_bonds=0
 options dummy numdummies=0
    

Os administradores que dependiam de valores diferentes irão ter de assegurar que estes são definidos de forma correcta a tomar precedência. Um ficheiro em /etc/modprobe.d, irá ultrapassar um com o mesmo nome em /lib/modprobe.d, mas os nomes são processados por ordem alfabética, por isso /lib/modprobe.d/systemd.conf segue e ultrapassa (por exemplo) /etc/modprobe.d/dummy.conf. Assegure-se que qualquer ficheiro de configuração local tem um nome que é ordenado após systemd.conf, tal como /etc/modprobe.d/zz-local.conf.

5.1.8. Versão predefinida do OpenSSL e nível de segurança elevados

Seguindo algumas recomendações de segurança, a versão mínima de TLS foi alterada de TLSv1 para TLSv1.2.

O nível predefinido de segurança para ligações TLS foi também aumentado de nível 1 para nível 2. Isto altera do nível de segurança de 80 bit para o nível de seguraça de 112 bit e irá necessitar de chaves de 2048 bit ou chaves RSA e DHE maiores, chaves de 224 bit ou chaves ECC maiores e SHA-2.

As definições para todo o sistema podem ser alteradas em /etc/ssl/openssl.cnf. As aplicações podem ter também uma forma especifica da aplicação para ultrapassar estas predefinições.

No /etc/ssl/openssl.cnf predefinido, existe uma linha MinProtocol e CipherString. A CipherString também pode definir o nível de segurança. A informação acerca dos níveis de segurança pode ser encontrada na manpage SSL_CTX_set_security_level(3ssl). A lista de strings válidas para a mínina versão do protocolo pode ser encontrada em SSL_CONF_cmd(3ssl). Outra informação pode ser encontrada em ciphers(1ssl) e config(5ssl).

Podem ser muudadas as definições do sistema completo de volta para os valores anteriores em /etc/ssl/openssl.cnf ao definir:

        MinProtocol = None
        CipherString = DEFAULT
      

É recomendado que contacte o site remoto se as predefinições causarem problemas.

5.1.9. Algumas aplicações não funcionam em GNOME com Wayland

O GNOME, em buster, mudou o seu servidor de display predefinido de Xorg para Wayland (veja Secção 2.2.11, “GNOME com predefinição para Wayland”). Algumas aplicações, incluindo o popular gestor de pacotes synaptic, o método de introdução predefinido de Chinês Simplificado, fcitx, e a maioria das aplicações que gravam o ecrã, ainda não foram atualizadas para funcionar correctamente sob Wayland. De modo a que possa utilizar estes pacotes, é necessário fazer login com uma sessão GNOME on Xorg.

5.1.10. Pacotes relevantes obsoletos

Os seguintes são uma lista de pacotes conhecidos e relevantes que são obsoletos (para uma descrição, veja Secção 4.8, “Pacotes obsoletos” ).

A lista de pacotes obsoletos inclui:

  • O pacote mcelog já não é suportado em versões de kernel superior a 4.12. Em vez disso pode ser utilizado rasdaemon para o substituir.

  • O pacote revelation, que é utilizado para guardar palavras-passe, não é incluido em buster. O keepass2 pode importar palavras-passe exportadas previamente para ficheiros XML a partir do revelation. Por favor assegure-se que exporta os seus dados do revelation antes de fazer a atualização, para evitar perder o acesso às suas palavras-passe.

  • O pacote phpmyadmin não está incluido em buster.

  • o ipsec-tools e racoon foi removido de buster já que o seu código-fonte tem ficado para trás em adaptar-se a novas ameaças.

    Os utilizadores são encorajados a migrar para libreswan, o qual tem um espectro de compatibilidade mais largo e é mantido ativamente pelos autores.

    libreswan deverá ser totalmente compatíveis em termos de protocolos de comunicação já que implementa um conjunto dos protocolos suportados por racoon.

  • O MTA simples ssmtp foi abandonado para buster. Isto é devido a atualmente não validar certificados TLS; veja bug #662960.

  • O pacote ecryptfs-utils não faz parte de buster devido a um bug sério não corrigido (#765854). Na altura em que foi escrito este parágrafo, não havia uma recomendação clara para os utilizadores com Ecryptfs, excepto não atualizar.

5.1.11. Componentes depreciados para buster

Com o próximo lançamento de Debian 11 (nome de código bullseye) serão depreciadas algumas funcionalidades. Os utilizadores irão necessitar de migrar para outras alternativas para prevenir problemas ao actualizar para 11.

Isto inclui as seguintes funcionalidades:

  • Python 2 irá deixar de ser suportado pelos seus autores em 1 de Janeiro de 2020. Debian espera abandonar python-2.7 em Debian 11. Se os utilizadores tiverem funcionalidades que dependam de python, devem preparar-se para migrar para python3.

  • O Icinga 1.x atingiu o final do suporte pelos seus autores desde 2018-12-31, apesar do pacote icinga ainda estar presente, os utilizadores devem utilizar o tempo de vida do buster para migrar para o pacote Icinga 2 (icinga2) e Icinga Web 2 (pacote icingaweb2). O pacote icinga2-classicui ainda está presente para utilizar o interface web CGI 1.1 Icinga com o Icinga 2, mas o suporte será removido no Icinga 2.11. Em vez disso deve ser utilizado o Icinga Web 2.

  • A versão 3 do pacote de gestão de listas de correio Mailman está pela primeira vez disponível neste lançamento. O Mailman foi dividido em vários componentes; o core está disponível no pacote mailman3 e o conjunto completo pode ser obtido através do metapacote mailman3-full.

    Neste lançamento mantém-se disponível a versão antiga 2.1 do Mailman, no pacote mailman, para que possa migrar qualquer instalação existente à sua velocidade. O pacote Mailman 2.1 será mantido num futuro previsível, mas não terá alterações ou melhorias de maior. Será removido do próximo lançamento Debian após o desenvolvimento na fonte ter terminado de suportar esta versão.

    Todos são encorajados a atualizar para Mailman 3, o lançamento recente sob desenvolvimento activo.

  • Os pacotes spf-milter-python e dkim-milter-python já não são activamente desenvolvidos pelos seus autores, no entanto os seus substituos mais ricos em funcionalidades, pyspf-milter e dkimpy-milter, estão disponíveis em buster. Os utilizadores devem migrar para os novos pacotes antes dos antigos serem removidos em bullseye.

5.1.12. Coisas a fazer após a actualização e antes de reiniciar

Quando apt full-upgrade tiver terminado, a actualização formal estará completa. Para o upgrade para buster não é necessário tomar ações especiais antes de reiniciar.

5.1.13. Já não são necessários pacotes relacionados como init SysV

[Nota]Nota

Esta secção não se aplica se decidiu ficar com sysvinit-core.

Após a mudança para systemd como o sistema init predefinido em Jessie e depois com mais refinamentos em Stretch, já não são necessários vários pacotes relacionados com SysV e podem agora ser purgados em segurança com

apt purge initscripts sysv-rc insserv startpar

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

Existem alguns pacotes onde Debian não pode prometer disponibilizar backports mínimos para problemas de segurança. Estes estão cobertos nas seguintes subsecções.

[Nota]Nota

O pacote debian-security-support ajuda a seguir o estado do suporte de segurança dos pacotes instalados.

5.2.1. Estado da segurança dos navegadores web e seus rendering engines

Debian 10 inclui vários motores de navegador da internet que são afectados por um fluxo regular de vulnerabilidades de segurança. A alta taxa de vulnerabilidades e a parcial falta de suporte dos autores sob a forma de branches de períodos de tempo longos torna muito difícil suportar estes navegadores e motores com backports de correcções de segurança. Além disso, as interdependências entre bibliotecas tornam extremamente difícil actualizar para novos lançamentos de orginais mais recentes. Por isso, estão incluidos no buster navegadores criados sob p.e. os motores webkit e khtml[6], mas não estão cobertos pelo suporte de segurança. Estes navegadores não devem ser utilizados para aceder a sites que não sejam de confiança. O pacote de código-fonte webkit2gtk é coberto pelo suporte de segurança.

Como navegador da web recomendamos Firefox ou Chromium. Estes irão manter-se atualizados ao recompilar os atuais lançamentos ESR para a stable. A mesma estratégia pode ser aplicada para o Thunderbird.

5.2.2. Pacotes baseados em Go

Atualmente a infraestrutura Debian não suporta correctamente a recompilação de pacotes que linkem estaticamente partes de outros pacotes em larga escala. Até ao buster, na prática, isto não era um problema, mas com o crescimento do ecosistema Go isto significa que os pacotes baseados em Go não serão cobertos pelo normal suporte de segurança até a infraestrutura ser melhorada para lidar com estes com manutenção sustentável.

Se houverem atualizações, estas apenas poderão vir através dos normais lançamentos pontuais, o que pode demorar a chegar.

5.3. Problemas com pacotes específicos

Na maioria dos casos, a actualização dos pacotes deve ser suave entre stretch e buster. Existe um pequeno número de casos onde poderá ser necessária alguma intervenção, quer antes ou depois da actualização; Estes estão detalhados abaixo, por pacote.

5.3.1. As semânticas para utilizar variáveis de ambiente do su foram alteradais

A semântica de su foi alterada no buster e já não preserva as variáveis de ambiente DISPLAY e XAUTHORITY. Se necessitar de correr aplicações gráficas com su, terá de definir explicitamente a permissão de acesso ao seu display. Veja bug #905409 para uma discussão extensiva.

5.3.2. As bases de dados PostgreSQL existentes necessitam ser reindexadas

Ao atualizar de stretch para buster, são atualizados os dados locale de glibc. Especificamente, isto altera como o PostgreSQL ordena os dados em índices de texto. Para evitar corrupção de dados, esses índices têm de ser REINDEXados imediatamente após a atualização dos pacotes locales ou locales-all, antes de colocar a base de dados novamente em produção.

Comando sugerido:

sudo -u postgres reindexdb --all

Em alternativa, atualize as bases de dados para PostgreSQL 11 utilizando pg_upgradecluster. (Isto utiliza pg_dump por predefinição que irá reconstruir todos os índices. Utilizar -m upgrade ou pg_upgrade não é seguro porque preserva a ordem de indexação, que agora é errada.)

Para mais informação, refira-se ao PostgreSQL Wiki.

5.3.3. mutt e neomutt

Em stretch, o pacote mutt tinha patches aplicados do código-fonte de https://neomutt.org. A partir de buster, o pacote que disponibiliza /usr/bin/mutt irá ser baseado exclusivamente no código-fonte original de http://www.mutt.org, e está disponível um pacote adicional neomutt que disponibiliza /usr/bin/neomutt.

Isto significa que algumas das funcionalidades que eram disponibilizadas anteriormente por mutt já não estão disponíveis. Se isto estragar a sua configuração poderá em vez disso instalar neomutt.

5.3.4. Aceder à aplicação de definições do GNOME sem o rato

Sem um dispositivo apontador, não há forma directa de alterar as definições na aplicação de definições do GNOME, disponibilizada por gnome-control-center. Como forma de contornar isto, pode navegar desde a barra lateral para o conteúdo principal carregando duas vezes na Seta Direita. Para voltar à barra lateral, pode iniciar uma pesquisa com Ctrl+F, escreva qualquer coisa e depois carregue em Esc para cancelar a pesquisa. Agora pode utilizar a Seta Cima e Seta Baixo para navegar pela barra lateral. Não é possível seleccionar resultados de pesquisa com o teclado.

5.3.5. o gnome-disk-utility falha a alteração da palavra-passe de LUKS causando perda de dados permanente (apenas buster 10.0)

Os utilizadores das imagens iniciais do lançamento buster não devem alterar a palavra-passe LUKS dos discos encriptados com o interface gráfico do GNOME para a gestão de discos. O pacote gnome-disk-utility em buster tem um péssimo bug (#928893) quando utilizado para mudar a palavra-passe LUKS: apaga a palavra-passe antiga mas falha definir correctamente a nova, tornando todos os dados do disco inacessíveis. Isto foi corrigido no primeiro lançamento pontual.

5.3.6. o evolution-ews foi abandonado, e as caixas de email que utilizem Exchange, Office365 ou Outlook serão removidas

Os utilizadores que utilizem o evolution como o seu cliente de email e se liguem a um servidor que corra Exchange, Office365 ou Outlook e que utilizem o plugin evolution-ews não devem atualizar para buster sem em avanço fazerem uma cópia de segurança dos dados e encontrarem uma solução alternativa, já que o evolution-ews foi abandonado devido ao bug #926712 e as suas caixas de correio, os calendários, as listas de contactos e de tarefas serão removidos e deixarão de estar acessíveis com o Evolurtion.

O pacote evolution-ews foi reintroduzido através de buster-backports. Os utilizadores que atualizem de stretch para buster podem utilizar buster-backports depois da atualização poderão reinstalar evolution-ews.

5.3.7. O instalador Calamares deixa as chaves de encriptação do disco legíveis

Ao instalar Debian a partir de um meio live utilizando o instalador Calamares (Secção 2.2.13, “Notícias da equipa Debian Live” e que seja escolhida a funcionalidade de encriptação completa, a chave de desbloqueio do disco ficará armazenada no initramfs que é de leitura para todos. Isto permite aos utilizadores com acesso ao sistema de ficheiros local acedederem e lerem a chave privada e ganharem acesso ao sistema de ficheiros novamente no futuro.

Isto pode ser ultrapassado ao acrescentar UMASK=0077 a /etc/initramfs-tools/conf.d/initramfs-permissions e correr update-initramfs -u. Isto irá recriar o initramfs sem permissões de leitura para todos.

Está planeada uma correção para o instalador (veja bug #931373) e será feito upload para debian-security. Entretanto os utilizadores de encriptação completa do disco devem aplicar a medida acima.

5.3.8. Alterações do S3QL URL para S3 buckets da Amazon

Ao utilizar s3ql com buckets S3 a Amazon, a sua configuração necessita ser atualizada para alterar o URL. O novo formato é:

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] Estes engines são distribuidos num número de pacotes fonte diferentes e a preocupação aplica-se a todos os pacotes que os distribuem. A preocupação também se estende a web rendering engines que não explicitamente mencionados aqui, com a excepção de webkit2gtk.