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.

Acerca del proyecto

Pure-FTPd for Debian/Ubuntu

Instalar
ansible-galaxy install apham0001.pure_ftpd
Licencia
gpl-2.0
Descargas
1.2k
Propietario