nephosolutions.sftp_server
Serwer SFTP
Jest to rola Ansible, która konfiguruje serwer OpenSSH do dostępu SFTP w trybie chroot. Rola została zbudowana w taki sposób, aby nie wprowadzać niepotrzebnych zmian w dostosowaniach OpenSSH użytkowników. Zmienia tylko te kluczowe elementy, które są potrzebne, i dodaje resztę konfiguracji w formie niestandardowego bloku konfiguracyjnego (brak wsparcia dla niektórej formy conf.d/ w OpenSSH zmusza do takiego działania).
Wymagania
Zaleca się, aby scp_if_ssh
było ustawione na true
w sekcji ssh_connection
w pliku ansible.cfg
, ponieważ Ansible domyślnie wykorzystuje SFTP do transferów plików, i można łatwo zablokować sobie dostęp do SFTP swojego serwera przy użyciu tej roli. Opcja SCP będzie nadal działać. Przykład konfiguracji:
; ansible.cfg
...
[ssh_connection]
scp_if_ssh=True
Poza tym wymagana jest tylko sama Ansible. Testowano z użyciem Ansible 2.0.2.0, 2.2.2.0 oraz 2.3.0.0. Działa na Ubuntu 14.04 i 16.04, nie testowano na innych wersjach. Przeprowadzono pewne prace nad wspieraniem RHEL, chociaż obecnie nie jest to oficjalnie wspierane przez oryginalnego autora (oczywiście dalsze wkłady są mile widziane ;-)
Zmienne roli
Poniższe zmienne roli są istotne:
sftp_home_partition
: Partycja, na której będą znajdować się katalogi domowe użytkowników SFTP. Domyślnie to "/home".sftp_group_name
: Nazwa grupy Unix, do której muszą należeć wszyscy użytkownicy SFTP. Domyślnie to "sftpusers".sftp_directories
: Lista katalogów, które mają być automatycznie tworzone domyślnie dla wszystkich użytkowników SFTP. Domyślnie jest to pusta lista (tzn. "[]").- Wartości mogą być zwykłymi ciągami lub słownikami zawierającymi pary klucz/wartość
name
i (opcjonalnie)mode
.
- Wartości mogą być zwykłymi ciągami lub słownikami zawierającymi pary klucz/wartość
sftp_start_directory
: Katalog, który musi być częścią wartościsftp_directories
i który jest katalogiem startowym nowego połączenia SFTP. Domyślnie wyłączone, z pustą wartością.sftp_allow_passwords
: Czy zezwolić na uwierzytelnianie za pomocą hasła w SFTP. Domyślnie to Fałsz.sftp_enable_selinux_support
: Czy explicite włączyć wsparcie dla SELinux. Domyślnie to Fałsz.sftp_enable_logging
: Włącz logowanie. Dzienniki uwierzytelniania będą zapisywane w/var/log/sftp/auth.log
, a dzienniki aktywności SFTP w/var/log/sftp/verbose.log
. Domyślnie to Fałsz.sftp_users
: Lista użytkowników w formie mapy, zawierająca następujące elementy:name
: Nazwa Unix użytkownika, który potrzebuje dostępu do SFTP.group
: Opcjonalna główna grupa użytkownika. Jeśli ustawiona, będzie używana do uprawnień katalogu domowego użytkownika. W przeciwnym razie używana jestsftp_group_name
.password
: Hash hasła dla użytkownika do logowania - np.openssl passwd -1 -salt salty passpass
. Puste hasła można ustawić za pomocąpassword: ""
. UWAGA: Wydaje się, żeUsePAM yes
iPermitEmptyPassword yes
muszą być ustawione wsshd_config
, aby puste hasła działały prawidłowo. Wprowadzenie tych zmian pozostaje obecnie poza zasięgiem tej roli i należy je wykonać zewnętrznie.shell
: Boolean wskazujący, czy użytkownik powinien mieć dostęp do powłoki (domyślnieTrue
).authorized
: Opcjonalna lista plików umieszczonych wfiles/
, które zawierają ważne klucze publiczne dla użytkownika SFTP.sftp_directories
: Lista katalogów, które mają być indywidualnie tworzone dla użytkownika SFTP. Domyślnie to pusta lista (tzn. "[]").append
: Boolean do dodawaniasftp_group_name
do grup użytkowników (jeśli są) zamiast ustawiania go (domyślnieFalse
).mode
: Tryb katalogu domowego użytkowników (domyślnie0750
).skeleton
: Opcjonalny katalog szkieletowy dla domowego (np. /dev/null). Domyślnie ustawione na systemowe domyślne wartości.home
: Opcjonalny katalog domowy (np. /home/bob). Domyślniesftp_home_partition/name
.
sftp_nologin_shell
: Shell "nologin" dla użytkownika. (domyślnie /sbin/nologin.)
Uwagi:
- Ustawienie
sftp_nologin_shell
definiuje powłokę przypisaną dosftp_users
, gdy powłoka użytkownika SFTP jest ustawiona na Fałsz. (Powłoka nologin zapewnia, że użytkownik może korzystać tylko z SFTP i nie ma innych uprawnień do logowania.) Ta wartość może się różnić w zależności od wersji systemu operacyjnego.
Przykład Playbooka
---
- name: test-playbook | Test roli sftp-server
hosts: all
become: yes
become_user: root
vars:
- sftp_users:
- name: peter
password: "$1$salty$li5TXAa2G6oxHTDkqx3Dz/" # passpass
shell: False
sftp_directories:
- katalog_tylko_dla_petera1
- katalog_tylko_dla_petera2
- name: sally
password: ""
authorized: [sally.pub]
home: /var/tmp/sally
append: True
- sftp_directories:
- imports
- exports
- { name: public, mode: 755 }
- inny
roles:
- sftp-server
Licencja
Ta rola Ansible jest dystrybuowana na podstawie licencji MIT. Zobacz plik LICENSE po więcej szczegółów.
Darowizny
Darowizny są bardzo mile widziane i mogą być dokonywane na następujące adresy:
- BTC: 1AWHJcUBha35FnuuWat9urRW2FNc4ftztv
- ETH: 0xAF1Aac4c40446F4C46e55614F14d9b32d712ECBc
ansible-galaxy install nephosolutions.sftp_server