Turgon37.ssh_server
Ansible Rolle SSH Server
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
ansible-galaxy install Turgon37.ssh_server