yum install http - ¿es esto seguro?

10

No estoy muy familiarizado con el uso de yum para instalar paquetes. En una vida anterior solía apt.

Actualmente, estoy viendo algunas instrucciones para ejecutar

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

que aparentemente se suscribirá a un repositorio particular, desde el cual se pueden descargar más paquetes. ¿Es esto algo seguro?

En comparación, sé que los paquetes apt tienen firmas gpg, lo que significa que las descargas a través de http no son un problema. Como se describe aquí . Y al descargar paquetes fuera de los repositorios principales con apt, puede agregar manualmente una clave gpg para que apt acepte, para asegurarse de que cualquier paquete no estándar tenga la misma fuente confiable.

Si ejecuto el comando anterior, ¿me pedirá que acepte una clave gpg antes de que comience a instalar cosas, o podría instalar algo?

En caso de que sea relevante, mi /etc/yum.confarchivo contiene gpgcheck=1dentro de la [main]sección.

SauceCode
fuente

Respuestas:

11

Hay un poco que explicar con tu pregunta.

En primer lugar, es importante entender cómo YUMy rpmtrabajar juntos:

  1. RPM es un formato de paquete y existe una herramienta de línea de comandos con un nombre similar rpmque instala paquetes RPM individuales. Puede pensar en la rpmherramienta de línea de comando como análoga a la dpkgherramienta de línea de comando ya que ambos instalan paquetes individuales sin sus dependencias.
  2. yumes un programa de nivel superior que instala un paquete RPM y sus dependencias. Puede pensar que el yumcomando es análogo apt-getya que ambos pueden instalar un paquete y todas sus dependencias.
  3. Cuando ejecute yum install, debe usar el nombre del paquete, no la URL. Por ejemplo: yum install package, similar a cómo se ejecute: apt-get install package.
  4. Si tiene una URL de paquete, puede ejecutarla rpm -i https://url, pero si no tiene instaladas las dependencias del paquete, deberá instalarlas una por una con rpm -i(doloroso) o con yumy un repositorio configurado.

Ahora, en lo que respecta a GPG, hay algunas cosas que hay que entender que se aplican tanto a los sistemas de empaquetado Debian como a RPM, pero las cosas más importantes a entender son:

  1. Ambos sistemas tienen 2 conjuntos de firmas GPG: firmas GPG en los propios paquetes y firmas GPG en los repositorios.
  2. Los paquetes de Debian no tienen sus firmas GPG verificadas y los paquetes oficiales de los repositorios de proyectos de Ubuntu y Debian no están firmados por GPG.
  3. Ambos sistemas son vulnerables a una variedad de ataques de repetición GPG cuando se usan sobre texto claro HTTP; absolutamente, debe instalar sus paquetes al 100% a través de HTTPS y no de texto plano HTTP si es posible.

En cuanto a las firmas RPM y YUM GPG:

  1. Primero, puede especificar la ruta o la URL de la clave GPG en el archivo de configuración con: gpgkey=https://example/gpg.keyo gpgkey=/usr/share/example/gpg.key. Puede especificar varias claves GPG, si se necesita más de 1.
  2. En segundo lugar, hay dos opciones: gpgcheck=1y repo_gpgcheck=1. La primera opción hace yum installque se verifique la firma GPG en el paquete, la segunda opción verifica la firma GPG del repositorio. Idealmente, debe usar ambos, pero muchos repositorios no están configurados correctamente para admitir ambos.
  3. La primera vez que ejecute yum install, yumintentará importar las claves GPG enumeradas en gpgkeysi aún no se han importado. Se le pedirá y se le pedirá que acepte o rechace.
  4. Debe tener el pygpgmepaquete instalado en su sistema para verificar las firmas GPG. En las versiones más recientes de RHEL y CentOS, pygpgmese instala automáticamente una dependencia de yum, pero debe verificar que esté instalado en su sistema.
  5. No existe un equivalente de apt-transport-https, yumpuede hablar por HTTPS fuera de la caja, pero debe asegurarse de que la versión yumque está utilizando tenga la sslverifyopción predeterminada activada; Algunas versiones de yumno. Si su versión no lo hace, debe configurarla como habilitada. Es crítico verificar los certificados SSL.

Incluso con las firmas GPG tanto en los paquetes como en los repositorios, los repositorios siguen siendo vulnerables a los ataques de repetición; debe acceder a sus repositorios a través de HTTPS si es posible. La breve explicación de un ataque es que un atacante malintencionado puede capturar instantáneamente los metadatos del repositorio y la firma GPG asociada en un momento particular y reproducir esos metadatos y firmas en un cliente que lo solicite, evitando que el cliente vea paquetes actualizados. Como no se tocan los metadatos, la firma GPG será válida. El atacante puede usar un exploit contra un error conocido en el software que no se actualizó para atacar la máquina. Puede leer más sobre los ataques a los administradores de paquetes en este documento .

Escribí dos extensas publicaciones de blog sobre GPG y YUM / rpm , así como GPG y APT .

Por favor, deje un comentario si tiene preguntas adicionales que pueda responder; La gestión de paquetes es increíblemente difícil de hacer correctamente.

Joe Damato
fuente
Agradable. Hay mucho que absorber aquí. Una pregunta específica: "Cuando ejecute yum install, debe usar el nombre del paquete, no la URL". - De acuerdo, esto es lo que normalmente haría con apt. Pero dada la URL, ¿qué harías? Quizás esto sea obvio, pero ¿puede agregar manualmente el repositorio http://example.comy luego hacer yum install package?
SauceCode
"Ambos sistemas son vulnerables a una variedad de ataques de repetición GPG cuando se usan sobre texto claro HTTP". Interesante: ¿puede señalar alguna lectura adicional aquí? ¿Y hay un equivalente de ñam apt-transport-https?
SauceCode
@SauceCode Actualicé mi respuesta para responder a sus preguntas y vincular a un documento con más información de seguridad del administrador de paquetes.
Joe Damato
Tenga en cuenta que los aptrepositorios ahora tienen fechas de validez en sus Releasearchivos, lo que limita el tiempo que los ataques de repetición siguen siendo válidos. (Si no recuerdo mal, esto se implementó como resultado del documento vinculado en la respuesta). ¡Pero usar TLS es una mejor solución!
Stephen Kitt
@StephenKitt Sí, Valid-Untilse agregó para evitar ataques de repetición. sin embargo, no es razonable pedir a los usuarios del repositorio que descarguen los metadatos para un nuevo repositorio y lo inspeccionen manualmente para asegurarse de que el encabezado esté presente. Es mucho más fácil decirle a la gente que siempre use TLS.
Joe Damato