3 votes

Comment créer correctement un bastion ssh, avec fail2ban, dans un conteneur Docker

J'ai déjà posé la question sur les forums Docker, mais jusqu'à présent, pas de chance avec une réponse. J'espère avoir plus de chance ici.

Je suis en train de créer un bastion ssh (avec fail2ban pour la sécurité) dans un conteneur Docker. Le conteneur ne servira à rien d'autre qu'à être un bastion ssh et servira à accéder à des volumes liés via sshfs.

Actuellement, j'utilise ce que je soupçonne être une méthode très mauvaise. Mon Dockerfile :

  • tire la dernière image debian stable-slim,
  • installe ssh et fail2ban via apt,
  • ajoute des utilisateurs, sshd_config et des jails fail2ban,
  • puis spécifie un script bash wrapper dans lequel je démarre inconditionnellement ssh et fail2ban avec des chemins de configuration personnalisés dans /app

Cela fonctionne, avec quelques réserves (absence de /var/log/auth.log pour fail2ban à surveiller, donc assez de configuration à tordre là-dedans), mais je sens que je me trompe.

Le problème est qu'il est très difficile de trouver des informations sur la manière de faire correctement ce que j'essaie de faire. Il y a d'innombrables pages listant comment se connecter en ssh à un conteneur pour le débogage, la sauvegarde, etc. Il y a aussi quelques pages intéressantes sur pourquoi vous ne devriez pas vous connecter en ssh à un conteneur. Mais je n'ai pas trouvé la page du Graal " voici comment configurer correctement un bastion ssh avec fail2ban dans un conteneur Docker ". Est-ce que cela existe même ? Ou ai-je raison de le faire de la manière dont je le fais ?

Merci !

2voto

Ari Points 121

N.B. Je sais que c'est une vieille question, mais elle est apparue dans un moteur de recherche. J'écris ma réponse pour aider ceux qui se posent la même question.


Il est préférable d'avoir le moins de services possible par conteneur.

Cela réduit la complexité lors de la mise à jour des conteneurs, et facilite la récupération en cas de problème.

Vous devriez avoir deux conteneurs - un conteneur SSH et un conteneur Fail2Ban.

Pour le conteneur SSH, vous mappez le fichier journal approprié vers un répertoire sur l'hôte. Configurez le conteneur selon vos besoins.

Le conteneur Fail2Ban aura besoin des autorisations pour éditer le pare-feu IPTables sur l'hôte. Le conteneur Fail2Ban devra également mapper les mêmes fichiers journaux SSH (et même ajouter :ro pour "lecture seule" dans le mappage car il ne devrait pas avoir besoin d'écrire dans les fichiers journaux)

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