Turgon37.ssh_server

Ansible Rolle SSH Server

Build-Status Lizenz Ansible Rolle

Beschreibung

:grey_exclamation: Bevor du diese Rolle verwendest, sei dir bewusst, dass alle meine Ansible-Rollen speziell auf meine IT-Infrastruktur zugeschnitten sind. Auch wenn sie so allgemein wie möglich sind, werden sie möglicherweise nicht alle deine Anforderungen erfüllen. Ich empfehle, diese sorgfältig zu analysieren und ihre Fähigkeit zur sicheren Installation auf deinen Servern zu bewerten.

Diese Rolle ermöglicht die Konfiguration eines SSH-Servers.

Anforderungen

Erfordert Ansible >= 2.4

Abhängigkeiten

Betriebssystem-Familie

Diese Rolle ist für Debian und CentOS verfügbar.

Funktionen

Diese Rolle kann verwendet werden, um:

  • sshd zu installieren
  • sshd zu konfigurieren
  • die initialen Moduli zu filtern, um schwache Primzahlen zu entfernen
  • Lokale Fakten

Rollenvariablen

Alle Variablen, die überschrieben werden können, sind in der Datei defaults/main.yml sowie in der folgenden Tabelle gespeichert. Für Standardwerte siehe diese Datei.

Die meisten Variablen beziehen sich auf die reinen sshd Konfigurationsparameter. Sieh dir die Informationen in der Man-Seite an.

Name Typ/Werte Beschreibung
ssh_server__facts Boolean Installiere das lokale Faktenskript
ssh_server__moduli_minimum Integer Die minimale Größe der Primzahlen, die in der Moduli-Datei behalten werden sollen
ssh_server__service_enabled Boolean Aktiviere den Dienst oder nicht
ssh_server__protocol String Siehe Man-Seite
ssh_server__privilege_separation String Siehe Man-Seite
ssh_server__pidfile String Siehe Man-Seite
ssh_server__log_facility String Siehe Man-Seite
ssh_server__log_level String Siehe Man-Seite
ssh_server__ports Liste von Integer Siehe Man-Seite
ssh_server__listen Liste von IPs Siehe Man-Seite
ssh_server__address_family String Siehe Man-Seite
ssh_server__use_dns Boolean Siehe Man-Seite
ssh_server__tcp_keepalive Boolean Siehe Man-Seite
ssh_server__allow_agent_forwarding Boolean Siehe Man-Seite
ssh_server__allow_tcp_forwarding Boolean Siehe Man-Seite
ssh_server__permit_open String Siehe Man-Seite
ssh_server__gateway_ports String Siehe Man-Seite
ssh_server__allow_stream_local_forwarding Boolean Siehe Man-Seite
ssh_server__permit_tunnel Boolean Siehe Man-Seite
ssh_server__compression String Siehe Man-Seite
ssh_server__ip_qos Tuple Siehe Man-Seite
ssh_server__kex_algorithms Liste von String Siehe Man-Seite
ssh_server__kex_algorithms_additional Liste von String Siehe Man-Seite
ssh_server__ciphers Liste von String Siehe Man-Seite
ssh_server__ciphers_additional Liste von String Siehe Man-Seite
ssh_server__macs Liste von String Siehe Man-Seite
ssh_server__macs_additional Liste von String Siehe Man-Seite
ssh_server__server_key_bits Integer Siehe Man-Seite
ssh_server__key_regeneration_interval Integer Siehe Man-Seite
ssh_server__authentication_methods String Siehe Man-Seite
ssh_server__use_pam Boolean Siehe Man-Seite
ssh_server__use_login Boolean Siehe Man-Seite
ssh_server__password_authentication Boolean Siehe Man-Seite
ssh_server__permit_empty_passwords Boolean Siehe Man-Seite
ssh_server__challenge_response_authentication Boolean Siehe Man-Seite
ssh_server__keyboard_interactive_authentication Boolean Siehe Man-Seite
ssh_server__pubkey_authentication Boolean Siehe Man-Seite
ssh_server__authorized_keys Liste von String Siehe Man-Seite AutorisierteSchlüsseldatei
ssh_server__authorized_keys_system Liste von String Enthält den Pfad zur globalen Systemauthorized_keys-Datei
ssh_server__authorized_keys_user String Enthält den Pfad zur autorisierten Schlüsseldaten-Datei für Benutzer
ssh_server__authorized_keys_command String Siehe Man-Seite
ssh_server__authorized_keys_command_user Liste von String Siehe Man-Seite
ssh_server__permit_blacklisted_keys Siehe Man-Seite
ssh_server__rsa_authentication Boolean Siehe Man-Seite
ssh_server__rhosts_rsa_authentication Boolean Siehe Man-Seite
ssh_server__host_based_authentication Boolean Siehe Man-Seite
ssh_server__host_based_uses_name_from_packet_only Boolean Siehe Man-Seite
ssh_server__ignore_user_known_hosts Boolean Siehe Man-Seite
ssh_server__ignore_rhosts Boolean Siehe Man-Seite
ssh_server__kerberos_authentication Boolean Siehe Man-Seite
ssh_server__kerberos_get_afs_token Boolean Siehe Man-Seite
ssh_server__kerberos_or_local_passwd Boolean Siehe Man-Seite
ssh_server__kerberos_ticket_cleanup Boolean Siehe Man-Seite
ssh_server__kerberos_use_kuserok Boolean Siehe Man-Seite
ssh_server__gssapi_authentication Boolean Siehe Man-Seite
ssh_server__gssapi_key_exchange Boolean Siehe Man-Seite
ssh_server__gssapi_cleanup_credentials Boolean Siehe Man-Seite
ssh_server__gssapi_strict_acceptor_check Boolean Siehe Man-Seite
ssh_server__gssapi_store_credentials_on_rekey Boolean Siehe Man-Seite
ssh_server__gssapi_enable_k5_users Boolean Siehe Man-Seite
ssh_server__deny_users Liste von String Siehe Man-Seite
ssh_server__allow_users Liste von String Siehe Man-Seite
ssh_server__deny_groups Liste von String Siehe Man-Seite
ssh_server__allow_groups Liste von String Siehe Man-Seite
ssh_server__permit_root_login String Siehe Man-Seite
ssh_server__login_grace_time String Siehe Man-Seite
ssh_server__max_auth_tries Integer Siehe Man-Seite
ssh_server__max_sessions Integer Siehe Man-Seite
ssh_server__max_startups Spezifisches Dict Dieses Dict muss die Schlüssel 'start', 'rate', 'full' enthalten (Siehe Man-Seite)
ssh_server__accept_env Liste von String Siehe Man-Seite
ssh_server__permit_user_environment Boolean Siehe Man-Seite
ssh_server__permit_user_rc Boolean Siehe Man-Seite
ssh_server__permit_tty Boolean Siehe Man-Seite
ssh_server__strict_modes Boolean Siehe Man-Seite
ssh_server__version_addendum String Siehe Man-Seite
ssh_server__banner String Siehe Man-Seite
ssh_server__debian_banner Boolean Siehe Man-Seite
ssh_server__print_motd Boolean Siehe Man-Seite
ssh_server__print_last_log Boolean Siehe Man-Seite
ssh_server__force_command String Siehe Man-Seite
ssh_server__chroot_directory String Siehe Man-Seite
ssh_server__client_alive_interval Integer Siehe Man-Seite
ssh_server__client_alive_count_max Integer Siehe Man-Seite
ssh_server__x11_forwarding Boolean Siehe Man-Seite
ssh_server__x11_display_offset Integer Siehe Man-Seite
ssh_server__x11_use_localhost Boolean Siehe Man-Seite
ssh_server__subsystems_global/group/host Dict Zuordnung von Subsystemnamen und Subsystembefehlen
ssh_server__match_list_global/group/host Liste von Match-Block Konfiguriere Match-Blöcke (siehe unten)

Matches

Du kannst die verfügbaren Matches mit den Variablen ssh_server__match_list_global/group/host konfigurieren. Diese Variablen nehmen Listen von Dictionnaires an. Jedes Dictionary muss folgendes Format haben:

ssh_server__match_list_global
  - match: "Match-Kriterien"
    options:                                     # Optionen, die gelten, wenn "match" übereinstimmt
      - AllowUsers test                          # eine einfache String-Option
      # ein Dictionary mit versionsabhängigen Optionen
      # abhängig von der aktuellen sshd-Version gilt die höhere Versionsbedingung und ihre Optionen werden angewendet
      - 8.2: AuthorizedKeysCommand /bin/true     # (String-Version)
        7.6:                                     # (Listen-Version)
          - AuthenticationMethods publickey
          - AllowUsers root
    state: absent               # optionale Zustand (standardmäßig auf vorhanden)

Die verfügbaren Match-Kriterien und Optionen, die du anwenden kannst, hängen von deiner aktuellen sshd-Version ab.

Ein Beispiel einer Gruppe, die nur SFTP ausführen darf, wird gegeben. Wenn du dies aktivieren möchtest, kannst du diesen Block im Inventory verwenden:

ssh_server__match_list_global:
  - '{{ ssh_server__match_group_sftponly }}'

Fakten

Standardmäßig werden die lokalen Fakten installiert und exponieren die folgenden Variablen:

ansible_local.ssh_server:
  version_full: '7.9p1'
  version_major: '7'

Beispiel

Playbook

Verwende es in einem Playbook wie folgt:

- hosts: all
  roles:
    - turgon37.ssh_server

Inventory

Um diese Rolle zu verwenden, erstelle oder aktualisiere dein Playbook gemäß folgendem Beispiel:

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'

Beispiel einer FreeIPA-Konfiguration

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
Über das Projekt

This role configure SSH server

Installieren
ansible-galaxy install Turgon37.ssh_server
GitHub Repository
Lizenz
mit
Downloads
1.3k
Besitzer
Ingénieur, Informaticien, curieux de nouvelles technologies. Passionné par le libre et l'esprit de communauté