pure_ftpd
Pure-FTPd
Роль Ansible, которая устанавливает Pure-FTPd на Debian/Ubuntu.
Требования
Эта роль имеет требования, только если поддержка TLS будет включена и вам необходимо сгенерировать сертификат.
Если значение pureftpd_tls_certificate_method
равно generate
, openssl
должен быть установлен на сервере.
Если значение pureftpd_tls_certificate_method
равно certbot
, certbot
должен быть доступен на удаленном сервере. Вы можете использовать geerlingguy.certbot
для его установки.
Переменные роли
Доступные переменные перечислены ниже вместе с их значениями по умолчанию (см. defaults/main.yml
):
pureftpd_packages:
- pure-ftpd-common
- pure-ftpd
Список пакетов для установки с помощью APT.
pureftpd_global_config_mode: standalone
pureftpd_global_config_virtualchroot: 'true'
pureftpd_global_config_uploadscript: ''
pureftpd_global_config_uploaduid: ''
pureftpd_global_config_uploadgid: ''
Свойства для глобальной конфигурации Pure-FTPd. Они используются для генерации /etc/default/pure-ftpd-common
. Дополнительную информацию об этих параметрах вы можете найти в templates/pure-ftpd-common.j2
.
pureftpd_fortune: ''
Сообщение, отображаемое при входе пользователя.
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
Эта настройка определяет конфигурацию, необходимую для хранения виртуальных пользователей на MySQL сервере. Дополнительную информацию об этих конфигурациях вы можете найти в документации 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'
Эта настройка определяет конфигурацию, необходимую для хранения виртуальных пользователей на PostgreSQL сервере. Дополнительную информацию об этих конфигурациях вы можете найти в документации 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
Эта настройка определяет конфигурацию, необходимую для хранения виртуальных пользователей на сервере LDAP. Дополнительную информацию об этих конфигурациях вы можете найти в документации 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'
Список параметров конфигурации для Pure-FTPd. Дополнительную информацию об этих конфигурациях вы можете найти в документации Pure-FTPd.
Опция TLS
имеет четыре возможных значения (от 0
до 3
). Это значение означает:
0
: поддержка SSL/TLS отключена.1
: клиенты могут подключаться традиционным способом или через SSL/TLS.2
: открытые сессии отклоняются и принимаются только совместимые с SSL/TLS клиенты.3
: открытые сессии отклоняются и принимаются только совместимые с SSL/TLS клиенты. Открытые соединения данных также отклоняются, поэтому используются только защищенные соединения.
Дополнительная информация доступна в документации Pure-FTPd.
pureftpd_auth_puredb: 10
pureftpd_auth_mysql: 0
pureftpd_auth_postgresql: 0
pureftpd_auth_ldap: 0
pureftpd_auth_pam: 80
pureftpd_auth_unix: 90
Эти свойства устанавливают приоритет различных методов аутентификации. Только те, у кого значение больше 0
, будут включены.
pureftpd_system_users:
- name: user1
password: <зашифрованный пароль>
homedir: /var/ftp/user1
Список пользователей, которые должны присутствовать в системе. Пароль системного пользователя должен быть зашифрован. Смотрите документацию Ansible о то, как генерировать зашифрованные пароли.
pureftpd_system_deleted_users:
- name: user2
Список пользователей, которые не должны присутствовать в системе. Это полезно для удаления старых FTP-учетных записей в системе.
pureftpd_virtual_users_user: ftp
pureftpd_virtual_users_group: ftp
Если сервер Pure-FTPd будет использовать виртуальных пользователей, потребуется как минимум один системный пользователь и его соответствующая группа.
pureftpd_virtual_users_gid: ''
pureftpd_virtual_users_uid: ''
Эти свойства задают UID и GID для них. По умолчанию они не определены.
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
Список виртуальных пользователей для создания с использованием PureDB в качестве метода хранения. name
, password
и homedir
обязательны.
pureftpd_virtual_deleted_users:
- name: vuser2
Список пользователей, которые не должны присутствовать в базе данных PureDB. Это полезно для удаления старых FTP-учетных записей.
pureftpd_virtual_users_import: false
При включенной этой настройке роль будет импортировать системных пользователей как виртуальных.
Следует отметить, что будут импортированы только учетные записи с доступом к оболочке. Учетные записи с оболочкой, настроенной на nologin, необходимо добавлять вручную.
pureftpd_tls_certificate_method: ''
Эта настройка имеет три допустимых значения:
certbot
: Этот вариант использует certbot для запроса сертификата Let's Encrypt.generate
: Этот вариант используетopenssl
для создания самоподписанного сертификата.upload
: Этот вариант загрузит существующий сертификат.pureftpd_tls_certificate_certbot: command: /opt/certbot/certbot-auto fqdn: ftp.example.com email: letsencrypt@example.com size: 4096 port: 80
При использовании certbot
этот словарь задает path
для команды certbot и несколько параметров, необходимых для запроса сертификата. Вам необходимо указать полное доменное имя для сертификата и адрес электронной почты для аккаунта Let's Encrypt. Вы можете изменить размер ключа сертификата и порт, на котором certbot
будет ожидать ответа Let's Encrypt.
pureftpd_tls_certificate_openssl:
size: 4096
days: 365
fqdn: ftp.example.com
country: ''
state: ''
locality: ''
organization: ''
unit: ''
При использовании generate
этот словарь задает параметры для команды openssl
.
pureftpd_tls_certificate_file: ''
pureftpd_tls_certificate_content: ''
При использовании upload
эти параметры задают файл для загрузки или содержимое файла сертификата, который необходимо создать на сервере.
Зависимости
Нет.
Пример Playbook
- hosts: webservers
roles:
- apham0001.pure-ftpd
Лицензия
GPLv2
Информация об авторе
Эта роль была создана в 2017 году gcoop Cooperativa de Software Libre.
ansible-galaxy install apham0001/ansible-role-pure-ftpd