Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
ansible-ssh-hardening — Ce rôle Ansible fournit de nombreuses configurations SSH liées à la sécurité, offrant une protection de base complète. | Kitploit
Outils/GitHubGitHub/dev-sec/ansible-ssh-hardening
Sécurité de l'Infrastructure CloudAudit de ConfigurationSécurité RéseauDevSecOpsAuthentificationArchived
GitHubdev-sec/ansible-ssh-hardening

ansible-ssh-hardening

Ce rôle Ansible fournit de nombreuses configurations SSH liées à la sécurité, offrant une protection de base complète.

Voir le dépôt
786190il y a 5 ansVérifié par Kitploit
Site web

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

ssh-hardening (rôle Ansible)

Attention : Ce rôle a été migré vers notre collection de durcissement :

  • https://github.com/dev-sec/ansible-os-hardening/
  • https://galaxy.ansible.com/devsec/hardening

Veuillez ouvrir tous les problèmes et demandes de tirage (pull requests) là-bas !

Exigences

  • Ansible > 2.5

Variables du rôle

  • network_ipv6_enable
    • Défaut : false
    • Description : true si IPv6 est nécessaire. ssh_listen_to doit également être défini pour écouter sur les adresses IPv6 (par exemple [::]).
  • ssh_server_ports
    • Défaut : ['22']
    • Description : ports sur lesquels le serveur ssh doit écouter
  • ssh_client_port
  • Défaut : '22'
  • Description : port auquel le client ssh doit se connecter
  • ssh_listen_to
    • Défaut : ['0.0.0.0']
    • Description : une ou plusieurs adresses IP, sur lesquelles le serveur ssh doit écouter. Par défaut, toutes les adresses IPv4, mais doit être configuré sur des adresses spécifiques pour des raisons de sécurité !
  • ssh_host_key_files
    • Défaut : []
    • Description : clés d'hôte pour sshd. Si vide, ['/etc/ssh/ssh_host_rsa_key', '/etc/ssh/ssh_host_ecdsa_key', '/etc/ssh/ssh_host_ed25519_key'] seront utilisées, dans la mesure où la version installée de sshd les prend en charge
  • ssh_host_key_algorithms
    • Défaut : []
    • Description : algorithmes de clés d'hôte que le serveur propose. Si vide, la liste par défaut sera utilisée, sinon remplace le paramètre par la liste d'algorithmes spécifiée
  • ssh_client_alive_interval
    • Défaut : 600
    • Description : spécifie un intervalle pour l'envoi de messages keepalive
  • ssh_client_alive_count
    • Défaut : 3
    • Description : définit la fréquence d'envoi des messages keep-alive
  • ssh_permit_tunnel
    • Défaut : false
    • Description : true si le tunneling de ports SSH est requis
  • ssh_remote_hosts
    • Défaut : []
    • Description : un ou plusieurs hôtes et leurs options personnalisées pour le client ssh. Par défaut, vide. Voir les exemples dans defaults/main.yml.
  • ssh_permit_root_login
    • Défaut : no
    • Description : désactive la connexion root. Définir sur without-password ou yes pour activer la connexion root
  • ssh_allow_tcp_forwarding
    • Défaut : no
    • Description : 'no' pour désactiver le transfert TCP. Définir sur 'yes' pour autoriser le transfert TCP. Si vous utilisez OpenSSH >= 6.2, vous pouvez spécifier 'yes', 'no', 'all' ou 'local'.
      Remarque : les valeurs passées à cette variable doivent être des chaînes de caractères, donc les valeurs 'yes' et 'no' doivent être passées entre guillemets.
  • ssh_gateway_ports
    • Défaut : false
    • Description : false pour désactiver la liaison des ports transférés aux adresses non-loopback. Définir sur true pour forcer la liaison sur l'adresse wildcard. Définir sur clientspecified pour permettre au client de spécifier l'adresse à laquelle se lier.
  • ssh_allow_agent_forwarding
    • Défaut : false
    • Description : false pour désactiver le transfert d'agent. Définir sur true pour autoriser le transfert d'agent.
  • ssh_x11_forwarding
    • Défaut : false
    • Description : false pour désactiver le transfert X11. Définir sur true pour autoriser le transfert X11.
  • ssh_pam_support
    • Défaut : true
    • Description : true si SSH prend en charge PAM.
  • ssh_use_pam
    • Défaut : true
    • Description : false pour désactiver l'authentification pam.
  • ssh_gssapi_support
    • Défaut : false
    • Description : true si SSH prend en charge GSSAPI.
  • ssh_kerberos_support
    • Défaut : true
    • Description : true si SSH prend en charge Kerberos.
  • ssh_deny_users
    • Défaut : ''
    • Description : si spécifié, la connexion est interdite pour les noms d'utilisateur qui correspondent à l'un des modèles.
  • ssh_allow_users
    • Défaut : ''
    • Description : si spécifié, la connexion n'est autorisée que pour les noms d'utilisateur qui correspondent à l'un des modèles.
  • ssh_deny_groups
    • Défaut : ''
    • Description : si spécifié, la connexion est interdite pour les utilisateurs dont le groupe principal ou la liste de groupes supplémentaires correspond à l'un des modèles.
  • ssh_allow_groups
    • Défaut : ''
    • Description : si spécifié, la connexion n'est autorisée que pour les utilisateurs dont le groupe principal ou la liste de groupes supplémentaires correspond à l'un des modèles.
  • ssh_authorized_keys_file
    • Défaut : ''
    • Description : modifie le fichier par défaut contenant les clés publiques pouvant être utilisées pour l'authentification des utilisateurs.
  • ssh_trusted_user_ca_keys_file
    • Défaut : ''
    • Description : spécifie le fichier contenant les clés publiques des autorités de certification de confiance utilisées pour signer les certificats utilisateur.
  • ssh_trusted_user_ca_keys
    • Défaut : []
    • Description : définit les clés publiques des autorités de certification de confiance utilisées pour signer les certificats utilisateur. Uniquement utilisé si ssh_trusted_user_ca_keys_file est défini.
  • ssh_authorized_principals_file
    • Défaut : ''
    • Description : spécifie le fichier contenant les principaux autorisés. Uniquement utilisé si ssh_trusted_user_ca_keys_file est défini.
  • ssh_authorized_principals
    • Défaut : []
    • Description : liste de hachages contenant les chemins de fichiers et les principaux autorisés, voir default_custom.yml pour toutes les options. Uniquement utilisé si ssh_authorized_principals_file est défini.
  • ssh_print_motd
    • Défaut : false
    • Description : false pour désactiver l'affichage du MOTD
  • ssh_print_pam_motd
    • Défaut : false
    • Description : false pour désactiver l'affichage du MOTD via pam (Debian et Ubuntu)
  • ssh_print_last_log
    • Défaut : false
    • Description : false pour désactiver l'affichage des informations de dernière connexion
  • sftp_enabled
    • Défaut : false
    • Description : true pour activer la configuration sftp
  • sftp_umask
    • Défaut : '0027'
    • Description : spécifie l'umask pour sftp
  • sftp_chroot
    • Défaut : true
    • Description : false pour désactiver le chroot pour sftp
  • sftp_chroot_dir
    • Défaut : /home/%u
    • Description : modifie l'emplacement par défaut du chroot sftp
  • ssh_client_roaming
    • Défaut : false
    • Description : active le roaming expérimental du client
  • sshd_moduli_file
    • Défaut : '/etc/ssh/moduli'
    • Description : chemin vers le fichier de moduli SSH
  • sshd_moduli_minimum
    • Défaut : 2048
    • Description : supprime les paramètres Diffie-Hellman plus petits que la taille définie pour atténuer logjam
  • ssh_challengeresponseauthentication
    • Défaut : false
    • Description : spécifie si l'authentification par défi-réponse est autorisée (par exemple via PAM)
  • ssh_client_password_login
    • Défaut : false
    • Description : true pour autoriser l'authentification par mot de passe avec le client ssh
  • ssh_server_password_login
    • Défaut : false
    • Description : true pour autoriser l'authentification par mot de passe avec le serveur ssh
  • ssh_banner
    • Défaut : false
    • Description : true pour afficher une bannière à la connexion
  • ssh_banner_path
    • Défaut : '/etc/sshd/banner.txt'
    • Description : chemin vers le fichier de bannière SSH
  • ssh_client_hardening
    • Défaut : true
    • Description : false pour arrêter le durcissement du client
  • ssh_client_port
    • Défaut : '22'
    • Description : spécifie le numéro de port pour se connecter à l'hôte distant.
  • ssh_client_compression
    • Défaut : false
    • Description : spécifie si le client demande la compression.
  • ssh_compression
    • Défaut : false
    • Description : spécifie si la compression côté serveur est activée après que l'utilisateur s'est authentifié avec succès.
  • ssh_login_grace_time
    • Défaut : 30s
    • Description : spécifie le temps autorisé pour une authentification réussie au serveur SSH
  • ssh_max_auth_retries
    • Défaut : 2
    • Description : spécifie le nombre maximal de tentatives d'authentification autorisées par connexion.
  • ssh_max_sessions
    • Défaut : 10
    • Description : spécifie le nombre maximal de sessions ouvertes autorisées pour une connexion donnée.
  • ssh_print_debian_banner
    • Défaut : false
    • Description : true pour afficher la bannière spécifique à Debian
  • ssh_server_enabled
    • Défaut : true
    • Description : false pour désactiver le serveur opensshd
  • ssh_server_hardening
    • Défaut : true
    • Description : false pour arrêter le durcissement du serveur
  • ssh_server_match_address
    • Défaut : ''
    • Description : introduit un bloc conditionnel. Si tous les critères de la ligne Match sont satisfaits, les mots-clés des lignes suivantes remplacent ceux définis dans la section globale du fichier de configuration, jusqu'à une autre ligne Match ou la fin du fichier.
  • ssh_server_match_group
    • Défaut : ''
    • Description : introduit un bloc conditionnel. Si tous les critères de la ligne Match sont satisfaits, les mots-clés des lignes suivantes remplacent ceux définis dans la section globale du fichier de configuration, jusqu'à une autre ligne Match ou la fin du fichier.
  • ssh_server_match_user
    • Défaut : ''
    • Description : introduit un bloc conditionnel. Si tous les critères de la ligne Match sont satisfaits, les mots-clés des lignes suivantes remplacent ceux définis dans la section globale du fichier de configuration, jusqu'à une autre ligne Match ou la fin du fichier.
  • ssh_server_match_local_port
    • Défaut : ''
    • Description : introduit un bloc conditionnel. Si tous les critères de la ligne Match sont satisfaits, les mots-clés des lignes suivantes remplacent ceux définis dans la section globale du fichier de configuration, jusqu'à une autre ligne Match ou la fin du fichier.
  • ssh_server_permit_environment_vars
    • Défaut : no
    • Description : yes pour spécifier que ~/.ssh/environment et les options environment= dans ~/.ssh/authorized_keys sont traités par sshd. Avec la version 7.8 d'openssh, il est possible de spécifier une liste blanche de noms de variables d'environnement en plus des paramètres globaux "yes" ou "no"
  • ssh_server_accept_env_vars
    • Défaut : ''
    • Description : spécifie quelles variables d'environnement envoyées par le client seront copiées dans l'environnement de la session ; plusieurs variables d'environnement peuvent être séparées par des espaces
  • ssh_use_dns
    • Défaut : false
    • Description : spécifie si sshd doit rechercher le nom d'hôte distant et vérifier que le nom d'hôte résolu pour l'adresse IP distante correspond à la même adresse IP.
  • ssh_server_revoked_keys
    • Défaut : []
    • Description : une liste de clés publiques révoquées que le serveur ssh rejettera toujours, utile pour révoquer des clés connues comme faibles ou compromises.
  • ssh_max_startups
    • Défaut : '10:30:100'
    • Description : spécifie le nombre maximal de connexions non authentifiées simultanées au démon SSH.
  • ssh_macs
    • Défaut : []
    • Description : modifiez cette liste pour remplacer les macs. Les valeurs par défaut se trouvent dans defaults/main.yml
  • ssh_kex
    • Défaut : []
    • Description : modifiez cette liste pour remplacer les kexs. Les valeurs par défaut se trouvent dans defaults/main.yml
  • ssh_ciphers
    • Défaut : []
    • Description : modifiez cette liste pour remplacer les chiffrements. Les valeurs par défaut se trouvent dans defaults/main.yml
  • ssh_custom_options
    • Défaut : []
    • Description : lignes personnalisées pour la configuration du client SSH
  • sshd_custom_options
    • Défaut : []
    • Description : lignes personnalisées pour la configuration du démon SSH
  • sshd_syslog_facility
    • Défaut : 'AUTH'
    • Description : le code de facility utilisé lors de la journalisation des messages de sshd
  • sshd_log_level
    • Défaut : 'VERBOSE'
    • Description : le niveau de verbosité utilisé lors de la journalisation des messages de sshd
  • sshd_strict_modes
    • Défaut : true
    • Description : vérifie les modes de fichiers et la propriété des fichiers et du répertoire personnel de l'utilisateur avant d'accepter la connexion
  • sshd_authenticationmethods
    • Défaut : publickey
    • Description : spécifie les méthodes d'authentification qui doivent être complétées avec succès pour qu'un utilisateur obtienne l'accès. Assurez-vous de définir toutes les variables requises pour votre méthode d'authentification sélectionnée. Les valeurs par défaut se trouvent dans defaults/main.yml
  • Configuration des paramètres non répertoriés dans les variables du rôle

    Si vous souhaitez configurer des options ssh non répertoriées ci-dessus, vous pouvez utiliser ssh_custom_options (pour /etc/ssh/ssh_config) ou sshd_custom_options (pour /etc/ssh/sshd_config) pour les définir. Ces options seront définies au début du fichier afin que vous puissiez remplacer les options plus bas dans le fichier.

    Exemple de playbook :

    root@kitploit:~
    - hosts: localhost
      roles:
        - dev-sec.ssh-hardening
      vars:
        ssh_custom_options:
          - "Include /etc/ssh/ssh_config.d/*"
        sshd_custom_options:
          - "AcceptEnv LANG"
    

    Modification du port par défaut et idempotence

    Ce rôle utilise le port par défaut 22 ou le port configuré dans l'inventaire pour se connecter au serveur. Si le port ssh par défaut est modifié via ssh_server_ports, une fois le serveur ssh redémarré, il tentera toujours de se connecter en utilisant le port précédent. Pour exécuter ce rôle à nouveau sur le même serveur, l'inventaire devra être mis à jour pour utiliser le nouveau port ssh.

    Si l'idempotence est importante, veuillez envisager d'utiliser le rôle ssh-hardening-fallback, qui est un wrapper autour de ce rôle et qui revient au port 22 si le port configuré est inaccessible.

    Exemple de playbook

    root@kitploit:~
    - hosts: localhost
      roles:
        - dev-sec.ssh-hardening
    

    Tests locaux

    La méthode privilégiée pour tester localement le rôle est d'utiliser Docker. Vous devrez installer Docker sur votre système. Voir Commencer pour un package Docker adapté à votre système.

    Vous pouvez également utiliser vagrant et Virtualbox ou VMWare pour exécuter des tests localement. Vous devrez installer Virtualbox et Vagrant sur votre système. Voir Téléchargements Vagrant pour un package 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 :

    root@kitploit:~
    # Installer les dépendances
    gem install bundler
    bundle install
    

    Tests avec Docker

    root@kitploit:~
    # test rapide sur une machine
    bundle exec kitchen test ssh-ubuntu1804-ansible-latest
    
    # test sur toutes les machines
    bundle exec kitchen test
    
    # pour le développement
    bundle exec kitchen create ssh-ubuntu1804-ansible-latest
    bundle exec kitchen converge ssh-ubuntu1804-ansible-latest
    bundle exec kitchen verify ssh-ubuntu1804-ansible-latest
    
    # nettoyage
    bundle exec kitchen destroy ssh-ubuntu1804-ansible-latest
    

    Tests avec Virtualbox

    root@kitploit:~
    # test rapide sur une machine
    KITCHEN_YAML=".kitchen.vagrant.yml" bundle exec kitchen test ssh-ubuntu-1804
    
    # test sur toutes les machines
    KITCHEN_YAML=".kitchen.vagrant.yml" bundle exec kitchen test
    
    # pour le développement
    KITCHEN_YAML=".kitchen.vagrant.yml" bundle exec kitchen create ssh-ubuntu-1804
    KITCHEN_YAML=".kitchen.vagrant.yml" bundle exec kitchen converge ssh-ubuntu-1804
    

    Pour plus d'informations, voir test-kitchen

    FAQ / Pièges

    Je ne peux pas me connecter à mon compte. J'ai enregistré la clé client, mais elle 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 hachage du mot de passe de votre utilisateur :

    root@kitploit:~
    sudo grep myuser /etc/shadow
    

    Si le hachage contient un !, votre compte est verrouillé :

    root@kitploit:~
    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 :

    root@kitploit:~
    usermod -p "*" myuser
    

    Alternativement, si vous avez l'intention d'utiliser PAM, vous l'avez activé via ssh_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 ?

    Regardez toujours d'abord les fichiers journaux et, si possible, la négociation entre le client et le serveur qui est effectuée 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 collision 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.

    Après avoir utilisé le rôle, le module template/copy/file d'Ansible ne fonctionne plus !

    Ce rôle désactive par défaut SFTP. Ansible utilise par défaut SFTP pour transférer les fichiers vers les hôtes distants. Vous devez définir scp_if_ssh = True dans votre ansible.cfg. Ainsi, Ansible utilisera SCP pour copier les fichiers. Alternativement, vous pouvez réactiver SFTP en définissant sftp_enabled sur true.

    Impossible de redémarrer le service sshd en raison d'un manque de privilèges

    Si vous obtenez l'erreur suivante lors de l'exécution du handler "restart sshd"

    root@kitploit:~
    Unable to restart service ssh: Failed to restart ssh.service: Access denied
    

    ou

    root@kitploit:~
    failure 1 running systemctl show for 'ssh': Failed to connect to bus: No such file or directory
    

    exécutez le playbook en tant que root (sans become: yes au niveau du playbook), ou ajoutez become: yes au handler.

    Il s'agit d'un bug avec Ansible : voir ici et ici pour plus d'informations.

    Contribution

    Voir les directives pour les contributeurs.

    Licence et auteur

    • Auteur :: Sebastian Gumprich
    • Auteur :: Christoph Hartmann [email protected]

    Sous licence Apache License, Version 2.0 (la "Licence") ; vous ne pouvez pas utiliser ce fichier sauf en conformité avec la Licence. Vous pouvez obtenir une copie de la Licence à l'adresse

    root@kitploit:~
    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 OU 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.

    Télécharger l’outil