Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Tools/GitHubGitHub/dev-sec/ansible-ssh-hardening
Cloud-Infrastruktur-SicherheitKonfigurationsprüfungNetzwerksicherheitDevSecOpsAuthentifizierungArchived
GitHubdev-sec/ansible-ssh-hardening

ansible-ssh-hardening

Diese Ansible-Rolle bietet zahlreiche sicherheitsbezogene SSH-Konfigurationen und gewährleistet einen umfassenden Basisschutz.

Repository anzeigen
7851909vor 5 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Webseite
Teilen

ssh-hardening (Ansible-Rolle)

Achtung: Diese Rolle wurde in unsere hardening-collection migriert:

  • https://github.com/dev-sec/ansible-os-hardening/
  • https://galaxy.ansible.com/devsec/hardening

Bitte öffnen Sie dort alle Issues und Pull Requests!

Anforderungen

  • Ansible > 2.5

Rollenvariablen

  • network_ipv6_enable
    • Standard: false
    • Beschreibung: true, wenn IPv6 benötigt wird. ssh_listen_to muss ebenfalls gesetzt werden, um auf IPv6-Adressen zu lauschen (z. B. [::]).
  • ssh_server_ports
    • Standard: ['22']
    • Beschreibung: Ports, auf denen der SSH-Server lauschen soll
  • ssh_client_port
  • Standard: '22'
  • Beschreibung: Port, mit dem der SSH-Client eine Verbindung herstellen soll
  • ssh_listen_to
    • Standard: ['0.0.0.0']
    • Beschreibung: eine oder mehrere IP-Adressen, auf denen der SSH-Server lauschen soll. Standard sind alle IPv4-Adressen, sollte aber aus Sicherheitsgründen auf bestimmte Adressen konfiguriert werden!
  • ssh_host_key_files
    • Standard: []
    • Beschreibung: Host-Keys für sshd. Wenn leer, werden ['/etc/ssh/ssh_host_rsa_key', '/etc/ssh/ssh_host_ecdsa_key', '/etc/ssh/ssh_host_ed25519_key'] verwendet, sofern von der installierten sshd-Version unterstützt
  • ssh_host_key_algorithms
    • Standard: []
    • Beschreibung: Host-Key-Algorithmen, die der Server anbietet. Wenn leer, wird die Standardliste verwendet, andernfalls überschreibt die Einstellung mit der angegebenen Liste von Algorithmen
  • ssh_client_alive_interval
    • Standard: 600
    • Beschreibung: gibt ein Intervall für das Senden von Keepalive-Nachrichten an
  • ssh_client_alive_count
    • Standard: 3
    • Beschreibung: legt fest, wie oft Keep-Alive-Nachrichten gesendet werden
  • ssh_permit_tunnel
    • Standard: false
    • Beschreibung: true, wenn SSH-Port-Tunneling erforderlich ist
  • ssh_remote_hosts
    • Standard: []
    • Beschreibung: ein oder mehrere Hosts und deren benutzerdefinierte Optionen für den SSH-Client. Standard ist leer. Siehe Beispiele in defaults/main.yml.
  • ssh_permit_root_login
    • Standard: no
    • Beschreibung: Root-Login deaktivieren. Setzen Sie without-password oder yes, um Root-Login zu aktivieren
  • ssh_allow_tcp_forwarding
    • Standard: no
    • Beschreibung: 'no' zum Deaktivieren von TCP-Forwarding. Setzen Sie 'yes', um TCP-Forwarding zu erlauben. Wenn Sie OpenSSH >= 6.2 verwenden, können Sie 'yes', 'no', 'all' oder 'local' angeben.
      Hinweis: Werte, die an diese Variable übergeben werden, müssen Strings sein, daher sollten die Werte 'yes' und 'no' mit Anführungszeichen übergeben werden.
  • ssh_gateway_ports
    • Standard: false
    • Beschreibung: false zum Deaktivieren der Bindung weitergeleiteter Ports an Nicht-Loopback-Adressen. Setzen Sie true, um die Bindung an die Wildcard-Adresse zu erzwingen. Setzen Sie clientspecified, um dem Client zu erlauben, die zu bindende Adresse anzugeben.
  • ssh_allow_agent_forwarding
    • Standard: false
    • Beschreibung: false zum Deaktivieren von Agent-Forwarding. Setzen Sie true, um Agent-Forwarding zu erlauben.
  • ssh_x11_forwarding
    • Standard: false
    • Beschreibung: false zum Deaktivieren von X11-Forwarding. Setzen Sie true, um X11-Forwarding zu erlauben.
  • ssh_pam_support
    • Standard: true
    • Beschreibung: true, wenn SSH PAM-Unterstützung hat.
  • ssh_use_pam
    • Standard: true
    • Beschreibung: false zum Deaktivieren der PAM-Authentifizierung.
  • ssh_gssapi_support
    • Standard: false
    • Beschreibung: true, wenn SSH GSSAPI-Unterstützung hat.
  • ssh_kerberos_support
    • Standard: true
    • Beschreibung: true, wenn SSH Kerberos-Unterstützung hat.
  • ssh_deny_users
    • Standard: ''
    • Beschreibung: wenn angegeben, ist der Login für Benutzernamen, die einem der Muster entsprechen, nicht erlaubt.
  • ssh_allow_users
    • Standard: ''
    • Beschreibung: wenn angegeben, ist der Login nur für Benutzernamen erlaubt, die einem der Muster entsprechen.
  • ssh_deny_groups
    • Standard: ''
    • Beschreibung: wenn angegeben, ist der Login für Benutzer, deren primäre Gruppe oder Liste zusätzlicher Gruppen einem der Muster entspricht, nicht erlaubt.
  • ssh_allow_groups
    • Standard: ''
    • Beschreibung: wenn angegeben, ist der Login nur für Benutzer erlaubt, deren primäre Gruppe oder Liste zusätzlicher Gruppen einem der Muster entspricht.
  • ssh_authorized_keys_file
    • Standard: ''
    • Beschreibung: ändert die Standarddatei, die die öffentlichen Schlüssel enthält, die für die Benutzerauthentifizierung verwendet werden können.
  • ssh_trusted_user_ca_keys_file
    • Standard: ''
    • Beschreibung: gibt die Datei an, die die öffentlichen Schlüssel vertrauenswürdiger Zertifizierungsstellen enthält, die zum Signieren von Benutzerzertifikaten verwendet werden.
  • ssh_trusted_user_ca_keys
    • Standard: []
    • Beschreibung: setzt die öffentlichen Schlüssel vertrauenswürdiger Zertifizierungsstellen, die zum Signieren von Benutzerzertifikaten verwendet werden. Wird nur verwendet, wenn ssh_trusted_user_ca_keys_file gesetzt ist.
  • ssh_authorized_principals_file
    • Standard: ''
    • Beschreibung: gibt die Datei an, die erlaubte Principals enthält. Wird nur verwendet, wenn ssh_trusted_user_ca_keys_file gesetzt ist.
  • ssh_authorized_principals
    • Standard: []
    • Beschreibung: Liste von Hashes, die Dateipfade und autorisierte Principals enthalten, siehe default_custom.yml für alle Optionen. Wird nur verwendet, wenn ssh_authorized_principals_file gesetzt ist.
  • ssh_print_motd
    • Standard: false
    • Beschreibung: false zum Deaktivieren des Druckens der MOTD
  • ssh_print_pam_motd
    • Standard: false
    • Beschreibung: false zum Deaktivieren des Druckens der MOTD über pam (Debian und Ubuntu)
  • ssh_print_last_log
    • Standard: false
    • Beschreibung: false zum Deaktivieren der Anzeige von Informationen zum letzten Login
  • sftp_enabled
    • Standard: false
    • Beschreibung: true zum Aktivieren der sftp-Konfiguration
  • sftp_umask
    • Standard: '0027'
    • Beschreibung: gibt die Umask für sftp an
  • sftp_chroot
    • Standard: true
    • Beschreibung: false zum Deaktivieren von chroot für sftp
  • sftp_chroot_dir
    • Standard: /home/%u
    • Beschreibung: ändert den Standardspeicherort für sftp-chroot
  • ssh_client_roaming
    • Standard: false
    • Beschreibung: experimentelles Client-Roaming aktivieren
  • sshd_moduli_file
    • Standard: '/etc/ssh/moduli'
    • Beschreibung: Pfad zur SSH-Moduli-Datei
  • sshd_moduli_minimum
    • Standard: 2048
    • Beschreibung: entfernt Diffie-Hellman-Parameter, die kleiner als die definierte Größe sind, um Logjam zu entschärfen
  • ssh_challengeresponseauthentication
    • Standard: false
    • Beschreibung: gibt an, ob Challenge-Response-Authentifizierung erlaubt ist (z. B. über PAM)
  • ssh_client_password_login
    • Standard: false
    • Beschreibung: true, um passwortbasierte Authentifizierung mit dem SSH-Client zu erlauben
  • ssh_server_password_login
    • Standard: false
    • Beschreibung: true, um passwortbasierte Authentifizierung mit dem SSH-Server zu erlauben
  • ssh_banner
    • Standard: false
    • Beschreibung: true, um beim Login ein Banner anzuzeigen
  • ssh_banner_path
    • Standard: '/etc/sshd/banner.txt'
    • Beschreibung: Pfad zur SSH-Bannerdatei
  • ssh_client_hardening
    • Standard: true
    • Beschreibung: false, um das Härten des Clients zu stoppen
  • ssh_client_port
    • Standard: '22'
    • Beschreibung: gibt die Portnummer an, mit der auf dem Remote-Host eine Verbindung hergestellt wird.
  • ssh_client_compression
    • Standard: false
    • Beschreibung: gibt an, ob der Client Komprimierung anfordert.
  • ssh_compression
    • Standard: false
    • Beschreibung: gibt an, ob serverseitige Komprimierung aktiviert ist, nachdem sich der Benutzer erfolgreich authentifiziert hat.
  • ssh_login_grace_time
    • Standard: 30s
    • Beschreibung: gibt die Zeit an, die für eine erfolgreiche Authentifizierung am SSH-Server erlaubt ist
  • ssh_max_auth_retries
    • Standard: 2
    • Beschreibung: gibt die maximale Anzahl von Authentifizierungsversuchen pro Verbindung an.
  • ssh_max_sessions
    • Standard: 10
    • Beschreibung: gibt die maximale Anzahl offener Sitzungen an, die pro Verbindung erlaubt sind.
  • ssh_print_debian_banner
    • Standard: false
    • Beschreibung: true, um das Debian-spezifische Banner anzuzeigen
  • ssh_server_enabled
    • Standard: true
    • Beschreibung: false, um den opensshd-Server zu deaktivieren
  • ssh_server_hardening
    • Standard: true
    • Beschreibung: false, um das Härten des Servers zu stoppen
  • ssh_server_match_address
    • Standard: ''
    • Beschreibung: führt einen bedingten Block ein. Wenn alle Kriterien der Match-Zeile erfüllt sind, überschreiben die Schlüsselwörter in den folgenden Zeilen die in der globalen Sektion der Konfigurationsdatei gesetzten, bis entweder eine weitere Match-Zeile oder das Ende der Datei erreicht ist.
  • ssh_server_match_group
    • Standard: ''
    • Beschreibung: führt einen bedingten Block ein. Wenn alle Kriterien der Match-Zeile erfüllt sind, überschreiben die Schlüsselwörter in den folgenden Zeilen die in der globalen Sektion der Konfigurationsdatei gesetzten, bis entweder eine weitere Match-Zeile oder das Ende der Datei erreicht ist.
  • ssh_server_match_user
    • Standard: ''
    • Beschreibung: führt einen bedingten Block ein. Wenn alle Kriterien der Match-Zeile erfüllt sind, überschreiben die Schlüsselwörter in den folgenden Zeilen die in der globalen Sektion der Konfigurationsdatei gesetzten, bis entweder eine weitere Match-Zeile oder das Ende der Datei erreicht ist.
  • ssh_server_match_local_port
    • Standard: ''
    • Beschreibung: führt einen bedingten Block ein. Wenn alle Kriterien der Match-Zeile erfüllt sind, überschreiben die Schlüsselwörter in den folgenden Zeilen die in der globalen Sektion der Konfigurationsdatei gesetzten, bis entweder eine weitere Match-Zeile oder das Ende der Datei erreicht ist.
  • ssh_server_permit_environment_vars
    • Standard: no
    • Beschreibung: yes, um anzugeben, dass ~/.ssh/environment und environment=-Optionen in ~/.ssh/authorized_keys von sshd verarbeitet werden. Mit OpenSSH-Version 7.8 ist es möglich, zusätzlich zu den globalen Einstellungen "yes" oder "no" eine Whitelist von Umgebungsvariablennamen anzugeben
  • ssh_server_accept_env_vars
    • Standard: ''
    • Beschreibung: gibt an, welche vom Client gesendeten Umgebungsvariablen in die Umgebung der Sitzung kopiert werden; mehrere Umgebungsvariablen können durch Leerzeichen getrennt werden
  • ssh_use_dns
    • Standard: false
    • Beschreibung: gibt an, ob sshd den Remote-Hostnamen nachschlagen und prüfen soll, ob der aufgelöste Hostname für die Remote-IP-Adresse auf genau dieselbe IP-Adresse abbildet.
  • ssh_server_revoked_keys
    • Standard: []
    • Beschreibung: eine Liste widerrufener öffentlicher Schlüssel, die der SSH-Server immer ablehnt; nützlich, um bekannte schwache oder kompromittierte Schlüssel zu widerrufen.
  • ssh_max_startups
    • Standard: '10:30:100'
    • Beschreibung: gibt die maximale Anzahl gleichzeitiger nicht authentifizierter Verbindungen zum SSH-Daemon an.
  • ssh_macs
    • Standard: []
    • Beschreibung: Ändern Sie diese Liste, um MACs zu überschreiben. Standardwerte finden Sie in defaults/main.yml
  • ssh_kex
    • Standard: []
    • Beschreibung: Ändern Sie diese Liste, um KEXs zu überschreiben. Standardwerte finden Sie in defaults/main.yml
  • ssh_ciphers
    • Standard: []
    • Beschreibung: Ändern Sie diese Liste, um Ciphers zu überschreiben. Standardwerte finden Sie in defaults/main.yml
  • ssh_custom_options
    • Standard: []
    • Beschreibung: Benutzerdefinierte Zeilen für die SSH-Client-Konfiguration
  • sshd_custom_options
    • Standard: []
    • Beschreibung: Benutzerdefinierte Zeilen für die SSH-Daemon-Konfiguration
  • sshd_syslog_facility
    • Standard: 'AUTH'
    • Beschreibung: der Facility-Code, der beim Protokollieren von Nachrichten von sshd verwendet wird
  • sshd_log_level
    • Standard: 'VERBOSE'
    • Beschreibung: die Ausführlichkeitsstufe, die beim Protokollieren von Nachrichten von sshd verwendet wird
  • sshd_strict_modes
    • Standard: true
    • Beschreibung: Dateimodi und Eigentümerschaft der Benutzerdateien und des Home-Verzeichnisses vor der Annahme des Logins prüfen
  • sshd_authenticationmethods
    • Standard: publickey
    • Beschreibung: gibt die Authentifizierungsmethoden an, die erfolgreich abgeschlossen werden müssen, damit einem Benutzer Zugriff gewährt wird. Stellen Sie sicher, dass Sie alle erforderlichen Variablen für Ihre ausgewählte Authentifizierungsmethode setzen. Standardwerte finden Sie in defaults/main.yml
  • Konfigurieren von Einstellungen, die nicht in den Rollenvariablen aufgeführt sind

    Wenn Sie SSH-Optionen konfigurieren möchten, die oben nicht aufgeführt sind, können Sie ssh_custom_options (für /etc/ssh/ssh_config) oder sshd_custom_options (für /etc/ssh/sshd_config) verwenden, um diese zu setzen. Diese Optionen werden am Anfang der Datei gesetzt, sodass Sie Optionen weiter unten in der Datei überschreiben können.

    Beispiel-Playbook:

    root@kitploit:~
    - hosts: localhost
      roles:
        - dev-sec.ssh-hardening
      vars:
        ssh_custom_options:
          - "Include /etc/ssh/ssh_config.d/*"
        sshd_custom_options:
          - "AcceptEnv LANG"
    

    Ändern des Standardports und Idempotenz

    Diese Rolle verwendet den Standardport 22 oder den im Inventar konfigurierten Port, um eine Verbindung zum Server herzustellen. Wenn der Standard-ssh-Port über ssh_server_ports geändert wird, versucht die Rolle nach einem Neustart des SSH-Servers weiterhin, über den vorherigen Port eine Verbindung herzustellen. Um diese Rolle erneut auf demselben Server auszuführen, muss das Inventar aktualisiert werden, um den neuen SSH-Port zu verwenden.

    Wenn Idempotenz wichtig ist, ziehen Sie bitte die Rolle ssh-hardening-fallback in Betracht, einen Wrapper um diese Rolle, der auf Port 22 zurückfällt, wenn der konfigurierte Port nicht erreichbar ist.

    Beispiel-Playbook

    root@kitploit:~
    - hosts: localhost
      roles:
        - dev-sec.ssh-hardening
    

    Lokales Testen

    Die bevorzugte Methode zum lokalen Testen der Rolle ist die Verwendung von Docker. Sie müssen Docker auf Ihrem System installieren. Siehe Get started für ein für Ihr System geeignetes Docker-Paket.

    Sie können auch vagrant und Virtualbox oder VMWare verwenden, um Tests lokal auszuführen. Sie müssen Virtualbox und Vagrant auf Ihrem System installieren. Siehe Vagrant Downloads für ein für Ihr System geeignetes Vagrant-Paket. Für alle unsere Tests verwenden wir test-kitchen. Wenn Sie mit test-kitchen nicht vertraut sind, werfen Sie bitte einen Blick auf deren Anleitung.

    Installieren Sie als Nächstes test-kitchen:

    root@kitploit:~
    # Abhängigkeiten installieren
    gem install bundler
    bundle install
    

    Testen mit Docker

    root@kitploit:~
    # schneller Test auf einer Maschine
    bundle exec kitchen test ssh-ubuntu1804-ansible-latest
    
    # Test auf allen Maschinen
    bundle exec kitchen test
    
    # für die Entwicklung
    bundle exec kitchen create ssh-ubuntu1804-ansible-latest
    bundle exec kitchen converge ssh-ubuntu1804-ansible-latest
    bundle exec kitchen verify ssh-ubuntu1804-ansible-latest
    
    # Aufräumen
    bundle exec kitchen destroy ssh-ubuntu1804-ansible-latest
    

    Testen mit Virtualbox

    root@kitploit:~
    # schneller Test auf einer Maschine
    KITCHEN_YAML=".kitchen.vagrant.yml" bundle exec kitchen test ssh-ubuntu-1804
    
    # Test auf allen Maschinen
    KITCHEN_YAML=".kitchen.vagrant.yml" bundle exec kitchen test
    
    # für die Entwicklung
    KITCHEN_YAML=".kitchen.vagrant.yml" bundle exec kitchen create ssh-ubuntu-1804
    KITCHEN_YAML=".kitchen.vagrant.yml" bundle exec kitchen converge ssh-ubuntu-1804
    

    Weitere Informationen finden Sie unter test-kitchen

    FAQ / Fallstricke

    Ich kann mich nicht in mein Konto einloggen. Ich habe den Client-Schlüssel registriert, aber es lässt mich trotzdem nicht rein.

    Wenn Sie alle typischen Probleme ausgeschlossen haben (Firewall, Netzwerk, fehlender Schlüssel, falscher Schlüssel, deaktiviertes Konto usw.), ist Ihr Konto möglicherweise gesperrt. Der schnellste Weg, dies herauszufinden, ist ein Blick auf den Passwort-Hash Ihres Benutzers:

    root@kitploit:~
    sudo grep myuser /etc/shadow
    

    Wenn der Hash ein ! enthält, ist Ihr Konto gesperrt:

    root@kitploit:~
    myuser:!:16280:7:60:7:::
    

    Der richtige Weg, dies zu lösen, ist das Entsperren des Kontos (passwd -u myuser). Wenn der Benutzer kein Passwort hat, können Sie es wie folgt entsperren:

    root@kitploit:~
    usermod -p "*" myuser
    

    Alternativ, wenn Sie PAM verwenden möchten, haben Sie es über ssh_use_pam: true aktiviert. PAM erlaubt gesperrten Benutzern den Zugang mit Schlüsseln.

    Warum verbindet sich meine Anwendung nicht mehr über SSH?

    Schauen Sie sich immer zuerst die Logdateien an und, wenn möglich, die Aushandlung zwischen Client und Server, die beim Verbindungsaufbau abgeschlossen wird.

    Wir haben einige Probleme in Anwendungen (basierend auf Python und Ruby) gesehen, die auf deren Verwendung eines veralteten Krypto-Sets zurückzuführen sind. Dies kollidiert mit diesem Härtungsmodul, das die Liste der Ciphers, Message Authentication Codes (MACs) und Key-Exchange-Algorithmen (KEX) auf eine sicherere Auswahl reduziert hat.

    Nach der Verwendung der Rolle funktionieren die Module template/copy/file von Ansible nicht mehr!

    Diese Rolle deaktiviert standardmäßig SFTP. Ansible verwendet standardmäßig SFTP, um Dateien auf die Remote-Hosts zu übertragen. Sie müssen scp_if_ssh = True in Ihrer ansible.cfg setzen. Auf diese Weise verwendet Ansible SCP zum Kopieren von Dateien. Alternativ können Sie SFTP wieder aktivieren, indem Sie sftp_enabled auf true setzen.

    Der sshd-Dienst kann aufgrund fehlender Berechtigungen nicht neu gestartet werden

    Wenn Sie beim Ausführen des Handlers "restart sshd" den folgenden Fehler erhalten

    root@kitploit:~
    Unable to restart service ssh: Failed to restart ssh.service: Access denied
    

    oder

    root@kitploit:~
    failure 1 running systemctl show for 'ssh': Failed to connect to bus: No such file or directory
    

    führen Sie das Playbook entweder als root aus (ohne become: yes auf Playbook-Ebene) oder fügen Sie become: yes zum Handler hinzu.

    Dies ist ein Fehler in Ansible: siehe hier und hier für weitere Informationen.

    Mitwirken

    Siehe Richtlinien für Mitwirkende.

    Lizenz und Autor

    • Autor:: Sebastian Gumprich
    • Autor:: Christoph Hartmann [email protected]

    Lizenziert unter der Apache License, Version 2.0 (die "Lizenz"); Sie dürfen diese Datei nur in Übereinstimmung mit der Lizenz verwenden. Eine Kopie der Lizenz erhalten Sie unter

    root@kitploit:~
    http://www.apache.org/licenses/LICENSE-2.0
    

    Sofern nicht durch geltendes Recht vorgeschrieben oder schriftlich vereinbart, wird die Software unter der Lizenz auf einer "WIE BESEHEN"-Basis verteilt, OHNE GEWÄHRLEISTUNG ODER BEDINGUNGEN JEGLICHER ART, weder ausdrücklich noch stillschweigend. Siehe die Lizenz für die spezifischen Berechtigungen und Einschränkungen unter der Lizenz.

    Tool herunterladen