10 votes

Restreindre de manière sécurisée l'accès à un dépôt Debian privé

Je cherchais une méthode pour restreindre l'accès à un dépôt Debian privé et pouvoir s'y authentifier de manière non interactive (c'est-à-dire en utilisant un script).

L'article le plus utile que j'ai trouvé est en fait celui de Site d'administration de Debian mais la méthode sécurisée utilise ssh et des clés publiques/privées. Cela fonctionne très bien mais la clé publique de chaque hôte doit se trouver dans le fichier authorized_keys distant pour que l'authentification soit réussie. Il n'est pas question de fournir un mot de passe à ssh:// mais je suppose que cela devrait être possible.

Avez-vous essayé d'autres alternatives (par exemple, ftps) ?

Merci d'avance

5voto

MiniQuark Points 3595

Si vous exécutez toujours apt-get sur vos serveurs à la main (pas de apt-get lancées par crons), alors vous pouvez envisager d'utiliser transfert d'agent ssh . Cela évite d'avoir à gérer une paire de clés publiques/privées par serveur que vous gérez, et c'est probablement plus sûr que de laisser des clés privées sur chaque serveur.

Configuration initiale - connectez-vous aux serveurs que vous voulez gérer, et ajoutez quelque chose comme ceci à /etc/apt/sources.list (cet exemple suppose que vous voulez que vos serveurs se connectent à l'interface de l'entreprise). manager compte) :

    deb ssh://manager@my.repository.org/path other stuff
  • créer une paire de clés privées/publiques sur votre propre ordinateur, avec votre login johndoe par exemple (à condition que votre ordinateur tourne sous debian : sinon, vous pouvez le faire à partir d'un serveur debian dédié à la gestion) :

    ssh-keygen
  • veillez à ce qu'il soit protégé par une phrase clé forte

  • copier votre clé publique sur le serveur de référentiel dans /home/manager/.ssh/authorized_keys :

    ssh-copy-id manager@my.repository.org

Une fois par session de gestion

  • lancez l'agent ssh sur votre machine en tapant :

    eval `ssh-agent`
  • ajoutez votre clé à l'agent (vous aurez besoin de votre phrase de passe) :

    ssh-add

Gestion d'un serveur

  • connectez-vous au serveur que vous voulez gérer en utilisant ssh -A ( -A active le transfert d'agent) :

    ssh -A some.server.org
  • à la racine (si vous voulez utiliser sudo vous devez configurer /etc/sudoers ou bien sudo brisera le transfert d'agent, lisez ceci ):

    su
  • vous devriez maintenant être en mesure de vous connecter au compte du gestionnaire du référentiel en utilisant ssh sans avoir à retaper votre mot de passe, grâce au transfert d'agent. Par conséquent, apt-get devrait fonctionner parfaitement :

    apt-get udate

Terminer votre session de gestion

  • Une fois que vous avez fini de gérer vos serveurs, retirez vos clés de l'agent :

    ssh-add -D

Avantages

  • Peu de configuration initiale est nécessaire
  • Une seule clé privée est nécessaire
  • La clé privée est protégée par une phrase de passe forte.
  • Si quelqu'un obtient un accès root à l'un de vos serveurs, il n'aura pas immédiatement accès à votre serveur de dépôt.
    • Notez que si le pirate est patient et qualifié, il peut attendre que vous vous connectiez au serveur en utilisant la redirection d'agents, et il peut détourner le mécanisme de redirection afin d'accéder à votre serveur de référentiel.
    • Pour éviter cela, vous pouvez utiliser ssh-ask afin d'accepter/refuser toute tentative d'utilisation de votre clé.
    • Dans tous les cas, le hacker no d'avoir accès à la clé privée elle-même : il pourra simplement détourner le mécanisme de transfert afin de utiliser la clé, et seulement pendant le temps où vous êtes connecté au serveur.

4voto

Antoine Benkemoun Points 7284

Une façon de procéder est d'autoriser un certain nombre d'adresses IP à accéder au référentiel. Cela fonctionne très bien pour les réseaux locaux et les réseaux privés virtuels.

Simple et efficace.

2voto

MiniQuark Points 3595

La solution ssh + clés publiques/privées n'est pas que mauvais :

  • Connectez-vous en tant que root sur la machine cliente
  • type ssh-keygen alors ssh-copy-id your_login@your.repository.org
  • modifier /etc/apt/sources.list et ajoutez quelque chose comme :

    deb ssh://your_login@your.repository.org/path other stuff

En effet, cela nécessite de mettre la clé publique de chaque serveur dans le fichier ~/.ssh/authorized_keys sur le serveur, mais ce n'est pas si compliqué (voir ci-dessus) et cela vous permet de contrôler les serveurs que vous autorisez ou non à un moment donné (vous pouvez supprimer une clé à tout moment dans le fichier authorized_keys ).

2voto

MiniQuark Points 3595

Vous pourriez mettre en place un accès https à votre dépôt, sécurisé par un login/mot de passe (authentification de base). Le problème est que vous devez mettre le login/mot de passe en clair dans le fichier /etc/apt/sources.list (note : il y a un patch pour permettre de mettre le login/mot de passe en /root/.netrc à la place).

0voto

Justin Points 3736

Le lien dans votre question montre plusieurs méthodes. Vous voulez le numéro 2, https + authentification de base.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X