Pourquoi il n'y a pas de transport https pour l'outil debian apt?

Avec toute la paranoïa qui est venue avec les révélations de NSA et tout, je me request pourquoi le mécanisme d'installation de package de Debian ne supporte pas HTTPS pour son transport, encore less l'utiliser par défaut.

Je sais que les packages debian ont une sorte de validation de signature en utilisant GPG, mais je ne pense toujours pas que l'utilisation du transport HTTPS au lieu de HTTP serait trop difficile, count tenu de l'importance cruciale de la security.

Edit: Je veux surtout me protéger contre les attaques MitM (y compris le reniflement du trafic), pas les administrateurs de miroir Debian. Les référentiels HTTP mettent l'set de la configuration du système sur la table, si quelqu'un fouille mon trafic vers les miroirs debian.

Il y a. Vous devez installer le package apt-transport-https . Ensuite, vous pouvez utiliser des lignes comme

  deb https://some.server.com/debian stable main 

dans votre file sources.list . Mais ce n'est généralement pas nécessaire, car tout le contenu est public de toute façon et il ajoute des frais généraux de encryption et de latence. Puisque vous ne faites pas confiance à une key publique d'attaquant, même le trafic http est à l'abri des attaques MitM. apt vous avertira et ne parviendra pas à installer les packages lorsqu'un attaquant injecte des packages manipulés.

EDIT: Comme mentionné dans les commentaires, il est en effet plus sûr d'utiliser le référentiel TLS. Les searchs montrent que l'utilisation d'apt sur des référentiels non chiffrés peut en effet poser un risque de security, car le transport HTTP est vulnérable aux attaques de rejeu.

Votre hypothèse est erronée: vous pouvez utiliser les téléchargements HTTPS. Il vous suffit de find un miroir qui le supporte et de mettre son URL dans votre list de sources. Vous devrez installer le package apt-transport-https .

Debian ne rend pas les téléchargements HTTPS faciles car il y a très peu d'avantages. La dissortingbution de packages Debian inclut déjà un mécanisme pour vérifier les packages: tous les packages sont signés avec Gpg . Si un homme-dans-le-milieu actif redirige votre trafic vers un server avec des packages corrompus, la corruption sera détectée car les signatures GPG ne seront pas valides. L'utilisation de GPG plutôt que de HTTPS a l'avantage de protéger contre plus de menaces: non seulement contre un user actif dans la connection de l'user final, mais aussi contre un miroir malveillant ou infecté ou d'autres problèmes dans la string de dissortingbution des packages .

HTTPS fournit un léger avantage pour la confidentialité car il masque les packages que vous téléchargez. Cependant, un observateur passif peut toujours détecter le trafic entre votre ordinateur et un server de packages, afin qu'ils sachent que vous téléchargez des packages Debian. Ils pourraient également avoir une bonne idée des packages que vous téléchargez à partir de la taille des files.

Le seul endroit où HTTPS pourrait aider est la security d'amorçage, pour get une image d'installation valide. Debian ne semble pas fournir cela: il y a des sums de contrôle du support d'installation , mais seulement sur HTTP.

Tout récemment, je suis venu sur le problème avec le référentiel apt de ma société. Le problème était que si nous utilisons le transport HTTP standard, n'importe qui d'autre peut get le package facilement. Étant donné que la société met en place son propre logiciel propriétaire et ne veut pas le partager avec tout le monde, le transport HTTP devient un problème. Pas une tragédie mais un problème. Il y a plusieurs façons de limiter l'access au package: le pare-feu, en limitant l'access au niveau du server Web, en utilisant ssh comme moyen de transport. Assez facile de lire la lecture sur ce sujet pourrait être trouvé ici: Restreindre l'access à votre repository Debian privé

Dans notre cas, nous avons décidé d'utiliser l'authentification https transport + client certificatee. En bref, tout ce qu'il faut est:

  1. Préparer les certificates auto-signés, client et server (en utilisant easy-rsa);
  2. Configurez le server Web qui gère le référentiel pour n'accepter que les https; Dans le cas de nginx, cela peut ressembler à:

     server { listn 443; root /path/to/public; server_name secure_repo; ssl on; ssl_certificatee /etc/nginx/ssl/server.crt; ssl_certificatee_key /etc/nginx/ssl/server.key; ssl_session_timeout 5m; ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:; ssl_prefer_server_ciphers on; ssl_client_certificatee /etc/nginx/ssl/ca.crt; ssl_verify_client on; location / { autoindex on; } } 
  3. Mettez le certificate client, la key client et le certificate ca dans / etc / apt / ssl et, dans le cas d'Ubuntu, ajoutez le file 00https à /etc/apt/apt.conf.d:

    Debug::Acquire::https "true"; Acquire::https::example.com { Verify-Peer "true"; Verify-Host "false"; CaInfo "/etc/apt/ssl/ca.crt"; SslCert "/etc/apt/ssl/client.crt"; SslKey "/etc/apt/ssl/client.key"; };

Gardez à l'esprit que si vous utilisez un certificate auto-signé, il est important de désactiver la vérification de l'hôte: Verify-Host "false"; Si vous ne le faites pas, vous attraperez une erreur: SSL: certificatee subject name (blah-blah-blah) does not match target host name 'example.com'

Et nous y voilà, il n'y a plus d'access non autorisé au référentiel. Donc, c'est quelque chose de très utile et puissant.

Notez qu'en raison de vulnérabilités comme

https://bugs.launchpad.net/ubuntu/+source/apt/+bug/1647467

… qui contourne la signature InRelease, c'est probablement une bonne idée de configurer HTTPS de toute façon.

Pour le cas d'utilisation "anonymat" il y a aussi apt-transport-tor qui vous permet alors de mettre des URI comme tor+http:// dans les files sources.list. C'est une meilleure protection de l'anonymat que simplement le encryption de la connection à votre miroir.

Par exemple, un observateur local sait toujours que vous effectuez la mise à jour ou l'installation de logiciels même avec HTTPS, et peut probablement faire des suppositions décentes quant à savoir lequel de vos actions (et peut-être même les packages, en fonction de la taille).