apham0001.pure_ftpd
Pure-FTPd
Rola Ansible, która instaluje Pure-FTPd na systemach Debian/Ubuntu.
Wymagania
Ta rola ma wymagania tylko wtedy, gdy włączona zostanie obsługa TLS i musisz wygenerować certyfikat.
- Jeśli wartość
pureftpd_tls_certificate_method
togenerate
,openssl
musi być zainstalowany na serwerze. - Jeśli wartość
pureftpd_tls_certificate_method
tocertbot
,certbot
powinien być dostępny na zdalnym serwerze. Możesz użyćgeerlingguy.certbot
, aby go zainstalować.
Zmienne roli
Dostępne zmienne są wymienione poniżej, wraz z wartościami domyślnymi (zobacz defaults/main.yml
):
pureftpd_packages
:- pure-ftpd-common
- pure-ftpd
Lista pakietów do zainstalowania za pomocą APT.
pureftpd_global_config_mode
: standalonepureftpd_global_config_virtualchroot
: 'true'pureftpd_global_config_uploadscript
: ''pureftpd_global_config_uploaduid
: ''pureftpd_global_config_uploadgid
: ''
Właściwości do globalnej konfiguracji Pure-FTPd. Służą do generowania /etc/default/pure-ftpd-common
. Możesz przeczytać więcej o tych opcjach w templates/pure-ftpd-common.j2
.
pureftpd_fortune
: ''
Wiadomość wyświetlana po zalogowaniu użytkownika.
pureftpd_mysql
:- server: localhost
- port: 3306
- socket: /var/run/mysqld/mysqld.sock
- username: dbuser
- password: dbpass
- database: dbname
- crypt: crypt
- query_get_pw: SELECT Password FROM users WHERE User="\L"
- query_get_dir: SELECT Dir FROM users WHERE User="\L"
- query_get_uid: SELECT Uid FROM users WHERE User="\L"
- default_uid: 1000
- query_get_gid: SELECT Gid FROM users WHERE User="\L"
- default_gid: 1000
- query_get_qta_fs: SELECT QuotaFiles FROM users WHERE User="\L"
- query_get_qta_sz: SELECT QuotaSize FROM users WHERE User="\L"
- query_get_ratio_ul: SELECT ULRatio FROM users WHERE User="\L"
- query_get_ratio_dl: SELECT DLRatio FROM users WHERE User="\L"
- query_get_bandwidth_ul: SELECT ULBandwidth FROM users WHERE User="\L"
- query_get_bandwidth_dl: SELECT DLBandwidth FROM users WHERE User="\L"
- force_tilde_expansion: true
- transactions: true
Ta właściwość ustawia konfigurację potrzebną do przechowywania wirtualnych użytkowników na serwerze MySQL. Więcej informacji na temat tych konfiguracji można znaleźć w dokumentacji Pure-FTPd.
pureftpd_postgresql
:- server: localhost
- port: 5432
- username: dbuser
- password: dbpass
- database: dbname
- crypt: crypt
- query_get_pw: SELECT "Password" FROM "users" WHERE "User"='\L'
- query_get_dir: SELECT "Dir" FROM "users" WHERE "User"='\L'
- query_get_uid: SELECT "Uid" FROM "users" WHERE "User"='\L'
- default_uid: 1000
- query_get_gid: SELECT "Gid" FROM "users" WHERE "User"='\L'
- default_gid: 1000
- query_get_qta_fs: SELECT "QuotaFiles" FROM "users" WHERE "User"='\L'
- query_get_qta_sz: SELECT "QuotaSize" FROM "users" WHERE "User"='\L'
- query_get_ratio_ul: SELECT "ULRatio" FROM "users" WHERE "User"='\L'
- query_get_ratio_dl: SELECT "DLRatio" FROM "users" WHERE "User"='\L'
- query_get_bandwidth_ul: SELECT "ULBandwidth" FROM "users" WHERE "User"='\L'
- query_get_bandwidth_dl: SELECT "DLBandwidth" FROM "users" WHERE "User"='\L'
Ta właściwość ustawia konfigurację potrzebną do przechowywania wirtualnych użytkowników na serwerze PostgreSQL. Więcej informacji na temat tych konfiguracji można znaleźć w dokumentacji Pure-FTPd.
pureftpd_ldap
:- ldaps: True
- tls: True
- server: ldap.example.com
- port: 389
- bind_dn: cn=Manager,dc=example,dc=com
- version: 3
- bind_password: bindpass
- base_dn: cn=Users,dc=example,dc=com
- filter: '&(objectClass=posixAccount)(uid=\L)'
- home_dir: homeDirectory
- default_uid: 1000
- force_default_uid: True
- default_gid: 1000
- force_default_gid: True
Ta właściwość ustawia konfigurację potrzebną do przechowywania wirtualnych użytkowników na serwerze LDAP. Więcej informacji na temat tych konfiguracji można znaleźć w dokumentacji Pure-FTPd.
pureftpd_config
:- AllowAnonymousFXP: 'no'
- AllowUserFXP: 'no'
- AltLog: 'clf:/var/log/pure-ftpd/transfer.log'
- AnonymousBandwidth: '8'
- AnonymousCanCreateDirs: 'no'
- AnonymousCantUpload: 'yes'
- AnonymousOnly: 'no'
- AnonymousRatio: '1 10'
- AntiWarez: 'yes'
- AutoRename: 'no'
- Bind: '127.0.0.1,21'
- BrokenClientsCompatibility: 'no'
- CallUploadScript: 'yes'
- ChrootEveryone: 'yes'
- ClientCharset: 'UTF-8'
- CreateHomeDir: 'yes'
- CustomerProof: 'yes'
- Daemonize: 'yes'
- DisplayDotFiles: 'yes'
- DontResolve: 'yes'
- ExtAuth: /var/run/ftpd.sock
- ForcePassiveIP: '192.168.0.1'
- FortunesFile: '/etc/pure-ftpd/cookie'
- FSCharset: 'utf8'
- IPV4Only: 'yes'
- IPV6Only: 'yes'
- KeepAllFiles: 'yes'
- LDAPConfigFile: /etc/pureftpd-ldap.conf
- LimitRecursion: '10000 8'
- LogPID: 'yes'
- MaxClientsNumber: '10'
- MaxClientsPerIP: "{{ ansible_processor_cores }}"
- MaxDiskUsage: '80'
- MaxIdleTime: '15'
- MaxLoad: '4'
- MinUID: '1000'
- MySQLConfigFile: /etc/pure-ftpd/mysql.conf
- NoAnonymous: 'yes'
- NoChmod: 'yes'
- NoRename: 'yes'
- NoTruncate: 'yes'
- PAMAuthentication: 'no'
- PassivePortRange: '30000 50000'
- PerUserLimits: '3 20'
- PGSQLConfigFile: /etc/pureftpd-pgsql.conf
- PIDFile: '/var/run/pure-ftpd.pid'
- ProhibitDotFilesRead: 'yes'
- ProhibitDotFilesWrite: 'yes'
- PureDB: /etc/pure-ftpd/pureftpd.pdb
- Quota: '1000 10'
- SyslogFacility: 'ftp'
- TLS: '0'
- TLSCipherSuite: 'ALL:!aNULL:!SSLv3'
- TrustedIP: '10.1.1.1'
- Umask: '113 002'
- UnixAuthentication: 'no'
- UserBandwidth: '8'
- UserRatio: '1 10'
- VerboseLog: 'no'
Lista opcji konfiguracyjnych dla Pure-FTPd. Więcej informacji na temat tych konfiguracji można znaleźć w dokumentacji Pure-FTPd.
Opcja TLS
ma cztery możliwe wartości (od 0
do 3
), które oznaczają:
0
: wsparcie dla SSL/TLS jest wyłączone.1
: klienci mogą łączyć się tradycyjnie lub przez warstwę SSL/TLS.2
: sesje wprost są odrzucane, akceptowane są tylko klienci zgodni z SSL/TLS.3
: sesje wprost są odrzucane, akceptowane są tylko klienci zgodni z SSL/TLS. Sesje z danymi wprost są również odrzucane, więc wymusza się prywatne połączenia danych.
Więcej informacji można znaleźć w dokumentacji Pure-FTPd.
pureftpd_auth_puredb
: 10pureftpd_auth_mysql
: 0pureftpd_auth_postgresql
: 0pureftpd_auth_ldap
: 0pureftpd_auth_pam
: 80pureftpd_auth_unix
: 90
Te właściwości ustalają priorytet różnych metod uwierzytelniania. Tylko te z wartością większą niż 0
będą włączone.
pureftpd_system_users
:- name: user1 password: <szyfrowane hasło> homedir: /var/ftp/user1
Lista użytkowników, którzy powinni być obecni w systemie. Hasło użytkownika systemowego powinno być zaszyfrowane. Zobacz dokumentację Ansible o tym, jak generować szyfrowane hasła.
pureftpd_system_deleted_users
:- name: user2
Lista użytkowników, którzy nie powinni być obecni w systemie. To jest przydatne do usuwania starych kont FTP z systemu.
pureftpd_virtual_users_user
: ftppureftpd_virtual_users_group
: ftp
Jeśli serwer Pure-FTPd będzie korzystał z użytkowników wirtualnych, potrzebny jest co najmniej jeden użytkownik systemowy oraz odpowiadająca mu grupa.
pureftpd_virtual_users_gid
: ''pureftpd_virtual_users_uid
: ''
Te właściwości wymuszają UID i GID dla nich. Nie są domyślnie zdefiniowane.
pureftpd_virtual_users
:- name: vuser1 password: p4ssW0rd homedir: /var/ftp/vuser1 uid: 2000 gid: 2000 quota_files: 2000 quota_size: 500 bandwidth_ul: 5 bandwidth_dl: 5 ratio_ul: 10 ratio_dl: 1
Lista użytkowników wirtualnych, którzy mają być utworzeni przy użyciu PureDB jako metoda przechowywania. name
, password
i homedir
są obowiązkowe.
pureftpd_virtual_deleted_users
:- name: vuser2
Lista użytkowników, którzy nie powinni być obecni w bazie danych PureDB. To jest przydatne do usuwania starych kont FTP.
pureftpd_virtual_users_import
: false
Przy włączonej tej właściwości, rola zaimportuje użytkowników systemowych jako użytkowników wirtualnych.
Należy zauważyć, że tylko konta, które mają dostęp do powłoki, będą importowane. Konta z ustawioną powłoką na nologin muszą być dodane ręcznie.
pureftpd_tls_certificate_method
: ''
Ta właściwość ma trzy ważne wartości:
certbot
: Ta opcja użyje certbot do żądania certyfikatu Let's Encrypt.generate
: Ta opcja użyjeopenssl
do stworzenia certyfikatu selfsigned.upload
: Ta opcja załaduje istniejący certyfikat.pureftpd_tls_certificate_certbot
:- command: /opt/certbot/certbot-auto
- fqdn: ftp.example.com
- email: letsencrypt@example.com
- size: 4096
- port: 80
Podczas korzystania z certbot
, ten słownik ustawia ścieżkę
dla komendy certbot oraz kilka opcji potrzebnych do żądania certyfikatu. Należy ustawić FQDN dla certyfikatu oraz email dla konta Let's Encrypt. Możesz zmienić rozmiar klucza certyfikatu oraz port, na którym certbot
będzie czekać na wyzwanie Let's Encrypt.
pureftpd_tls_certificate_openssl
:- size: 4096
- days: 365
- fqdn: ftp.example.com
- country: ''
- state: ''
- locality: ''
- organization: ''
- unit: ''
Podczas korzystania z generate
, ten słownik ustawia opcje dla komendy openssl
.
pureftpd_tls_certificate_file
: ''pureftpd_tls_certificate_content
: ''
Podczas korzystania z upload
, te opcje ustalają plik do załadowania lub zawartość pliku certyfikatu, który ma być utworzony na serwerze.
Zależności
Brak.
Przykład playbooka
- hosts: webservers
roles:
- apham0001.pure-ftpd
Licencja
GPLv2
Informacje o autorze
Ta rola została stworzona w 2017 roku przez gcoop Cooperativa de Software Libre.
ansible-galaxy install apham0001.pure_ftpd