johanmeiring.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 gebaut, dass sie die Anpassungen eines Benutzers in OpenSSH nicht unnötig verändert. Stattdessen ändert sie nur die wichtigen Einstellungen, die sie benötigt, und fügt den Rest ihrer Konfiguration als benutzerdefinierte Konfigurationsblöcke hinzu (der Mangel an einer Art von conf.d/-Unterstützung in OpenSSH zwingt zu diesem Verhalten).

Anforderungen

Es wird empfohlen, scp_if_ssh im Abschnitt ssh_connection Ihrer ansible.cfg-Datei auf true zu setzen, da Ansible standardmäßig SFTP für Dateiübertragungen verwendet, und Sie sich leicht vom SFTP-Zugriff Ihres Servers ausschließen können, wenn Sie diese Rolle verwenden. Der SCP-Fallback funktioniert weiterhin. Beispiel Konfiguration:

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

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

Rollenvariablen

Die folgenden Rollenvariablen sind relevant:

  • sftp_home_partition: Die Partition, auf der die Home-Verzeichnisse der SFTP-Benutzer liegen. Standardmäßig "/home".
  • sftp_group_name: Der Name der Unix-Gruppe, der alle SFTP-Benutzer angehören müssen. Standardmäßig "sftpusers".
  • sftp_directories: Eine Liste von Verzeichnissen, die standardmäßig für alle SFTP-Benutzer automatisch erstellt werden sollen. Standardmäßig eine leere Liste (d.h. "[]").
    • Werte können einfache Zeichenfolgen oder Wörterbücher 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 für eine neue SFTP-Verbindung ist. Standardmäßig mit einem leeren Stringwert deaktiviert.
  • sftp_allow_passwords: Ob die Passwortauthentifizierung für SFTP erlaubt ist oder nicht. Standardmäßig False.
  • sftp_enable_selinux_support: Ob die SELinux-Unterstützung explizit aktiviert werden soll oder nicht. Standardmäßig False.
  • sftp_enable_logging: Aktiviert das Logging. Authentifizierungsprotokolle werden in /var/log/sftp/auth.log geschrieben, und SFTP-Aktivitätsprotokolle werden in /var/log/sftp/verbose.log geschrieben. Standardmäßig False.
  • sftp_users: Eine Liste von Benutzern in Form von Mappings, die die folgenden Elemente enthalten:
    • name: Der Unix-Name des Benutzers, der SFTP-Zugriff benötigt.
    • group: Eine optionale Hauptgruppe des Benutzers. Wenn gesetzt, wird sie für die Berechtigung des Home-Verzeichnisses des Benutzers verwendet. Andernfalls wird der sftp_group_name verwendet.
    • password: Ein Passwort-Hash für den Benutzer zum Einloggen - z.B. 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 richtig funktionieren. Diese Änderungen fallen derzeit nicht in den Umfang 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, die in files/ abgelegt sind und gültige öffentliche Schlüssel für den SFTP-Benutzer enthalten.
    • sftp_directories: Eine Liste von Verzeichnissen, die individuell für einen SFTP-Benutzer erstellt werden müssen. Standardmäßig eine leere Liste (d.h. "[]").
    • append: Boolean, um sftp_group_name zu den Benutzergruppen hinzuzufügen (falls vorhanden), anstatt sie zu setzen (standardmäßig auf False).
    • mode: Der Modus des Home-Verzeichnisses der Benutzer (standardmäßig 0750).
    • skeleton: Ein optionales Skeleton-Verzeichnis (z.B.: /dev/null). Standardmäßig auf die Systemvorgaben.
    • home: Ein optionales Home-Verzeichnis (z.B.: /home/bob). Standardmäßig auf sftp_home_partition/name.
  • sftp_nologin_shell: Die "nologin" Benutzershell. (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 sorgt dafür, dass der Benutzer nur SFTP verwenden kann und keine anderen Anmelberechtigungen hat.) Dieser Wert kann je nach Betriebssystemversion variieren.

Beispiel-Playbook

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

Lizenz

Diese Ansible-Rolle wird unter der MIT-Lizenz verteilt. Weitere Informationen 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 johanmeiring.sftp-server
Lizenz
mit
Downloads
120.6k
Besitzer