Turgon37.ssh_server

Rôle Ansible Serveur SSH

Statut de construction Licence Rôle Ansible

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
À propos du projet

This role configure SSH server

Installer
ansible-galaxy install Turgon37.ssh_server
Licence
mit
Téléchargements
1.3k
Propriétaire
Ingénieur, Informaticien, curieux de nouvelles technologies. Passionné par le libre et l'esprit de communauté