APT-SECURE(8)

NOME
apt-secure - Suporte de autenticação de arquivos para o APT

DESCRIÇÃO

A partir da versão 0.6, o APT contém código que faz verificação de assinaturas do ficheiro Release para todos os repositórios. Isto assegura que dados como pacotes no arquivo não podem ser modificados por pessoas que não têm acesso à chave de assinatura do ficheiro Release. A partir da versão 1.1 o APT requer repositórios para disponibilizar informação recente de autenticação para uma utilização desimpedida do repositório. Desde a versão 1.5, as alterações na informação contida no ficheiro Release acerca do repositório precisam de ser confirmadas antes do APT continuar a aplicar actualizações a partir deste repositório.

Note: Todos os front-ends de gestão de pacotes como o apt-get(8), aptitude(8) e synaptic(8) suportam esta funcionalidade de autenticação, portanto este manual usa o APT para se referir a eles todos apenas para simplificar.

CONFIGURAÇÃO DO UTILIZADOR

Chaves devem ser geralmente incluídas dentro dos seus .sources correspondentes ao embeber a chave blindada-ASCII na opção Signed-By. Para o fazer, substitua a linha vazia por um ponto, e depois indente todas as linhas por dois espaços. Veja sources.list(5) para mais informação.

Em alternativa, as chaves podem ser colocadas em /etc/apt/keyrings para chaves locais , ou /usr/share/keyrings para chaves geridas por pacotes, e depois referenciadas pela opção Signed-By: /etc/apt/keyrings/example-archive-keyring.asc num ficheiro .sources ou usando deb [signed-by=/etc/apt/keyrings/example-archive-keyring.asc] ... num formato .list antigo. Isto pode ser útil para versões APT anteriores a 2.4, que não suportam chaves embebidas. As chaves blindadas-ASCII têm de usar uma extensão .asc, e chaves não blindadas um extensão .gpg.

Para gerar chaves apropriadas para uso no APT usando GnuPG, você vai precisar usar o comando gpg --export-options export-minimal [--armor] --export. Soluções anteriores que envolviam --keyring file --import já não funcionam com versões GnuPG recentes pois usam um formato interno novo ("GPG keybox database").

Note que uma instalação predefinida já contém todas as chaves para adquirir em segurança pacotes a partir dos repositórios predefinidos, portanto gerir chaves só é necessário se forem adicionados repositórios de terceiros. O pacote extrepo pode ser usado para gerir vários repositórios externos com facilidade.

REPOSITÓRIOS NÃO ASSINADOS

Se um arquivo tem um ficheiro Release não assinado ou nem sequer tem um ficheiro Release, por predefinição todas as versões actuais do APT irão recusar descarregar dados dele em operações update e mesmo que seja forçadas a fazê-lo, front-ends como o apt-get(8) irão precisar de confirmação explícita se um pedido de instalação incluir um pacote que venha de um tal arquivo não autenticado.

Você pode forçar todos os clientes do APT a elevar apenas avisos ao definir a opção de configuração Acquire::AllowInsecureRepositories para true. Também se consegue permitir que repositórios individuais possam ser inseguros via sources.list(5) opção allow-insecure=yes. Note que repositórios inseguros são fortemente desencorajados e todas as opções para forçar o apt a continuar a suporta-os serão eventualmente removidas. Os utilizadores também têm a opção Trusted disponível para desactivar até os avisos, mas tenha certeza de intender as implicações como está detalhado em sources.list(5).

Um repositório que anteriormente era autenticado mas que perdeu este estado numa operação update provoca um erro em todos os clientes do APT independentemente da opção de permitir ou proibir a utilização de repositórios não seguros. O erro pode ser superado ao definir adicionalmente Acquire::AllowDowngradeToInsecureRepositories para true ou para repositórios individuais com a opção de sources.list(5) allow-downgrade-to-insecure=yes.

REPOSITÓRIOS ASSINADOS

A corrente de confiança desde um arquivo APT até ao utilizador final é feita em diferentes passos. O apt-secure é o último passo nesta corrente, confiar num arquivo não quer dizer que os pacotes em que confia não possam conter código malicioso, mas que dizer que você confia no responsável do arquivo. É da responsabilidade do responsável do arquivo assegurar que a integridade do arquivo está correcta.

O apt-secure não revê as assinaturas ao nível do pacote. Se você necessita de ferramentas que o façam deve procurar pelo debsig-verify e debsign (disponibilizados nos pacotes debsig-verify e devscripts respetivamente).

A corrente de confiança em Debian começa (por exemplo) quando o responsável faz o upload de um novo pacote ou de uma nova versão de um pacote para o arquivo Debian. De modo a se tornar efectivo, este upload precisa de ser assinado por uma chave contida em um dos chaveiros de responsável de pacotes Debian (disponível no pacote debian-keyring). As chaves dos responsáveis são assinadas por outros responsáveis seguindo procedimentos pré-estabelecidos para assegurar a identidade do dono da chave. Existem procedimentos semelhantes em todas as distribuições baseadas em Debian.

Assim que o pacote submetido é verificado e incluído no arquivo, a assinatura do responsável é despojada, são computados sumários de verificação do pacote e colocado no ficheiro Packages. Os sumários de verificação de todos os ficheiros Packages são então computados e colocados no ficheiro Release. O ficheiro Release é então assinado pela chave de arquivo para este lançamento de Ubuntu, e distribuído juntamente com os pacotes e os ficheiros Packages em mirrors de Ubuntu. As chaves estão no chaveiro do arquivo Ubuntu no pacote ubuntu-keyring.

Os utilizadores finais podem verificar a assinatura do ficheiro Release, extrair um sumario de verificação de um pacote a partir dele e compara-lo com o sumário de verificação do pacote que descarregaram manualmente - ou confiar no APT que faz isto automaticamente.

Note que isto é diferente de verificar assinaturas por cada pacote. É desenhado para prevenir dois ataques possíveis:

    • Ataques de rede "man in the middle". Sem verificação de assinatura, um agente malicioso pode introduzir-se ele próprio no processo de descarga de pacotes e disponibilizar software malicioso seja ao controlar um elemento de rede (router, switch, etc.) ou ao redirecionar tráfego para um servidor impostor (através de ataques de fraude de ARP ou DNS).

    • Mirror network compromise. Sem verificação de assinatura, um agente malicioso pode comprometer uma máquina mirror e modificar os ficheiros dele para propagar software malicioso a todos os utilizadores que descarregam pacotes a partir dessa máquina.

No entanto, isto não defende contra um compromisso do próprio servidor mestre (o qual assina os pacotes) ou contra um compromisso da chave usada para assinar os ficheiros Release. Em qualquer caso, este mecanismo pode complementar uma assinatura por-pacote.

ALTERAÇÕES NA INFORMAÇÃO

Um ficheiro Release contém, para além dos sumários de verificação para os ficheiros no repositório, também informação geral acerca do repositório como a origem, nome de código ou número de versão do lançamento.

Este informação é mostrada em diversos lugares para que o dono do repositório deve sempre assegurar a exatidão. Mais ainda, mais configuração do utilizador como apt_preferences(5) podem depender e fazer uso desta informação. Desde a versão 1.5 que o utilizador tem de confirmar explicitamente as alterações para sinalizar que o utilizador está suficientemente preparado, por exemplo, para o novo lançamento maior da da distribuição enviada para o repositório (como por exemplo indicada pelo nome de código).

CONFIGURAÇÃO DO REPOSITÓRIO

Se você deseja fornecer assinaturas de arquivo a um arquivo sob sua manutenção, você tem que:

    • Criar um ficheiro Release de nível de topo, se este já não existir. Você pode fazer isto ao correr apt-ftparchive release (disponibilizado no apt-utils).

    • Assina-lo. Você pode fazer isso ao correr gpg --clearsign -o InRelease Release e gpg -abs -o Release.gpg Release.

    • Publicar a impressão digital da chave, para que os seus utilizadores irão saber que chave precisam de importar de modo a autenticar os ficheiros no arquivo. É melhor enviar a sua chave no seu próprio pacote chaveiro como Ubuntu faz com ubuntu-keyring para ser capaz de distribuir actualizações e transições de chave mais tarde automaticamente.

    • Disponibilize instruções em como adicionar o seu arquivo e chave. Se os seus utilizadores não conseguirem a sua chave seguramente a cadeia de confiança descrita em cima fica comprometida. Como você pode os utilizadores a adicionar a sua chave depende do seu arquivo e do alcance de audiência ao ter o sue pacote de ficheiro incluído num outro arquivo que os utilizadores já têm configurado (como os repositórios predefinidos da distribuição que usam) para elevar a teia da confiança.

Sempre que o conteúdo do arquivo mude (são adicionados novos pacotes ou removidos), o responsável do arquivo tem que seguir os primeiros dois passos previamente delineados.

VEJA TAMBÉM

apt.conf(5), apt-get(8), sources.list(5), apt-ftparchive(1), debsign(1), debsig-verify(1), gpg(1)

Para mais informação de fundo você deve querer reler a Infraestrutura de Segurança da Debian[1] no capítulo do Manual Debian de Segurança (disponível também no pacote harden-doc) e o Strong Distribution HOWTO[2] de V. Alex Brennen.

BUGS

página de bugs do APT[3]. Se deseja reportar um bug no APT, por favor veja /usr/share/doc/debian/bug-reporting.txt ou o comando reportbug(1).

AUTOR

APT foi escrito pela equipa do APT <apt@packages.debian.org>.

AUTORES DO MANUAL

Este manual é baseado no trabalho de Javier Fernández-Sanguino Peña, Isaac Jones, Colin Walters, Florian Weimer e Michael Vogt.

TRADUÇÃO

A tradução Portuguesa foi feita por Américo Monteiro <a_monteiro@netcabo.pt> de 2009 a 2012. A tradução foi revista pela equipa de traduções portuguesas da Debian <traduz@debianpt.org>.

Note que este documento traduzido pode conter partes não traduzidas. Isto é feito propositadamente, para evitar perdas de conteúdo quando a tradução está atrasada relativamente ao conteúdo original.

AUTORES

Jason Gunthorpe

Equipa do APT

NOTAS

1.  Infraestrutura de Segurança da Debian
    https://www.debian.org/doc/manuals/securing-debian-manual/ch07

2.  Strong Distribution HOWTO
    http://www.cryptnet.net/fdp/crypto/strong_distro.html

3.  página de bugs do APT
    https://bugs.debian.org/src:apt