skriptfabrik.sshd
Ansible Rolle: sshd
Beschreibung
Diese Rolle bietet sichere Konfigurationen für den SSH-Client und SSH-Server. Sie ist darauf ausgelegt, den DevSec SSH Baseline einzuhalten.
Die Rolle ist ein Fork von arillso.sshd.
Installation
ansible-galaxy collection install community.crypto
ansible-galaxy install skriptfabrik.sshd
Anforderungen
Keine
Rollenvariablen
ssh_ipv6_enable
true, wenn IPv6 benötigt wird
ssh_ipv6_enable: '{{ network_ipv6_enable | default(false) }}' # sshd + ssh
ssh_server_enabled
true, wenn sshd gestartet und aktiviert werden soll
ssh_server_enabled: true # sshd
ssh_use_dns
true, wenn DNS- Auflösungen benötigt werden
ssh_use_dns: false # sshd
ssh_compression
true oder Wert, wenn Kompression erforderlich ist
ssh_compression: false # sshd
ssh_hardening
Für welche Komponenten (Client und Server) die Konfiguration erstellt werden soll. Nützlich, wenn man gegen einen Client ohne SSH-Server läuft.
ssh_client_hardening: true # ssh
ssh_server_hardening: true # sshd
ssh_client_password_login
Wenn true, ist die Anmeldung mit Passwort erlaubt
ssh_client_password_login: false # ssh
ssh_server_password_login: false # sshd
ssh_server_ports
Ports, auf denen der SSH-Server hören soll
ssh_server_ports: ['22'] # sshd
ssh_client_port
Port, zu dem der SSH-Client verbinden soll
ssh_client_port: '22' # ssh
ssh_listen_to
Eine oder mehrere IP-Adressen, auf denen der SSH-Server hören soll. Standard ist leer, sollte aber aus Sicherheitsgründen konfiguriert werden!
ssh_listen_to: ['0.0.0.0'] # sshd
ssh_host_key_files
Host-Schlüssel, nach denen beim Starten von sshd gesucht werden soll.
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
Erzwingt die Erstellung von Host-Schlüssel-Dateien.
ssh_force_create_host_key_files: false # sshd
ssh_max_auth_retries
Legt die maximale Anzahl an Authentifizierungsversuchen pro Verbindung fest. Wenn die Anzahl der Fehlschläge die Hälfte dieses Wertes erreicht, werden zusätzliche Fehlschläge protokolliert.
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
Erlaubt SSH-Tunnel
ssh_permit_tunnel: false
ssh_remote_hosts
Hosts mit benutzerdefinierten Optionen. # ssh
ssh_remote_hosts: []
Beispiel
ssh_remote_hosts:
- names: ['example.com', 'example2.com']
options: ['Port 2222', 'ForwardAgent yes']
- names: ['example3.com']
options: ['StrictHostKeyChecking no']
ssh_allow_root_with_key
Auf "without-password" oder "yes" setzen, um die Anmeldung als root zu erlauben.
ssh_allow_root_with_key: 'no' # sshd
ssh_allow_tcp_forwarding
false, um TCP-Forwarding zu deaktivieren. Auf true setzen, um TCP-Forwarding zu erlauben.
ssh_allow_tcp_forwarding: false # sshd
ssh_gateway_ports
false, um das Binden weitergeleiteter Ports an Nicht-Loopback-Adressen zu deaktivieren. Auf true setzen, um das Binden an die Wildcard-Adresse zu erzwingen.
Auf 'clientspecified' setzen, damit der Client angeben kann, an welche Adresse gebunden werden soll.
ssh_gateway_ports: false # sshd
ssh_allow_agent_forwarding
false, um Agent Forwarding zu deaktivieren. Auf true setzen, um Agent Forwarding zu erlauben.
ssh_allow_agent_forwarding: false # sshd
ssh_pam_support
true, wenn SSH PAM-Unterstützung hat
ssh_pam_support: true
ssh_use_pam
false, um PAM-Authentifizierung zu deaktivieren.
ssh_use_pam: false # sshd
ssh_google_auth
false, um die Google 2FA-Authentifizierung zu deaktivieren.
ssh_google_auth: false # sshd
ssh_pam_device
false, um die PAM-Gerät-2FA-Eingabe zu deaktivieren.
ssh_pam_device: false # sshd
ssh_gssapi_support
true, wenn SSH GSSAPI unterstützt.
ssh_gssapi_support: false
ssh_kerberos_support
true, wenn SSH Kerberos unterstützt.
ssh_kerberos_support: true
ssh_deny_users
Falls angegeben, ist die Anmeldung für Benutzernamen, die mit einem der Muster übereinstimmen, nicht erlaubt.
ssh_deny_users: '' # sshd
ssh_allow_users
Falls angegeben, ist die Anmeldung nur für Benutzernamen, die mit einem der Muster übereinstimmen, erlaubt.
ssh_allow_users: '' # sshd
ssh_deny_groups
Falls angegeben, ist die Anmeldung für Benutzer, deren primäre oder ergänzende Gruppenliste mit einem der Muster übereinstimmt, nicht erlaubt.
ssh_deny_groups: '' # sshd
ssh_allow_groups
Falls angegeben, ist die Anmeldung nur für Benutzer, deren primäre oder ergänzende Gruppenliste mit einem der Muster übereinstimmt, erlaubt.
ssh_allow_groups: '' # sshd
ssh_authorized_keys_file
Ändert die Standarddatei, die die öffentlichen Schlüssel enthält, die zur Benutzerauthentifizierung verwendet werden können.
ssh_authorized_keys_file: '' # sshd
ssh_trusted_user_ca_keys_file
Gibt die Datei an, die die vertrauenswürdigen öffentlichen Schlüssel der Zertifizierungsstellen enthält, die zur Signierung von Benutzerzertifikaten verwendet werden.
ssh_trusted_user_ca_keys_file: '' # sshd
ssh_trusted_user_ca_keys
Setzt die vertrauenswürdigen öffentlichen Schlüssel der Zertifizierungsstellen, die zur Signierung von Benutzerzertifikaten verwendet werden.
ssh_trusted_user_ca_keys: [] # sshd
Beispiel
ssh_trusted_user_ca_keys:
- 'ssh-rsa ... comment1'
- 'ssh-rsa ... comment2'
ssh_authorized_principals_file
Gibt die Datei an, die die erlaubten Prinzipale enthält. Wird nur verwendet, wenn ssh_trusted_user_ca_keys_file gesetzt ist.
ssh_authorized_principals_file: '' # sshd
Beispiel
ssh_authorized_principals_file: '/etc/ssh/auth_principals/%u'
%h wird durch das Home-Verzeichnis des authentifizierten Benutzers ersetzt, und %u wird durch den Benutzernamen dieses Benutzers ersetzt. Nach der Erweiterung wird der Pfad als absoluter Pfad oder als relativ zum Home-Verzeichnis des Benutzers betrachtet.
ssh_authorized_principals
Liste von Hashes, die Dateipfade und autorisierte Prinzipale enthalten. Wird nur verwendet, wenn ssh_authorized_principals_file gesetzt ist.
ssh_authorized_principals: [] # sshd
Beispiel
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, um das Drucken der MOTD zu deaktivieren.
ssh_print_motd: false # sshd
ssh_print_last_log
false, um die Anzeige der letzten Anmeldeinformationen zu deaktivieren.
ssh_print_last_log: false # sshd
ssh_banner
false, um das Bereitstellen von /etc/ssh/banner.txt vor der Authentifizierung zu deaktivieren.
ssh_banner: false # sshd
ssh_print_debian_banner
false, um die Verteilungsversion während des initialen Protokoll-Handshakes zu verbergen.
ssh_print_debian_banner: false # sshd (nur Debian OS Familie)
ssh_sftp_enabled
true, um die SFTP-Konfiguration zu aktivieren.
ssh_sftp_enabled: '{{ sftp_enabled | default(false) }}'
ssh_sftp_chroot
false, um SFTP-Chroot zu deaktivieren.
ssh_sftp_chroot: '{{ sftp_chroot | default(true) }}'
ssh_sftp_chroot_dir
Ändert den Standard-SFTP-Chroot-Standort.
ssh_sftp_chroot_dir: "{{ sftp_chroot_dir | default('/home/%u') }}"
Wenn true, ist die Passwortanmeldung für SFTP erlaubt.
ssh_server_sftp_password_login: false
ssh_server_sftp_password_login: true
ssh_client_roaming
Aktiviert experimentelles Client-Roaming.
ssh_client_roaming: false
ssh_server_match_user
Liste von Hashes (mit Benutzer und Regeln), um Match User-Blöcke zu generieren.
ssh_server_match_user: false # sshd
ssh_server_match_group
Liste von Hashes (mit Gruppe und Regeln), um Match Group-Blöcke zu generieren.
ssh_server_match_group: false # sshd
ssh_server_match_address
Liste von Hashes (mit Adressen/Subnetzen und Regeln), um Match Address-Blöcke zu generieren.
ssh_server_match_address: false # sshd
ssh_server_permit_environment_vars
ssh_server_permit_environment_vars: false
ssh_max_startups
Maximale Anzahl gleichzeitiger, nicht authentifizierter Verbindungen zum SSH-Daemon.
ssh_max_startups: '10:30:100' # sshd
ssh_ps53
ssh_ps53: 'yes'
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
Verzeichnis zum Speichern der SSH_Password-Policy.
ssh_custom_selinux_dir: '/etc/selinux/local-policies'
sshd_moduli_file: '/etc/ssh/moduli'
sshd_moduli_minimum: 2048
ssh_challengeresponseauthentication
Deaktiviert ChallengeResponseAuthentication.
ssh_challengeresponseauthentication: false
ssh_server_revoked_keys
Eine Liste von öffentlichen Schlüsseln, die vom SSH-Server niemals akzeptiert werden.
ssh_server_revoked_keys: []
ssh_hardening_enabled
Auf false setzen, um die Rolle zu deaktivieren. Nützlich, wenn man den Abhängigkeitsmechanismus der Ansible-Rolle verwendet.
ssh_hardening_enabled: true
ssh_custom_options
Benutzerdefinierte Optionen für die SSH-Client-Konfigurationsdatei.
ssh_custom_options: []
sshd_custom_options
Benutzerdefinierte Optionen für die Konfigurationsdatei des SSH-Daemons.
sshd_custom_options: []
Abhängigkeiten
Keine
Beispiel-Playbook
- hosts: all
roles:
- skriptfabrik.sshd
Autor
Lizenz
Dieses Projekt steht unter der MIT Lizenz.
Copyright
(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