skriptfabrik.sshd
Ansible Rôle : sshd
Description
Ce rôle fournit des configurations sécurisées pour le client et le serveur SSH. Il vise à être conforme avec le DevSec SSH Baseline.
Ce rôle est un fork de arillso.sshd.
Installation
ansible-galaxy collection install community.crypto
ansible-galaxy install skriptfabrik.sshd
Exigences
Aucune
Variables du Rôle
ssh_ipv6_enable
true si l'IPv6 est nécessaire
ssh_ipv6_enable: '{{ network_ipv6_enable | default(false) }}' # sshd + ssh
ssh_server_enabled
true si sshd doit être démarré et activé
ssh_server_enabled: true # sshd
ssh_use_dns
true si les résolutions DNS sont nécessaires, vérifiez le nom d'hôte distant, par défaut à faux depuis la version 6.8, voir : http://www.openssh.com/txt/release-6.8
ssh_use_dns: false # sshd
ssh_compression
true ou valeur si la compression est nécessaire
ssh_compression: false # sshd
ssh_hardening
Pour quels composants (client et serveur) générer la configuration. Peut être utile lors de l'exécution contre un client sans serveur SSH.
ssh_client_hardening: true # ssh
ssh_server_hardening: true # sshd
ssh_client_password_login
Si vrai, la connexion par mot de passe est autorisée
ssh_client_password_login: false # ssh
ssh_server_password_login: false # sshd
ssh_server_ports
ports sur lesquels le serveur SSH doit écouter
ssh_server_ports: ['22'] # sshd
ssh_client_port
port auquel le client SSH doit se connecter
ssh_client_port: '22' # ssh
ssh_listen_to
une ou plusieurs adresses IP, auxquelles le serveur SSH doit écouter. Par défaut, c'est vide, mais doit être configuré pour des raisons de sécurité !
ssh_listen_to: ['0.0.0.0'] # sshd
ssh_host_key_files
Clés d'hôte à rechercher lors du démarrage de sshd.
ssh_host_key_files: [] # sshd
# - path: "{{ sshd_config_path }}/ssh_host_rsa_key"
# private_key: |
# xxxxxxxxxxxxx
# xxxxxxxxxxxxx
# xxxxxxxxxxxxx
# public_key: |
# xxxxxxxxxxxxx
# xxxxxxxxxxxxx
# xxxxxxxxxxxxx
# size: 8192
# type: rsa
ssh_force_create_host_key_files
Forcer la création des fichiers de clés d'hôte.
ssh_force_create_host_key_files: false # sshd
ssh_max_auth_retries
Spécifie le nombre maximum de tentatives d'authentification autorisées par connexion. Une fois que le nombre de pannes atteint la moitié de cette valeur, des échecs supplémentaires sont signalés.
ssh_max_auth_retries: 2
ssh_client_alive_interval
ssh_client_alive_interval: 300 # sshd
ssh_client_alive_count
ssh_client_alive_count: 3 # sshd
ssh_permit_tunnel
Autoriser les tunnels SSH
ssh_permit_tunnel: false
ssh_remote_hosts
Hôtes avec options personnalisées. # ssh
ssh_remote_hosts: []
Exemple
ssh_remote_hosts:
- names: ['example.com', 'example2.com']
options: ['Port 2222', 'ForwardAgent yes']
- names: ['example3.com']
options: ['StrictHostKeyChecking no']
ssh_allow_root_with_key
Définissez ceci sur "sans-mot de passe" ou "oui" pour autoriser root à se connecter
ssh_allow_root_with_key: 'no' # sshd
ssh_allow_tcp_forwarding
false pour désactiver le transfert TCP. Définir sur vrai pour autoriser le transfert TCP.
ssh_allow_tcp_forwarding: false # sshd
ssh_gateway_ports
false pour désactiver le liaison de ports redirigés à des adresses non bouclantes. Définir sur vrai pour forcer la liaison sur l'adresse générique.
Définir sur 'clientspecified' pour permettre au client de spécifier quelle adresse lier.
ssh_gateway_ports: false # sshd
ssh_allow_agent_forwarding
false pour désactiver le transfert d'agent. Définir sur vrai pour permettre le transfert d'agent.
ssh_allow_agent_forwarding: false # sshd
ssh_pam_support
true si SSH a un support PAM
ssh_pam_support: true
ssh_use_pam
false pour désactiver l'authentification pam.
ssh_use_pam: false # sshd
ssh_google_auth
false pour désactiver l'authentification google 2fa
ssh_google_auth: false # sshd
ssh_pam_device
false pour désactiver l'entrée de 2FA pam device
ssh_pam_device: false # sshd
ssh_gssapi_support
true si SSH supporte GSSAPI
ssh_gssapi_support: false
ssh_kerberos_support
true si SSH supporte Kerberos
ssh_kerberos_support: true
ssh_deny_users
si spécifié, la connexion est interdite pour les noms d'utilisateur qui correspondent à l'un des motifs.
ssh_deny_users: '' # sshd
ssh_allow_users
si spécifié, la connexion est autorisée uniquement pour les noms d'utilisateur qui correspondent à l'un des motifs.
ssh_allow_users: '' # sshd
ssh_deny_groups
si spécifié, la connexion est interdite pour les utilisateurs dont le groupe principal ou la liste des groupes complémentaires correspond à l'un des motifs.
ssh_deny_groups: '' # sshd
ssh_allow_groups
si spécifié, la connexion est autorisée uniquement pour les utilisateurs dont le groupe principal ou la liste des groupes complémentaires correspond à l'un des motifs.
ssh_allow_groups: '' # sshd
ssh_authorized_keys_file
changez le fichier par défaut qui contient les clés publiques pouvant être utilisées pour l'authentification des utilisateurs.
ssh_authorized_keys_file: '' # sshd
ssh_trusted_user_ca_keys_file
spécifie le fichier contenant les clés publiques des autorités de certification de confiance utilisées pour signer les certificats utilisateurs.
ssh_trusted_user_ca_keys_file: '' # sshd
ssh_trusted_user_ca_keys
définissez les clés publiques des autorités de certification de confiance utilisées pour signer les certificats utilisateurs.
ssh_trusted_user_ca_keys: [] # sshd
Exemple
ssh_trusted_user_ca_keys:
- 'ssh-rsa ... commentaire1'
- 'ssh-rsa ... commentaire2'
ssh_authorized_principals_file
spécifie le fichier contenant les principes qui sont autorisés. Utilisé uniquement si ssh_trusted_user_ca_keys_file est défini.
ssh_authorized_principals_file: '' # sshd
Exemple
ssh_authorized_principals_file: '/etc/ssh/auth_principals/%u'
%h est remplacé par le répertoire personnel de l'utilisateur authentifié, et %u est remplacé par le nom d'utilisateur de cet utilisateur. Après expansion, le chemin est considéré comme un chemin absolu ou relatif au répertoire personnel de l'utilisateur.
ssh_authorized_principals
liste de hashes contenant des chemins de fichiers et des principes autorisés. Utilisé uniquement si ssh_authorized_principals_file est défini.
ssh_authorized_principals: [] # sshd
Exemple
ssh_authorized_principals:
- {
path: '/etc/ssh/auth_principals/root',
principals: ['root'],
owner: '{{ ssh_owner }}',
group: '{{ ssh_group }}',
directoryowner: '{{ ssh_owner }}',
directorygroup: '{{ ssh_group}}',
}
- {
path: '/etc/ssh/auth_principals/myuser',
principals: ['masteradmin', 'webserver'],
}
ssh_print_motd
false pour désactiver l'impression du MOTD
ssh_print_motd: false # sshd
ssh_print_last_log
false pour désactiver l'affichage des dernières informations de connexion
ssh_print_last_log: false # sshd
ssh_banner
false pour désactiver le service de /etc/ssh/banner.txt avant que l'authentification ne soit autorisée
ssh_banner: false # sshd
ssh_print_debian_banner
false pour désactiver la fuite de la version de distribution pendant la première poignée de protocoles
ssh_print_debian_banner: false # sshd (uniquement pour la famille Debian OS)
ssh_sftp_enabled
true pour activer la configuration sftp
ssh_sftp_enabled: '{{ sftp_enabled | default(false) }}'
ssh_sftp_chroot
false pour désactiver sftp chroot
ssh_sftp_chroot: '{{ sftp_chroot | default(true) }}'
ssh_sftp_chroot_dir
changer l'emplacement par défaut du chroot sftp
ssh_sftp_chroot_dir: "{{ sftp_chroot_dir | default('/home/%u') }}"
Si vrai, la connexion par mot de passe pour SFTP est autorisée
ssh_server_sftp_password_login: false
ssh_server_sftp_password_login: true
ssh_client_roaming
activer le roaming client expérimental
ssh_client_roaming: false
ssh_server_match_user
liste de hashes (contenant utilisateur et règles) pour générer des blocs Match User.
ssh_server_match_user: false # sshd
ssh_server_match_group
liste de hashes (contenant groupe et règles) pour générer des blocs Match Group.
ssh_server_match_group: false # sshd
ssh_server_match_address
liste de hashes (contenant adresses/sous-réseaux et règles) pour générer des blocs Match Address.
ssh_server_match_address: false # sshd
ssh_server_permit_environment_vars
ssh_server_permit_environment_vars: false
ssh_max_startups
nombre maximum de connexions non authentifiées concurrentes au démon SSH
ssh_max_startups: '10:30:100' # sshd
ssh_ps53
ssh_ps53: 'oui'
ssh_ps59
ssh_ps59: 'sandbox'
ssh_macs
ssh_macs: []
ssh_ciphers
ssh_ciphers: []
ssh_kex
ssh_kex: []
ssh_macs_53_default
ssh_macs_53_default:
- hmac-ripemd160
- hmac-sha1
ssh_macs_59_default
ssh_macs_59_default:
- hmac-sha2-512
- hmac-sha2-256
- hmac-ripemd160
ssh_macs_66_default
ssh_macs_66_default:
- [email protected]
- [email protected]
- [email protected]
- hmac-sha2-512
- hmac-sha2-256
ssh_macs_76_default
ssh_macs_76_default:
- [email protected]
- [email protected]
- [email protected]
- hmac-sha2-512
- hmac-sha2-256
ssh_ciphers_53_default
ssh_ciphers_53_default:
- aes256-ctr
- aes192-ctr
- aes128-ctr
ssh_ciphers_66_default
ssh_ciphers_66_default:
- [email protected]
- [email protected]
- [email protected]
- aes256-ctr
- aes192-ctr
- aes128-ctr
ssh_kex_59_default
ssh_kex_59_default:
- diffie-hellman-group-exchange-sha256
ssh_kex_66_default
ssh_kex_66_default:
- [email protected]
- diffie-hellman-group-exchange-sha256
ssh_custom_selinux_dir
répertoire où stocker la politique ssh_password
ssh_custom_selinux_dir: '/etc/selinux/local-policies'
sshd_moduli_file: '/etc/ssh/moduli'
sshd_moduli_minimum: 2048
ssh_challengeresponseauthentication
désactiver ChallengeResponseAuthentication
ssh_challengeresponseauthentication: false
ssh_server_revoked_keys
une liste de clés publiques qui ne sont jamais acceptées par le serveur ssh
ssh_server_revoked_keys: []
ssh_hardening_enabled
Définir sur false pour transformer le rôle en no-op. Utile lors de l'utilisation du mécanisme de dépendance de rôle Ansible.
ssh_hardening_enabled: true
ssh_custom_options
Options personnalisées pour le fichier de configuration du client SSH
ssh_custom_options: []
sshd_custom_options
Options personnalisées pour le fichier de configuration du démon SSH
sshd_custom_options: []
Dépendances
Aucune
Exemple de Playbook
- hosts: all
roles:
- skriptfabrik.sshd
Auteur
Licence
Ce projet est sous la Licence MIT.
Droits d'auteur
(c) 2022, skriptfabrik GmbH
This role provides secure ssh-client and ssh-server configurations. It is intended to be compliant with the DevSec SSH Baseline.
ansible-galaxy install skriptfabrik.sshd