yum install http - isso é seguro?

10

Não estou familiarizado com o uso do yum para instalar pacotes. Em uma vida anterior eu usei o apt.

Atualmente, estou olhando algumas instruções para executar

# yum install http://example.com/package.rpm

que aparentemente se inscreverá em um repositório específico, do qual outros pacotes podem ser baixados. Isso é uma coisa segura a se fazer?

Para comparação, eu sei que os pacotes apt têm assinaturas gpg, o que significa que downloads por http não são um problema. Como descrito aqui . E ao baixar pacotes fora dos repositórios principais com o apt, você pode adicionar manualmente uma chave gpg para o apt aceitar, para garantir que qualquer pacote não padrão tenha a mesma fonte confiável.

Se eu executar o comando acima, o yum solicitará que eu aceite uma chave gpg antes de começar a instalar as coisas, ou poderá instalar alguma coisa?

Caso seja relevante, meu /etc/yum.confarquivo contém gpgcheck=1dentro da [main]seção.

SauceCode
fonte

Respostas:

11

Há um pouco a explicar com sua pergunta.

Primeiro, é importante entender como YUMe rpmtrabalhar em conjunto:

  1. O RPM é um formato de pacote e existe uma ferramenta de linha de comando com nome semelhante, rpmque instala pacotes individuais do RPM. Você pode pensar na rpmferramenta de linha de comando como análoga à dpkgferramenta de linha de comando, pois ambos instalam pacotes individuais sem suas dependências.
  2. yumé um programa de nível superior que instala um pacote RPM e suas dependências. Você pode pensar no yumcomando como análogo, apt-getpois ambos podem instalar um pacote e todas as suas dependências.
  3. Ao executar, yum installvocê deve usar o nome do pacote, não o URL. Por exemplo: yum install package, semelhante à forma como você deve executar: apt-get install package.
  4. Se você tiver um URL do pacote, poderá executar rpm -i https://url, mas se não tiver as dependências do pacote instaladas, será necessário instalá-las uma a uma com rpm -i(doloroso) ou com yume um repositório configurado.

Agora, no que diz respeito ao GPG, há algumas coisas para entender que se aplicam aos sistemas de empacotamento Debian e RPM, mas as coisas mais importantes a entender são:

  1. Ambos os sistemas têm 2 conjuntos de assinaturas GPG: assinaturas GPG nos próprios pacotes e assinaturas GPG nos repositórios.
  2. Os pacotes Debian não têm suas assinaturas GPG verificadas e os pacotes oficiais dos repositórios de projetos Ubuntu e Debian não são assinados por GPG.
  3. Ambos os sistemas são vulneráveis ​​a uma série de ataques de repetição de GPG quando usados ​​em HTTP de texto não criptografado; você deve absolutamente, 100% instalar seus pacotes via HTTPS e não texto HTTP, se possível.

Quanto às assinaturas RPM e YUM GPG:

  1. Primeiro, você pode especificar o caminho ou o URL da chave GPG no arquivo de configuração com: gpgkey=https://example/gpg.keyou gpgkey=/usr/share/example/gpg.key. Você pode especificar várias chaves GPG, se mais de 1 for necessário.
  2. Em segundo lugar, existem duas opções: gpgcheck=1e repo_gpgcheck=1. A primeira opção faz yum installcom que verifique a assinatura GPG no próprio pacote, a segunda opção verifica a assinatura GPG do repositório. Idealmente, você deve usar os dois, mas muitos repositórios não estão configurados corretamente para suportar os dois.
  3. A primeira vez que você executar yum install, yumtentará importar as chaves GPG listadas em gpgkeyse ainda não foram importadas. Você será solicitado a aceitar ou recusar.
  4. Você deve ter o pygpgmepacote instalado no seu sistema para que as assinaturas GPG sejam verificadas. Nas versões mais recentes do RHEL e CentOS, pygpgmeé automaticamente instalada uma dependência de yum, mas você deve verificar se está instalado no seu sistema.
  5. Não há equivalente apt-transport-https, yumpode falar sobre HTTPS imediatamente, mas você deve garantir que a versão que yumvocê está usando tenha a sslverifyopção padrão como habilitada; algumas versões yumdo não. Caso sua versão não seja, você deve configurá-la para habilitada. É essencial verificar os certificados SSL.

Mesmo com assinaturas GPG nos pacotes e nos repositórios, os repositórios ainda estão vulneráveis ​​a ataques de repetição; você deve acessar seus repositórios por HTTPS, se possível. A breve explicação de um ataque é que um invasor mal-intencionado pode capturar instantaneamente os metadados do repositório e a assinatura GPG associada em um determinado momento e reproduzir esses metadados e assinaturas para um cliente que solicita, impedindo que o cliente veja pacotes atualizados. Como os metadados não são tocados, a assinatura GPG será válida. O invasor pode usar uma exploração contra um bug conhecido no software que não foi atualizado para atacar a máquina. Você pode ler mais sobre ataques a gerenciadores de pacotes neste documento .

Escrevi dois extensos posts sobre GPG e YUM / rpm , além de GPG e APT .

Deixe um comentário se tiver outras perguntas que eu possa responder; gerenciamento de pacotes é incrivelmente difícil de fazer corretamente.

Joe Damato
fonte
Agradável. Há muito o que absorver aqui. Uma pergunta específica: "Ao executar, yum installvocê deve usar o nome do pacote, não o URL". - Concordo, isso é o que eu normalmente faria com o apt. Mas, dada a URL, o que você faria? Talvez isso seja óbvio, mas você pode adicionar manualmente o repo http://example.come depois fazer yum install package?
SauceCode
"Ambos os sistemas são vulneráveis ​​a uma série de ataques de repetição de GPG quando usados ​​sobre HTTP de texto não criptografado". Interessante - você pode apontar para outras leituras aqui? E existe um equivalente yum apt-transport-https?
SauceCode
@SauceCode Atualizei minha resposta para responder às suas perguntas e vincular a um artigo com mais informações de segurança do gerenciador de pacotes.
Joe Damato 21/10
Observe que os aptrepositórios agora têm datas de validade em seus Releasearquivos, o que limita o período de tempo em que os ataques de reprodução permanecem válidos. (Se bem me lembro, isso foi implementado como resultado do artigo vinculado na resposta.) Mas o uso do TLS é uma solução melhor!
Stephen Kitt
@StephenKitt Sim, Valid-Untilfoi adicionado para evitar ataques de reprodução. no entanto, não é razoável solicitar aos usuários do repositório que baixem os metadados para um novo repositório e os inspecionem manualmente para garantir que o cabeçalho esteja presente. Muito mais fácil dizer às pessoas para sempre usarem TLS.
Joe Damato 23/10