apham0001.pure_ftpd
Pure-FTPd
Un rol de Ansible que instala Pure-FTPd en Debian/Ubuntu.
Requisitos
Este rol solo tiene requisitos si se va a habilitar el soporte TLS y necesitas generar el certificado.
Si el valor de pureftpd_tls_certificate_method
es generate
, openssl
debe estar instalado en el servidor.
Si el valor de pureftpd_tls_certificate_method
es certbot
, certbot
debe estar disponible en el servidor remoto. Puedes usar geerlingguy.certbot
para instalarlo.
Variables del Rol
Las variables disponibles se enumeran a continuación, junto con sus valores predeterminados (ver defaults/main.yml
):
pureftpd_packages:
- pure-ftpd-common
- pure-ftpd
Lista de paquetes a instalar con APT.
pureftpd_global_config_mode: standalone
pureftpd_global_config_virtualchroot: 'true'
pureftpd_global_config_uploadscript: ''
pureftpd_global_config_uploaduid: ''
pureftpd_global_config_uploadgid: ''
Propiedades para la configuración global de Pure-FTPd. Se utilizan para generar /etc/default/pure-ftpd-common
. Puedes leer más sobre estas opciones en templates/pure-ftpd-common.j2
.
pureftpd_fortune: ''
Mensaje que se mostrará al iniciar sesión del usuario.
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
Esta propiedad establece la configuración necesaria para el almacenamiento de usuarios virtuales en un servidor MySQL. Hay más información sobre estas configuraciones en documentación de 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'
Esta propiedad establece la configuración necesaria para el almacenamiento de usuarios virtuales en un servidor PostgreSQL. Hay más información sobre estas configuraciones en documentación de 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
Esta propiedad establece la configuración necesaria para el almacenamiento de usuarios virtuales en un servidor LDAP. Hay más información sobre estas configuraciones en documentación de 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 de opciones de configuración para Pure-FTPd. Hay más información sobre estas configuraciones en documentación de Pure-FTPd.
La opción TLS
tiene cuatro valores posibles (de 0
a 3
). Este valor implica:
0
: el soporte para SSL/TLS está deshabilitado.1
: los clientes pueden conectarse de la manera tradicional o a través de una capa SSL/TLS.2
: las sesiones de texto claro son rechazadas y solo se aceptan clientes compatibles con SSL/TLS.3
: las sesiones de texto claro son rechazadas y solo se aceptan clientes compatibles con SSL/TLS. Las conexiones de datos en claro también son rechazadas, por lo que se imponen conexiones de datos privadas.
Hay más información disponible en documentación de 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
Estas propiedades establecen la prioridad de los diferentes métodos de autenticación. Solo aquellos con un valor mayor a 0
estarán habilitados.
pureftpd_system_users:
- name: user1
password: <contraseña encriptada>
homedir: /var/ftp/user1
Lista de usuarios que deben estar presentes en el sistema. La contraseña de un usuario del sistema debe estar encriptada. Consulta la documentación de Ansible sobre cómo generar contraseñas encriptadas.
pureftpd_system_deleted_users:
- name: user2
Lista de usuarios que no deben estar presentes en el sistema. Esto es útil para eliminar cuentas FTP antiguas en el sistema.
pureftpd_virtual_users_user: ftp
pureftpd_virtual_users_group: ftp
Si el servidor Pure-FTPd usará usuarios virtuales, necesita al menos un usuario del sistema y su grupo correspondiente.
pureftpd_virtual_users_gid: ''
pureftpd_virtual_users_uid: ''
Estas propiedades obligan a un UID y GID para ellos. No están definidos por defecto.
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 de usuarios virtuales a crear usando PureDB como método de almacenamiento. name
, password
y homedir
son obligatorios.
pureftpd_virtual_deleted_users:
- name: vuser2
Lista de usuarios que no deben estar presentes en la base de datos de PureDB. Esto es útil para eliminar cuentas FTP antiguas.
pureftpd_virtual_users_import: false
Con esta propiedad habilitada, el rol importará a los usuarios del sistema como usuarios virtuales.
Se debe tener en cuenta que solo se importarán cuentas que tengan acceso a la shell. Las cuentas con la shell configurada en nologin deben añadirse manualmente.
pureftpd_tls_certificate_method: ''
Esta propiedad tiene tres valores válidos:
certbot
: esta opción usará certbot para solicitar un certificado de Let's Encrypt.generate
: esta opción usaráopenssl
para crear un certificado autofirmado.upload
: esta opción subirá un certificado existente.pureftpd_tls_certificate_certbot: command: /opt/certbot/certbot-auto fqdn: ftp.example.com email: letsencrypt@example.com size: 4096 port: 80
Al usar certbot
, este diccionario establece la ruta
para el comando certbot y algunas opciones necesarias para la solicitud de certificado. Necesitas establecer el FQDN para el certificado y el correo electrónico para la cuenta de Let's Encrypt. Puedes cambiar el tamaño de la clave del certificado y el puerto donde certbot
esperará el desafío de Let's Encrypt.
pureftpd_tls_certificate_openssl:
size: 4096
days: 365
fqdn: ftp.example.com
country: ''
state: ''
locality: ''
organization: ''
unit: ''
Al usar generate
, este diccionario establece las opciones para el comando openssl
.
pureftpd_tls_certificate_file: ''
pureftpd_tls_certificate_content: ''
Al usar upload
, estas opciones establecen el archivo a subir o el contenido del archivo del certificado a crear en el servidor.
Dependencias
Ninguna.
Ejemplo de Playbook
- hosts: webservers
roles:
- apham0001.pure-ftpd
Licencia
GPLv2
Información del Autor
Este rol fue creado en 2017 por gcoop Cooperativa de Software Libre.
ansible-galaxy install apham0001.pure_ftpd