
Ce module Puppet fournit des configurations sécurisées pour ssh-client et ssh-server.
truecbc_required = false - true si CBC est requis pour les chiffrements. Cela n'est généralement nécessaire que si d'anciens mécanismes M2M doivent communiquer avec SSH et n'ont aucun des chiffrements sécurisés configurés activés. CBC est une alternative faible. Tout ce qui est plus faible doit être évité et n'est donc pas disponible.weak_hmac = false - true si des mécanismes HMAC plus faibles sont requis. Cela n'est généralement nécessaire que si d'anciens mécanismes M2M doivent communiquer avec SSH et n'ont aucun des HMAC sécurisés configurés activés.weak_kex = false - true si des mécanismes d'échange de clés (KEX) plus faibles sont requis. Cela n'est généralement nécessaire que si d'anciens mécanismes M2M doivent communiquer avec SSH et n'ont aucun des KEX sécurisés configurés activés.allow_root_with_key = false - false pour désactiver complètement la connexion root. Définir sur true pour autoriser root à se connecter via un mécanisme basé sur les clés.ports = [ 22 ] - ports sur lesquels ssh-server doit écouter et auxquels ssh-client doit se connecterlisten_to = [ "0.0.0.0" ] - une ou plusieurs adresses IP sur lesquelles ssh-server doit écouter. La valeur par défaut est vide, mais doit être configurée pour des raisons de sécurité !remote_hosts - un ou plusieurs hôtes auxquels ssh-client peut se connecter. La valeur par défaut est vide, mais doit être configurée pour des raisons de sécurité !allow_tcp_forwarding = false - définir sur true pour autoriser le transfert TCPallow_agent_forwarding = false - définir sur true pour autoriser le transfert d'agentuse_pam = false pour désactiver l'authentification PAMclient_options = {} - définir des valeurs dans le hash pour remplacer les paramètres du moduleserver_options = {} - définir des valeurs dans le hash pour remplacer les paramètres du moduleAprès avoir ajouté ce module, vous pouvez utiliser la classe :
class { 'ssh_hardening': }
Cela installera ssh-server et ssh-client. Vous pouvez également choisir un seul des deux via :
class { 'ssh_hardening::server': }
class { 'ssh_hardening::client': }
Vous devez configurer les attributs principaux :
class { 'ssh_hardening::server':
"listen_to" : ["10.2.3.4"]
}
La valeur par défaut de listen_to est 0.0.0.0. Il est fortement recommandé de modifier cette valeur.
Les options par défaut seront fusionnées avec les options transmises via les paramètres client_options et server_options.
Si une option est définie à la fois par défaut et via le paramètre d'options, cette dernière prévaudra.
L'exemple suivant activera X11Forwarding, qui est désactivé par défaut :
class { 'ssh_hardening':
server_options => {
'X11Forwarding' => 'yes',
},
}
Pour les tests locaux, vous pouvez utiliser vagrant et Virtualbox ou VMWare pour exécuter les tests localement. Vous devrez installer Virtualbox et Vagrant sur votre système. Voir Téléchargements Vagrant pour un paquet vagrant adapté à votre système. Pour tous nos tests, nous utilisons test-kitchen. Si vous n'êtes pas familier avec test-kitchen, veuillez consulter leur guide.
Ensuite, installez test-kitchen :
# Install dependencies
gem install bundler
bundle install
# Fetch tests
bundle exec thor kitchen:fetch-remote-tests
# Do lint checks
bundle exec rake lint
# Do spec checks
bundle exec rake spec
# fast test on one machine
bundle exec kitchen test default-ubuntu-1204
# test on Debian-based machines
bundle exec kitchen test
# for development
bundle exec kitchen create default-ubuntu-1204
bundle exec kitchen converge default-ubuntu-1204
Pour plus d'informations, voir test-kitchen
Je n'arrive pas à me connecter à mon compte. J'ai enregistré la clé client, mais cela ne me laisse toujours pas entrer.
Si vous avez épuisé tous les problèmes typiques (pare-feu, réseau, clé manquante, mauvaise clé, compte désactivé, etc.), il est possible que votre compte soit verrouillé. Le moyen le plus rapide de le savoir est de consulter le hash du mot de passe de votre utilisateur :
sudo grep myuser /etc/shadow
Si le hash contient un !, votre compte est verrouillé :
myuser:!:16280:7:60:7:::
La bonne façon de résoudre ce problème est de déverrouiller le compte (passwd -u myuser). Si l'utilisateur n'a pas de mot de passe, vous pouvez le déverrouiller via :
usermod -p "*" myuser
Alternativement, si vous avez l'intention d'utiliser PAM, vous l'avez activé via use_pam = true. PAM permettra aux utilisateurs verrouillés d'entrer avec des clés.
Pourquoi mon application ne se connecte-t-elle plus via SSH ?
Consultez toujours d'abord les fichiers journaux et, si possible, examinez la négociation entre le client et le serveur qui s'effectue lors de la connexion.
Nous avons constaté certains problèmes dans des applications (basées sur python et ruby) dus à leur utilisation d'un ensemble cryptographique obsolète. Cela entre en conflit avec ce module de durcissement, qui a réduit la liste des chiffrements, des codes d'authentification de message (MAC) et des algorithmes d'échange de clés (KEX) à une sélection plus sécurisée.
Si vous constatez que cela ne suffit pas, n'hésitez pas à activer cbc_required pour les chiffrements, weak_hmac pour les MAC et weak_kex pour les KEX.
Sous licence Apache License, Version 2.0 (la « Licence ») ; vous ne pouvez utiliser ce fichier qu'en conformité avec la Licence. Vous pouvez obtenir une copie de la Licence à l'adresse
http://www.apache.org/licenses/LICENSE-2.0
Sauf si requis par la loi applicable ou convenu par écrit, le logiciel distribué sous la Licence est distribué sur une base « EN L'ÉTAT », SANS GARANTIES NI CONDITIONS D'AUCUNE SORTE, expresses ou implicites. Voir la Licence pour le langage spécifique régissant les permissions et les limitations de la Licence.