silverlogic.sshd

OpenSSH-Server

Build-Status Ansible-Galaxy

Diese Rolle konfiguriert den OpenSSH-Dämon. Sie:

  • Konfiguriert standardmäßig den SSH-Dämon mit den üblichen Betriebssystemstandardeinstellungen.
  • Funktioniert über verschiedene UN*X-ähnliche Distributionen hinweg.
  • Kann über ein Wörterbuch oder einfache Variablen konfiguriert werden.
  • Unterstützt Match-Sets.
  • Unterstützt alle sshd_config-Optionen. Vorlagen werden programmgesteuert generiert. (siehe meta/make_option_list)
  • Testet die sshd_config, bevor sshd neu geladen wird.

WARNUNG Eine falsche Konfiguration dieser Rolle kann dazu führen, dass Sie sich nicht mehr auf Ihrem Server anmelden können! Bitte testen Sie Ihre Konfiguration und deren Wechselwirkung mit der Benutzerkonfiguration, bevor Sie sie in der Produktion verwenden!

WARNUNG Digital Ocean erlaubt root-Zugänge mit Passwörtern über SSH auf Debian und Ubuntu. Dies ist nicht die standardmäßige Einstellung dieses Moduls - es setzt PermitRootLogin without-password, was den Zugang über SSH-Schlüssel erlaubt, aber nicht über einfache Passwörter. Wenn Sie diese Funktion benötigen, stellen Sie sicher, dass Sie ssh_PermitRootLogin yes für diese Hosts setzen.

Anforderungen

Getestet auf:

  • Ubuntu precise, trusty
  • Debian wheezy, jessie
  • FreeBSD 10.1
  • EL 6,7 abgeleitete Distributionen
  • Fedora 22, 23
  • OpenBSD 6.0

Es wird wahrscheinlich auch auf anderen Versionen funktionieren, weitere direkte Unterstützung über geeignete vars/ Dateien ist willkommen.

Rollenvariablen

Unkonfiguriert bietet diese Rolle eine sshd_config, die den Betriebssystemstandard entspricht, ohne Kommentare und in anderer Reihenfolge.

  • sshd_skip_defaults

Wenn auf True gesetzt, werden keine Standardwerte angewendet. Das bedeutet, dass Sie eine vollständige Sammlung von Konfigurationsstandards über entweder das sshd-Wörterbuch oder sshd_Key-Variablen haben müssen. Standardmäßig auf False gesetzt.

  • sshd_manage_service

Wenn auf False gesetzt, wird der Dienst/Dämon gar nicht berührt, d.h. es wird nicht versucht, ihn beim Start zu aktivieren oder zu starten oder den Dienst neu zu laden. Standardmäßig auf True gesetzt, es sei denn, es wird in einem Docker-Container ausgeführt (es wird davon ausgegangen, dass Ansible während der Build-Phase verwendet wird).

  • sshd_allow_reload

Wenn auf False gesetzt, wird ein Reload von sshd bei Änderungen nicht erfolgen. Dies kann bei der Fehlersuche helfen. Sie müssen sshd manuell neu laden, wenn Sie die geänderte Konfiguration anwenden möchten. Standardmäßig auf den gleichen Wert wie sshd_manage_service gesetzt.

  • sshd_authorized_principals_file

Der Pfad, wo die Dateien der autorisierten Principals gespeichert werden. Wird nur verwendet, wenn sshd_authorized_principals ebenfalls gesetzt ist. Kann verwendet werden, um Ihre sshd_AuthorizedPrincipalsFile-Konfiguration festzulegen. z.B. sshd_AuthorizedPrincipalsFile: '{{ sshd_authorized_principals_file }}'

  • sshd_authorized_principals

Ein Wörterbuch von Listen, das angibt, welche Principals für welche Benutzer angemeldet werden dürfen. Jeder Schlüssel im Wörterbuch ist der Name des Benutzers. Der Wert des Wörterbuchs ist eine Liste von Principals, die für diesen Benutzer zugelassen sind. z.B.

sshd_authorized_principals:
  root:
    - root-everywhere
    - bobby
    - ryan
  • sshd_trusted_user_ca_keys_file

Der Pfad, wo die Datei der vertrauenswürdigen Benutzer-CA-Schlüssel gespeichert wird. Wird nur verwendet, wenn sshd_trusted_user_ca_keys ebenfalls gesetzt ist. Kann verwendet werden, um Ihre sshd_TrustedUserCAKeys-Konfiguration festzulegen. z.B. sshd_TrustedUserCAKeys: '{{ sshd_trusted_user_ca_keys }}'

  • sshd_trusted_user_ca_keys

Eine Liste von CA-Öffentlichen Schlüsseln, denen vertraut wird.

  • sshd

Ein Wörterbuch, das Konfigurationen enthält, z.B.

sshd:
  Compression: delayed
  ListenAddress:
    - 0.0.0.0
  • ssh_...

Einfachvariablen können anstelle eines Wörterbuchs verwendet werden. Einfache Werte überschreiben Werte aus dem Wörterbuch. z.B.:

sshd_Compression: off

In allen Fällen werden Booleans korrekt als ja und nein in der sshd-Konfiguration gerendert. Listen können für mehrzeilige Konfigurationselemente verwendet werden. z.B.

sshd_ListenAddress:
  - 0.0.0.0
  - '::'

Führt zu:

ListenAddress 0.0.0.0
ListenAddress ::
  • sshd_match

Eine Liste von Wörterbüchern für einen Match-Abschnitt. Siehe das Beispiel-Playbook.

  • sshd_match_1 bis sshd_match_9

Eine Liste von Wörterbüchern oder nur ein Wörterbuch für einen Match-Abschnitt.

Abhängigkeiten

Keine

Beispiel-Playbook

GEFAHR! Dieses Beispiel zeigt den Bereich der Konfiguration, den diese Rolle bietet. Das Ausführen wird wahrscheinlich Ihren SSH-Zugang zum Server unterbrechen!

---
- hosts: all
  vars:
    sshd_skip_defaults: true
    sshd:
      Compression: true
      ListenAddress:
        - "0.0.0.0"
        - "::"
      GSSAPIAuthentication: no
      Match:
        - Condition: "Group user"
          GSSAPIAuthentication: yes
    sshd_UsePrivilegeSeparation: no
    sshd_match:
        - Condition: "Group xusers"
          X11Forwarding: yes
  roles:
    - role: willshersystems.sshd

Ergebnisse in:

# Von Ansible verwaltet: ...
Compression yes
GSSAPIAuthentication no
UsePrivilegeSeparation no
Match Group user
  GSSAPIAuthentication yes
Match Group xusers
  X11Forwarding yes

Vorlagenerstellung

Die sshd_config.j2 Vorlage wird programmgesteuert von den Skripten in meta generiert. Neue Optionen sollten zum options_body oder options_match hinzugefügt werden.

Um die Vorlage neu zu generieren, führen Sie aus dem meta/-Verzeichnis folgendes aus: ./make_option_list >../templates/sshd_config.j2

Lizenz

LGPLv3

Autor

Matt Willsher matt@willsher.systems

© 2014,2015 Willsher Systems Ltd.

Installieren
ansible-galaxy install silverlogic.sshd
GitHub Repository
Lizenz
lgpl-3.0
Downloads
11.1k
Besitzer