nephosolutions.sftp_server

SFTP-Server

Ansible Rolle Software Lizenz Build Status

Eine Ansible-Rolle, die einen OpenSSH-Server für chrooted SFTP-Zugriff konfiguriert. Die Rolle ist so aufgebaut, dass sie die Anpassungen des Nutzers an OpenSSH nicht unnötig verändert. Stattdessen ändert sie nur die wichtigen Teile und fügt den Rest ihrer Konfiguration in Form eines benutzerdefinierten Konfigurationsblocks hinzu (der fehlende Support für eine Art von conf.d/ bei OpenSSH zwingt zu diesem Verhalten).

Anforderungen

Es wird empfohlen, dass scp_if_ssh auf true im Abschnitt ssh_connection Ihrer Datei ansible.cfg gesetzt wird, da Ansible standardmäßig SFTP für Dateitransfers verwendet und Sie sich mit dieser Rolle leicht aus dem SFTP-Zugriff Ihres Servers ausschließen können. Der SCP-Fallback funktioniert weiterhin. Beispielkonfiguration:

; ansible.cfg
...
[ssh_connection]
scp_if_ssh=True

Abgesehen davon wird nur Ansible selbst benötigt. Getestet mit Ansible 2.0.2.0, 2.2.2.0 und 2.3.0.0. Funktioniert unter Ubuntu 14.04 und 16.04, ungetestet unter anderen Versionen. Es wurden einige Arbeiten zur Unterstützung von RHEL durchgeführt, obwohl dies derzeit nicht offiziell vom ursprünglichen Autor unterstützt wird (weitere Beiträge sind natürlich willkommen ;-)

Rollenvorlagen

Die folgenden Rollenvorlagen sind relevant:

  • sftp_home_partition: Die Partition, auf der sich die Home-Verzeichnisse der SFTP-Nutzer befinden. Standard ist "/home".
  • sftp_group_name: Der Name der Unix-Gruppe, zu der alle SFTP-Nutzer gehören müssen. Standard ist "sftpusers".
  • sftp_directories: Eine Liste von Verzeichnissen, die standardmäßig automatisch für alle SFTP-Nutzer erstellt werden müssen. Standard ist eine leere Liste (d.h. "[]").
    • Werte können einfache Strings oder Dictionaries mit name und (optional) mode Schlüssel/Werte-Paaren sein.
  • sftp_start_directory: Ein Verzeichnis, das Teil der Werte von sftp_directories sein muss und das Startverzeichnis der neuen SFTP-Verbindung ist. Standardmäßig mit einem leeren Stringwert deaktiviert.
  • sftp_allow_passwords: Ob Passwortauthentifizierung für SFTP erlaubt ist oder nicht. Standard ist False.
  • sftp_enable_selinux_support: Ob SELinux Unterstützung explizit aktiviert werden soll oder nicht. Standard ist False.
  • sftp_enable_logging: Protokollierung aktivieren. Auth-Protokolle werden in /var/log/sftp/auth.log geschrieben, und SFTP-Aktivitätsprotokolle werden in /var/log/sftp/verbose.log geschrieben. Standard ist False.
  • sftp_users: Eine Liste von Benutzern in Kartenform, die die folgenden Elemente enthält:
    • name: Der Unix-Name des Benutzers, der Zugriff auf SFTP benötigt.
    • group: Eine optionale primäre Benutzergruppe. Wenn gesetzt, wird sie für die Berechtigungen des Home-Verzeichnisses des Benutzers verwendet. Andernfalls wird der sftp_group_name verwendet.
    • password: Ein Passwort-Hash für den Benutzer zum Einloggen - d.h. openssl passwd -1 -salt salty passpass. Leere Passwörter können mit password: "" gesetzt werden. HINWEIS: Es scheint, dass UsePAM yes und PermitEmptyPassword yes in sshd_config gesetzt werden müssen, damit leere Passwörter korrekt funktionieren. Diese Änderungen liegen derzeit außerhalb des Rahmens dieser Rolle und müssen extern vorgenommen werden.
    • shell: Boolean, der angibt, ob der Benutzer Shell-Zugriff haben sollte (standardmäßig auf True).
    • authorized: Eine optionale Liste von Dateien in files/, die gültige öffentliche Schlüssel für den SFTP-Benutzer enthalten.
    • sftp_directories: Eine Liste von Verzeichnissen, die individuell für einen SFTP-Nutzer erstellt werden müssen. Standard ist eine leere Liste (d.h. "[]").
    • append: Boolean, um sftp_group_name zu den Benutzergruppen (sofern vorhanden) hinzuzufügen, anstatt es festzulegen (standardmäßig auf False).
    • mode: Der Modus des Home-Verzeichnisses des Benutzers (standardmäßig 0750).
    • skeleton: Ein optionales Home-Skelettverzeichnis (z.B.: /dev/null). Standardmäßig auf die Systemeinstellungen.
    • home: Ein optionales Home-Verzeichnis (z.B.: /home/bob). Standardmäßig auf sftp_home_partition/name.
  • sftp_nologin_shell: Die "nologin" Benutzer-Shell. (Standardmäßig /sbin/nologin.)

Hinweise:

  • Die Einstellung sftp_nologin_shell definiert die Shell, die sftp_users zugewiesen wird, wenn die Shell des SFTP-Benutzers auf False gesetzt ist. (Die nologin-Shell stellt sicher, dass der Benutzer nur SFTP verwenden kann und keine anderen Anmeldeberechtigungen hat.) Dieser Wert kann je nach Version des Betriebssystems variieren.

Beispiel-Playbook

---
- name: test-playbook | Test sftp-server Rolle
  hosts: all
  become: yes
  become_user: root
  vars:
    - sftp_users:
      - name: peter
        password: "$1$salty$li5TXAa2G6oxHTDkqx3Dz/" # passpass
        shell: False
        sftp_directories:
        - verzeichnis_nur_für_peter1
        - verzeichnis_nur_für_peter2
      - name: sally
        password: ""
        authorized: [sally.pub]
        home: /var/tmp/sally
        append: True
    - sftp_directories:
      - imports
      - exports
      - { name: public, mode: 755 }
      - andere
  roles:
    - sftp-server

Lizenz

Diese Ansible-Rolle wird unter der MIT-Lizenz verteilt. Weitere Details finden Sie in der LICENSE-Datei.

Spenden

Spenden sind sehr willkommen und können an die folgenden Adressen gesendet werden:

  • BTC: 1AWHJcUBha35FnuuWat9urRW2FNc4ftztv
  • ETH: 0xAF1Aac4c40446F4C46e55614F14d9b32d712ECBc
Über das Projekt

Setup chrooted SFTP service on top of OpenSSH

Installieren
ansible-galaxy install nephosolutions.sftp_server
GitHub Repository
Lizenz
mit
Downloads
714
Besitzer
ICT Consultancy & Services – DevOps & Cloud Architects