Turgon37.ssh_server
Rôle Ansible Serveur SSH
Description
:grey_exclamation: Avant d'utiliser ce rôle, sachez que tous mes rôles Ansible sont entièrement écrits et adaptés à mon infrastructure informatique. Même s'ils sont aussi génériques que possible, ils ne répondront pas forcément à vos besoins. Je vous conseille de bien analyser ce qu'ils font et d'évaluer leur capacité à être installés en toute sécurité sur vos serveurs.
Ce rôle permet de configurer un serveur SSH.
Exigences
Nécessite Ansible >= 2.4
Dépendances
Famille d'OS
Ce rôle est disponible pour Debian et CentOS
Fonctionnalités
À ce jour, le rôle peut être utilisé pour :
- installer sshd
- configurer sshd
- filtrer les moduli initiaux pour supprimer les faibles nombres premiers
- faits locaux
Variables du rôle
Toutes les variables qui peuvent être remplacées sont stockées dans le fichier defaults/main.yml ainsi que dans le tableau ci-dessous. Pour voir les valeurs par défaut, veuillez vous référer à ce fichier.
La plupart des variables concernent les paramètres de configuration de sshd. Veuillez vous référer à la page de manuel pour plus d'informations.
Nom | Types/Valeurs | Description |
---|---|---|
ssh_server__facts |
Boolean | Installer le script de fait local |
ssh_server__moduli_minimum |
Integer | La taille minimale des nombres premiers à garder dans le fichier moduli |
ssh_server__service_enabled |
Boolean | Activer ou non le service |
ssh_server__protocol |
String | Voir la page de manuel |
ssh_server__privilege_separation |
String | Voir la page de manuel |
ssh_server__pidfile |
String | Voir la page de manuel |
ssh_server__log_facility |
String | Voir la page de manuel |
ssh_server__log_level |
String | Voir la page de manuel |
ssh_server__ports |
Liste d'entiers | Voir la page de manuel |
ssh_server__listen |
Liste d'IP | Voir la page de manuel |
ssh_server__address_family |
String | Voir la page de manuel |
ssh_server__use_dns |
Boolean | Voir la page de manuel |
ssh_server__tcp_keepalive |
Boolean | Voir la page de manuel |
ssh_server__allow_agent_forwarding |
Boolean | Voir la page de manuel |
ssh_server__allow_tcp_forwarding |
Boolean | Voir la page de manuel |
ssh_server__permit_open |
String | Voir la page de manuel |
ssh_server__gateway_ports |
String | Voir la page de manuel |
ssh_server__allow_stream_local_forwarding |
Boolean | Voir la page de manuel |
ssh_server__permit_tunnel |
Boolean | Voir la page de manuel |
ssh_server__compression |
String | Voir la page de manuel |
ssh_server__ip_qos |
Tuple | Voir la page de manuel |
ssh_server__kex_algorithms |
Liste de chaînes | Voir la page de manuel |
ssh_server__kex_algorithms_additional |
Liste de chaînes | Voir la page de manuel |
ssh_server__ciphers |
Liste de chaînes | Voir la page de manuel |
ssh_server__ciphers_additional |
Liste de chaînes | Voir la page de manuel |
ssh_server__macs |
Liste de chaînes | Voir la page de manuel |
ssh_server__macs_additional |
Liste de chaînes | Voir la page de manuel |
ssh_server__server_key_bits |
Integer | Voir la page de manuel |
ssh_server__key_regeneration_interval |
Integer | Voir la page de manuel |
ssh_server__authentication_methods |
String | Voir la page de manuel |
ssh_server__use_pam |
Boolean | Voir la page de manuel |
ssh_server__use_login |
Boolean | Voir la page de manuel |
ssh_server__password_authentication |
Boolean | Voir la page de manuel |
ssh_server__permit_empty_passwords |
Boolean | Voir la page de manuel |
ssh_server__challenge_response_authentication |
Boolean | Voir la page de manuel |
ssh_server__keyboard_interactive_authentication |
Boolean | Voir la page de manuel |
ssh_server__pubkey_authentication |
Boolean | Voir la page de manuel |
ssh_server__authorized_keys |
Liste de chaînes | Voir la page de manuel AuthorizedKeysFile |
ssh_server__authorized_keys_system |
Liste de chaînes | Contient le chemin vers le fichier de clés autorisé système |
ssh_server__authorized_keys_user |
String | Contient le chemin vers le fichier de clés autorisé par utilisateur |
ssh_server__authorized_keys_command |
String | Voir la page de manuel |
ssh_server__authorized_keys_command_user |
Liste de chaînes | Voir la page de manuel |
ssh_server__permit_blacklisted_keys |
Voir la page de manuel | |
ssh_server__rsa_authentication |
Boolean | Voir la page de manuel |
ssh_server__rhosts_rsa_authentication |
Boolean | Voir la page de manuel |
ssh_server__host_based_authentication |
Boolean | Voir la page de manuel |
ssh_server__host_based_uses_name_from_packet_only |
Boolean | Voir la page de manuel |
ssh_server__ignore_user_known_hosts |
Boolean | Voir la page de manuel |
ssh_server__ignore_rhosts |
Boolean | Voir la page de manuel |
ssh_server__kerberos_authentication |
Boolean | Voir la page de manuel |
ssh_server__kerberos_get_afs_token |
Boolean | Voir la page de manuel |
ssh_server__kerberos_or_local_passwd |
Boolean | Voir la page de manuel |
ssh_server__kerberos_ticket_cleanup |
Boolean | Voir la page de manuel |
ssh_server__kerberos_use_kuserok |
Boolean | Voir la page de manuel |
ssh_server__gssapi_authentication |
Boolean | Voir la page de manuel |
ssh_server__gssapi_key_exchange |
Boolean | Voir la page de manuel |
ssh_server__gssapi_cleanup_credentials |
Boolean | Voir la page de manuel |
ssh_server__gssapi_strict_acceptor_check |
Boolean | Voir la page de manuel |
ssh_server__gssapi_store_credentials_on_rekey |
Boolean | Voir la page de manuel |
ssh_server__gssapi_enable_k5_users |
Boolean | Voir la page de manuel |
ssh_server__deny_users |
Liste de chaînes | Voir la page de manuel |
ssh_server__allow_users |
Liste de chaînes | Voir la page de manuel |
ssh_server__deny_groups |
Liste de chaînes | Voir la page de manuel |
ssh_server__allow_groups |
Liste de chaînes | Voir la page de manuel |
ssh_server__permit_root_login |
String | Voir la page de manuel |
ssh_server__login_grace_time |
String | Voir la page de manuel |
ssh_server__max_auth_tries |
Integer | Voir la page de manuel |
ssh_server__max_sessions |
Integer | Voir la page de manuel |
ssh_server__max_startups |
Dictionnaire spécifique | Ce dictionnaire doit avoir les clés 'start', 'rate', 'full' (voir la page de manuel) |
ssh_server__accept_env |
Liste de chaînes | Voir la page de manuel |
ssh_server__permit_user_environment |
Boolean | Voir la page de manuel |
ssh_server__permit_user_rc |
Boolean | Voir la page de manuel |
ssh_server__permit_tty |
Boolean | Voir la page de manuel |
ssh_server__strict_modes |
Boolean | Voir la page de manuel |
ssh_server__version_addendum |
String | Voir la page de manuel |
ssh_server__banner |
String | Voir la page de manuel |
ssh_server__debian_banner |
Boolean | Voir la page de manuel |
ssh_server__print_motd |
Boolean | Voir la page de manuel |
ssh_server__print_last_log |
Boolean | Voir la page de manuel |
ssh_server__force_command |
String | Voir la page de manuel |
ssh_server__chroot_directory |
String | Voir la page de manuel |
ssh_server__client_alive_interval |
Integer | Voir la page de manuel |
ssh_server__client_alive_count_max |
Integer | Voir la page de manuel |
ssh_server__x11_forwarding |
Boolean | Voir la page de manuel |
ssh_server__x11_display_offset |
Integer | Voir la page de manuel |
ssh_server__x11_use_localhost |
Boolean | Voir la page de manuel |
ssh_server__subsystems_global/group/host |
Dictionnaire | Association du nom du sous-système et de la commande du sous-système |
ssh_server__match_list_global/group/host |
Liste de blocs de correspondance | Configurez les blocs de correspondance (voir ci-dessous) |
Correspondances
Vous pouvez configurer les correspondances disponibles en utilisant la variable ssh_server__match_list_global/group/host
.
Cette variable prend une liste de dictionnaires. Chaque dictionnaire doit avoir la forme suivante :
ssh_server__match_list_global
- match: "critères de correspondance"
options: # options qui s'appliquent si "match" correspond
- AllowUsers test # une option de chaîne simple
# un dictionnaire avec des options conditionnées par version
# selon la version actuelle de sshd, la version la plus élevée gagne et ses options sont appliquées
- 8.2: AuthorizedKeysCommand /bin/true # (version chaîne)
7.6: # (version liste)
- AuthenticationMethods publickey
- AllowUsers root
state: absent # état optionnel (par défaut présent)
Les critères de correspondance disponibles et les options que vous pouvez appliquer dépendent de votre version actuelle de sshd.
Un exemple de groupe uniquement autorisé à exécuter sftp est donné. Si vous souhaitez l'activer, vous pouvez utiliser ce bloc dans l'inventaire :
ssh_server__match_list_global:
- '{{ ssh_server__match_group_sftponly }}'
Faits
Par défaut, les faits locaux sont installés et exposent les variables suivantes :
ansible_local.ssh_server:
version_full: '7.9p1'
version_major: '7'
Exemple
Playbook
Utilisez-le dans un playbook comme suit :
- hosts: all
roles:
- turgon37.ssh_server
Inventaire
Pour utiliser ce rôle, créez ou mettez à jour votre playbook selon l'exemple suivant :
ssh_server__allow_agent_forwarding: false
ssh_server__allow_tcp_forwarding: false
ssh_server__allow_stream_local_forwarding: false
ssh_server__permit_tunnel: false
ssh_server__compression: true
ssh_server__allow_groups:
- ssh
- ssh-admins
ssh_server__permit_root_login: false
ssh_server__max_startups:
start: 5
rate: 80
full: 10
ssh_server__match_list_global:
- match: "LocalAddress 127.0.0.1"
options:
- AuthenticationMethods publickey,password
state: present
- match: "LocalAddress 10.0.0.1 Group ssh-admins"
options:
- AuthenticationMethods publickey password gssapi-with-mic
- match: "LocalAddress 10.0.0.1 User root"
options:
- DenyUsers
- AllowUsers root
- DenyGroups
- AllowGroups root
- 7.0: 'PermitRootLogin prohibit-password'
4.9: 'PermitRootLogin without-password'
- AuthenticationMethods publickey
- AuthorizedKeysFile /root/.ssh/authorized_keys
- AuthorizedKeysCommand /bin/true
ssh_client__known_hosts_additionals:
- '[gitlab]:7999 ssh-rsa XXXXX'
Exemple de configuration FreeIPA
ssh_server__authorized_keys: '/dev/null'
ssh_server__authorized_keys_lookup: true
ssh_server__authorized_keys_lookup_command: /usr/bin/sss_ssh_authorizedkeys
ssh_server__pubkey_authentication: true
ssh_server__gssapi_authentication: true
ansible-galaxy install Turgon37.ssh_server