nephosolutions.sftp_server
SFTP-Server
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.
- Werte können einfache Strings oder Dictionaries mit
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 dersftp_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 mitpassword: ""
gesetzt werden. HINWEIS: Es scheint, dassUsePAM yes
undPermitEmptyPassword yes
insshd_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 aufTrue
).authorized
: Eine optionale Liste von Dateien infiles/
, 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, umsftp_group_name
zu den Benutzergruppen (sofern vorhanden) hinzuzufügen, anstatt es festzulegen (standardmäßig aufFalse
).mode
: Der Modus des Home-Verzeichnisses des Benutzers (standardmäßig0750
).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 aufsftp_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
ansible-galaxy install nephosolutions.sftp_server