skriptfabrik.sshd

Ansible Rolle: sshd

Ansible Galaxy Ansible Rolle

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.

(c) 2022, skriptfabrik GmbH

Über das Projekt

This role provides secure ssh-client and ssh-server configurations. It is intended to be compliant with the DevSec SSH Baseline.

Installieren
ansible-galaxy install skriptfabrik.sshd
GitHub Repository
Lizenz
mit
Downloads
2.8k