Capítulo 5. Problemas a estar atento na stretch

Índice

5.1. Itens específicos de actualizações para Stretch
5.1.1. Já não é suportado a montagem tardia de /usr
5.1.2. O acesso FTP a mirrors Debian será removido
5.1.3. Pacotes relevantes obsoletos
5.1.4. Coisas a fazer após a actualização e antes de reiniciar
5.1.5. Os executáveis são agora compilados, por omissão, como executáveis de posição independente (PIE).
5.1.6. A maioria dos pacotes de compatibilidade LSB foram removidos
5.1.7. MIPS de 32-bit agora necessita de um processador R2
5.2. Limitações no suporte de segurança
5.2.1. Estado da segurança dos navegadores web
5.2.2. Falta de suporte de segurança para o ecossistema à roda de libv8 e Node.js
5.3. Problemas com pacotes específicos
5.3.1. Cifras antigas e o protocolo SSH1 estão desabilitados mo OpenSSH por defeito
5.3.2. Possíveis alterações não retro-compatíveis a APT
5.3.3. Os Desktops irão migrar para o driver Xorg libinput
5.3.4. Upstart foi removido
5.3.5. A ferramenta debhelper agora gera, por defeito, pacotes dbgsym
5.3.6. Alterações relacionadas com OpenSSL
5.3.7. As alterações em Perl podem afectar software de terceiros
5.3.8. Incompatibilidade PL/Perl
5.3.9. O pacote net-tools será depreciado em favor do iproute2
5.3.10. A opção de mount _netdev é recomendada ao utilizar dispositivos AoE (ATA over ethernet)
5.3.11. Avisos Unespaced ... in regex is deprecated, ... inofensivos durante a actualização
5.3.12. Migração da policy store de SELinux
5.3.13. iSCSI Enterprise Target já não é suportado

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 Stretch

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

5.1.1. Já não é suportado a montagem tardia de /usr

[Nota]Nota

Esta secção apenas é aplicável a sistemas que utilizem um kernel personalizado, onde /usr/ esteja num ponto de montagem diferente de /. Se utilizar os pacotes de kernel disponibilizados por Debian, não será afectado por isto.

Montar /usr utilizando apenas ferramentas que se encontram em / já não é suportado. Isto funcionou apenas para algumas configurações especificas no passado, e agora é explicitamente não suportadas.

Isto significa que para stretch todos os sistemas onde /usr esteja numa partição separada necessitam de utilizar um gerador de initramfs que monte /usr. Todos os geradores de initramfs em stretch fazem-no.

5.1.2. O acesso FTP a mirrors Debian será removido

Os mirrors alojados de Debian irão deixar de disponibilizar acesso FTP. Se tem utilizado o protocolo ftp: no seu sources.list, então por favor migre para http:. Por favor considere o seguinte exemplo para a migração:

deb http://deb.debian.org/debian          stretch         main
deb http://deb.debian.org/debian-security stretch/updates main

# tor variant (requires apt-transport-tor)
# deb  tor+http://vwakviie2ienjx6t.onion/debian          stretch            main
# deb  tor+http://sgvtcaew4bxjd7ln.onion/debian-security stretch/updates    main

Os exemplos acima não incluem as non-free e contrib. Por favor lembre-se de incluir estes se necessitar desses componentes activos.

Para mais informação, por favor refira-se ao anúncio Shutting down public FTP services.

5.1.3. 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:

  • A maioria dos pacotes -dbg foi removida do arquivo principal. Estes foram substituídos por pacotes -dbgsym que estão disponíveis a partir do arquivo debian-debug. Por favor veja Secção 2.2.8, “Um novo arquivo para símbolos de debug”.

  • Os gestores de palavras-passe fpm2 e kedpm já não são mantidos pelos autores. Por favor utilize outro gestor de palavras-passe como o pass, keepassx ou keepass2. Assegure-se que extrai as suas palavras-passe do fpm2 e do kedpm antes de remover os pacotes.

  • O pacote net-tools está a ser depreciado em favor do iproute2. Para mais informações veja Secção 5.3.9, “O pacote net-tools será depreciado em favor do iproute2 ou o Debian reference manual.

  • As ferramentas de monitorização nagios3 foram removidas do stretch. O pacote icinga é o substituto mais próximo. Este lê os seus ficheiros de configuração a partir de um caminho diferente do nagios, mas são compatíveis.

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

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

5.1.5. Os executáveis são agora compilados, por omissão, como executáveis de posição independente (PIE).

Por predefinição, o compilador GNU GCC 6 disponibilizado por Debian stretch irá compilar todos os executáveis como independentes de posição. Isto fornece mitigação para uma classe inteira de vulnerabilidades.

Infelizmente, o kernel Linux disponibilizado em Debian 8 (até à 8.7) tem um problema que pode fazer com que alguns programas compilados como executáveis independentes de posição possam crashar com um problema sem descrição tal como segmentation fault. Este problema foi resolvido na versão de Linux disponibilizada na 8.8 (versão 3.16.43 ou posterior) e o kernel disponibilizado em Debian 9 (versão 4.9 ou posterior).

Recomendamos que actualize o kernel para uma versão corrigida e depois reinicie antes de iniciar a actualização para stretch. Se estiver a correr o kernel de Debian 8.8 ou mais recente, não está afectado por este problema.

Se durante a actualização estiver a correr uma versão afectada do kernel, recomendamos fortemente que reinicie para utilizar o kernel do stretch logo após a actualização para evitar encontrar este problema.

5.1.5.1. Mudanças no comportamento de PIE para administradores de sistemas e desenvolvedores

[Nota]Nota

Esta secção destina-se principalmente a desenvolvedores ou administradores de sistema. É improvável que os utilizadores de Ambientes de Trabalho sejam afectados por esta secção.

O acima também leva a algumas alterações que vale a pena estar a par.

  • A ferramenta file (entre outras) irá classificar tais binários como shared object em vez de executable. Se tiver filtros baseados em ficheiros binários então estes podem necessitar de serem actualizados (e.g. filtros de spam).

  • As bibliotecas estáticas que sejam compiladas em executáveis agora também necessitam de ser compiladas como código independente de posição. A seguinte mensagem de erro do linker é um simtoma disto:

    relocation ... against '[SYMBOL]' can not be used when making a shared object; recompile with -fPIC
    

    Note que apesar da mensagem de erro dizer -fPIC, é suficiente recompilar com -fPIE (que é o predefinido nos pacotes GCC 6 que fazem parte do stretch).

  • Historicamente, os executáveis independentes de posição eram associados com uma perda de performance em algum hardware. Notavelmente na arquitectura i386 (máquinas Intel de 32-bit). Apesar de GCC 5 e GCC 6 terem melhorado muito a performance para executáveis independentes de posição em Intel de 32-bit, esta optimização poderá não ser aplicável a todas as arquitecturas. Por favor considere analisar a performance do seu código se tiver como alvo máquinas de arquitecturas com um número muito limitado de registos.

5.1.6. A maioria dos pacotes de compatibilidade LSB foram removidos

Devido a falta de interesse e teste, Debian removeu a vasta maioria dos pacotes de compatibilidade Linux Standard Base (LSB).

Debian irá continuar a disponibilizar uns poucos utilitários LSB chave utilizados internamente e externamente, tais como lsb-release e as funções sysvinit init em lsb-base. Além disso, Debian continua firmemente a suportar o Filesystem Hierarchy Standard (FHS) version 2.3 com alterações menores descritas no Debian Policy Manual.

5.1.7. MIPS de 32-bit agora necessita de um processador R2

O suporte para MIPS de 32-bit (ambos big- e little- endian) agora necessita de um processador que suporte o conjunto de instruções MIPS32 Release 2. Notavelmente os sistemas Loongson-2E/2F e sistemas baseados neles (incluindo o portátil Yeeloong) já não são suportados.

O seguinte script da shell pode ser utilizado para indicar se a sua máquina suporta R2 (assumindo que está presente apenas um tipo de processador). Note que os processadores do Loongson-3 são suportados apesar de apenas referirem suporte para MIPS32 Release 1.

if grep -E -q '^isa.*\bmips(32|64)r2\b' /proc/cpuinfo; then
	echo "OK (R2 supported)"
elif grep -q '^cpu model.*\bICT Loongson-3\b' /proc/cpuinfo; then
	echo "OK (Loongson 3)"
else
	echo "NOT OK: R2 not supported"
fi

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.

Note que 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

Debian 9 inclui vários motores de navegador de internet que são afectados por um fluxo regular de vulnerabilidades de segurança. A alta taxa de vulnerabilidades e a falta parcial de suporte dos autores sob a forma de branches por longos períodos de tempo torna muito difícil suportar estes navegadores através da adaptação de correcções de segurança (backports). Além disso, as interdependências entre bibliotecas tornam impossível actualizar para novos lançamentos mais recentes. Por isso, os navegadores criados sob os motores webkit, qtwebkit e khtml estão incluídos no stretch, 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.

Para um navegador web recomendamos o Firefox ou Chromium.

Chromium - apesar de construído sobre o código do Webkit - é um pacote leaf, o qual irá ser mantido actualizado ao recompilar os actuais lançamentos do Chromium para stable. O Firefox e Thunderbird também irão ser mantidos actualizados ao recompilar os actuais lançamentos ESR para stable.

5.2.2. Falta de suporte de segurança para o ecossistema à roda de libv8 e Node.js

A plataforma Node.js é construída sob libv8-3.14, a qual experimenta um grande volume de problemas de segurança, mas actualmente não existem voluntários dentro do projecto ou da equipa de segurança suficientemente interessados e disponíveis para utilizar uma grande quantidade de tempo necessário para resolver esses problemas.

Infelizmente, isto significa que libv8-3.14, nodejs, e o ecossistema de pacotes node-* associados actualmente não devem ser utilizados com conteúdo não-confiável, tal como dados por tratar da Internet.

Além disso, estes pacotes não irão receber quaisquer actualizações de segurança durante o tempo de vida do lançamento stretch.

5.3. Problemas com pacotes específicos

Na maioria dos casos, a actualização dos pacotes deve ser suave entre jessie e stretch. 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. Cifras antigas e o protocolo SSH1 estão desabilitados mo OpenSSH por defeito

O lançamento OpenSSH 7 desabilitou por defeito, algumas cifras mais antigas e o protocolo SSH1. Por favor tenha cuidado ao actualizar as máquinas onde tenha acesso apenas por SSH.

Além disso, a opção por defeito da configuração "UseDNS" mudou de sim para não. Isto pode fazer com que os utilizadores que utilizam a funcionalidade "from=" em authorized_keys para limitar o acesso ssh a máquinas, possam ser deixados de fora, o que é especialmente problemático se estiver a actualizar remotamente.

Para mais informação por favor veja a documentação do OpenSSH.

5.3.2. Possíveis alterações não retro-compatíveis a APT

Esta secção cobre algumas alterações incompatíveis ao APT que possam afectar o seu sistema.

5.3.2.1. O APT agora obtém ficheiros como um utilizador não privilegiado (_apt)

O APT agora irá tentar descartar todos os privilégios de root antes de obter ficheiros a partir dos mirrors. O APT pode detectar alguns casos onde isto irá falhar e como recurso irá obter os ficheiros como root mas com um aviso. No entanto, isto poderá não detectar algumas configurações mais exóticas (e.g. regras de firewall por UID específico).

Se experimentar problemas com esta funcionalidade, por favor mude para o utilizador _apt e verifique que:

  • tem acesso a ficheiros em /var/lib/apt/lists e /var/cache/apt/archives.

  • tem acesso de leitura à trust store do APT (/etc/apt/trusted.gpg e /etc/apt/trusted.gpg.d/)

  • consegue resolver nomes de DNS e obter ficheiros. Métodos de exemplo para testar:

    # Do pacote dnsutils (se utilizar tor, por favor verifique em vez disso com tor-resolve).
    $ nslookup debian.org >/dev/null || echo "Cannot resolve debian.org"
    $ wget -q https://debian.org/ -O- > /dev/null || echo "Cannot download index page of debian.org"
    

    Para problemas com DNS, por favor verifique que /etc/resolv.conf é legível.

5.3.2.2. Novo motor de APT pinning

O APT 1.1 introduziu um novo motor de pinning que agora coincide com a descrição na página do manual.

O antigo motor atribuía uma prioridade de pin por pacote; o novo atribui prioridades de pin por versão. Depois escolhe a versão com o pin mais alto que não seja um downgrade ou que tenha um pin > 1000.

Isto altera o efeito de alguns pins, especialmente dos negativos. Anteriormente, fazer pinning a uma versão para -1 efectivamente prevenia que o pacote fosse instalado (o pin do pacote era -1), agora apenas previne que a versão deste pacote seja instalada.

5.3.2.3. Novos requisitos para repositórios APT

[Nota]Nota

Esta secção apenas se aplica se tiver activos (ou quiser utilizar) repositórios de terceiros ou se mantiver um repositório APT.

Para melhorar a estabilidade do download e assegurar a segurança do conteúdo obtido, o APT agora necessita do seguinte a partir de um repositório APT:

  • O ficheiro InRelease tem de estar disponível.

  • Todos os metadados têm de incluir, pelo menos, informação de controlo SHA256 de todos os itens. Isto inclui a assinatura GPG do ficheiro InRelease.

  • As assinaturas do ficheiro InRelease devem ser feitas com uma chave de tamanho 2048 bits ou superior.

Se depender de algum repositório de terceiros que não possa cumprir com o acima, por favor incite-os a actualizar o repositório. Está disponível mais informação acerca do ficheiro InRelease, que pode ser encontrada no Debian Wiki.

5.3.3. Os Desktops irão migrar para o driver Xorg libinput

[Nota]Nota

Esta secção apenas é relevante se alterou ou necessitar alterar a configuração predefinida da configuração de input do Xorg.

Em Jessie, o driver de input predefinido para o Xorg é o evdev. Em Stretch, o predefinido mudou para o driver libinput. Se tiver uma configuração do Xorg que dependa do driver evdev, deve convertê-la para o driver libinput ou reconfigurar o seu sistema para o utilizar o driver evdev.

O seguinte é uma configuração de exemplo para o libinput para habilitar a funcionalidade Emulate3Buttons.

Section "InputClass"
        Identifier "mouse"
        MatchIsPointer "on"
        Driver "libinput"
        Option "MiddleEmulation" "on"
EndSection

Insira-a no /etc/X11/xorg.conf.d/41-middle-emulation.conf, reinicie a máquina (ou reinicie o Xserver) e deve passar a estar activa.

O driver evdev ainda está disponível no pacote xserver-xorg-input-evdev.

5.3.4. Upstart foi removido

Devido à falta de mantenedores do software original, o sistema de init Upstart foi removido de Stretch. Se o seu sistema depender deste pacote, deve notar que este não irá ser actualizado durante o tempo de vida de Debian 9 e que a partir de Debian 10 (buster), os jobs do Upstart poderão ser removidos dos pacotes.

Por favor considere mudar para um sistema init suportado, como o systemd ou OpenRC.

5.3.5. A ferramenta debhelper agora gera, por defeito, pacotes dbgsym

[Nota]Nota

Esta secção destina-se principalmente a desenvolvedores ou organizações que compilem os seus próprios pacotes debian.

O conjunto de ferramentas debhelper agora irá gerar pacotes dbgsym por defeito para binários ELF. Se desenvolver e empacotar binários, por favor verifique que as suas ferramentas suportam estes pacotes extra que são automaticamente gerados.

Se utilizar o reprepro, irar querer actualizar pelo menos para a versão 4.17.0. Para o aptly, irá necessitar pelo menos da versão 1.0.0, a qual infelizmente não está disponível em Debian stretch.

Se as suas ferramentas não forem capazes de lidar com isto graciosamente, pode pedir ao debhelper para desabilitar esta funcionalidade ao acrescentar noautodbgsym na variável DEB_BUILD_OPTIONS do seu serviço de compilação. Para mais informações por favor veja a manpage dh_strip.

5.3.6. Alterações relacionadas com OpenSSL

A aplicação openssl espera argumentos de opções antes dos argumentos que não opções. Por exemplo, isto já não funciona:

openssl dsaparam 2048 -out file

enquanto que isto ainda funciona:

openssl dsaparam -out file 2048

O comando openssl enc mudou o digest predefinido (utilizado para criar a chave da frase-passe) de MD5 para SHA256. O digest pode ser especificado com a opção -md no caso de ficheiros antigos que necessitem ser desencriptados com um OpenSSL mais recente (ou ao contrário).

As cifras 3DES e RC4 já não estão disponíveis para comunicação TLS/SSL. Os servidores linkados a OpenSSL não os podem oferecer e os clientes não se conseguem ligar aos servidores que oferecem apenas estes. Isto significa que o OpenSSL e o Windows XP já não partilham uma cifra em comum.

O pacote libssl-dev disponibiliza ficheiros header para compilar contra o OpenSSL 1.1.0. A API mudou muito e é possível que o software já não consiga ser compilado. Existe um resumo das alterações. Se não conseguir actualizar o seu software, existe também o libssl1.0-dev que disponibiliza headers contra o OpenSSL 1.0.2.

5.3.7. As alterações em Perl podem afectar software de terceiros

[Nota]Nota

Esta secção aplica-se a código mantido fora de Debian - local, de terceiros ou scripts e módulos antigos de Perl.

  • Alguns módulos foram removidos do core Perl e são agora distribuídos em pacotes separados. Exemplos notáveis são CGI, disponível no pacote libcgi-pm-perl e Module::Build, disponível no pacote libmodule-build-perl.

  • O directório de trabalho atual (.) foi removido da lista predefinida de directórios incluídos, @INC. Isto pode afectar a utilização de require(), do() etc., onde os argumentos sejam ficheiros no directório atual.

    Todos os programas e módulos perl distribuídos por Debian foram corrigidos para dar resposta a quaisquer incompatibilidades causadas pelo acima; por favor registe bugs se este não for o caso. Como a mudança agora feita em perl 5.26.0, o software de terceiros também terão de ser corrigidas. Informação para os developers sobre como corrigir este problema é disponibilizada nas perl 5.26 release notes (veja a secção SECURITY).

    Se necessário pode restablecer temporariamente . globalmente em @INC ao comentar a linha em /etc/perl/sitecustomize.pl, mas só deve fazer isto percebendo os potenciais riscos. Esta alternativa irá ser removida em Debian 10. Também pode definir a variável de ambiente PERL_USE_UNSAFE_INC num contexto específico que terá o mesmo efeito.

  • A lista completa de alterações em Perl desde a versão em Debian 8 está disponível em perl522delta e perl524delta.

5.3.8. Incompatibilidade PL/Perl

O pacote de linguagem procedimental PL/Perl, em jessie, é incompatível com a versão de Perl em stretch. O pacote postgresql-plperl-9.4 será removido durante a actualização, tornando os procedimentos de Perl no servidor disfuncionais. Actualizando para PostgreSQL 9.6 não deverá ser afectado, os procedimentos irão funcionar no novo cluster PostgreSQL se o pacote postgresql-plperl-9.6 estiver instalado. Se não estiver seguro, faça uma cópia de segurança dos seus clusters PostgreSQL 9.4 antes de actualizar para stretch.

5.3.9. O pacote net-tools será depreciado em favor do iproute2

O pacote net-tools já não fará parte, por defeito, das novas instalações, já que a sua prioridade foi baixada de importante para opcional. Os utilizadores, em vez disso, são aconselhados a utilizar o conjunto de ferramentas moderno iproute2 (o qual já fazia parte das novas instalações desde à alguns lançamentos). Se preferir continuar a utilizar os programas do net-tools pode sempre instalar através de

apt install net-tools

[Atenção]Atenção

Por favor tenha em conta que net-tools pode ser desinstalado durante a actualização se foi instalado apenas para satisfazer alguma dependência. Se depender de net-tools, por favor lembre-se de o marcar como pacote instalado manualmente antes da actualização através de:

apt-mark manual net-tools

Aqui está um sumário de comandos net-tools, em conjunto com o seu equivalente iproute2:

comandos do antigo net-toolscomandos do substituto iproute2
arpip n (vizinho ip)
ifconfigip a (ip addr), ip link, ip -s (ip -stats)
iptunnelip tunnel
nameifip link
netstatss, ip route (for netstat -r), ip -s link (for netstat -i), ip maddr (for netstat -g)
routeip r (ip route)

5.3.10. A opção de mount _netdev é recomendada ao utilizar dispositivos AoE (ATA over ethernet)

[Nota]Nota

Isto é aplicável apenas a sistemas que tenham dispositivos ATA over ethernet (AoE) montados. Se o sistema não tiver shares de rede, pode saltar esta secção em segurança.

Devido a uma limpeza na forma como é lidada a desconfiguração de rede, os dispositivos AoE em uso já não são lidados conforme era esperado durante o desligar, possivelmente resultando em bloqueios e/ou perda de dados. Para mitigar esta situação, é sugerido montar tais dispositivos utilizando a opção de mount _netdev. Esta opção também está disponível ao utilizar swap sobre AoE.

5.3.11. Avisos Unespaced ... in regex is deprecated, ... inofensivos durante a actualização

Durante a actualização, poderá ver alguns avisos como:

Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/^(.*?)(\\)?\${ <-- HERE ([^{}]+)}(.*)$/ at /usr/share/perl5/Debconf/Question.pm line 72.
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/\${ <-- HERE ([^}]+)}/ at /usr/share/perl5/Debconf/Config.pm line 30.

Estes são inofensivos e acontecem se perl-base for actualizado antes do pacote debconf.

5.3.12. Migração da policy store de SELinux

[Nota]Nota

Esta secção apenas se aplica a sistemas que estejam a utilizar SELinux, o qual não está activo por defeito.

Em stretch, a policy store de SELinux foi movida de /etc/selinux/<policy_name> para /var/lib/selinux/<policy_name>. Além disso, o formato utilizado dentro do store foi alterado.

As políticas disponibilizadas por Debian (e.g. do pacote selinux-policy-default) serão automaticamente migradas. No entanto, as políticas especificas do sistema têm de ser migradas manualmente.

O pacote semanage-utils disponibiliza o script /usr/lib/selinux/semanage_migrate_store para fazer esta transição.

5.3.13. iSCSI Enterprise Target já não é suportado

O iSCSI Enterprise Target (IET), empacotado em lançamentos anteriores no pacote iscsitarget, já não está em Debian. Já que não irá funcionar com versões recentes do kernel, e o projecto não tem tido actividade de desenvolvimento nos anos recentes.

Os utilizadores de IET são encorajados a mudar para a stack LIO, a qual é totalmente suportada em Debian stretch. O pacote targetcli-fb disponibiliza o utilitário de configuração para o alvo LIO iSCSI.

Como a stack LIO foi desenvolvida independentemente da IET, a configuração tem de ser migrada manualmente.