gcoop-libre.pure-ftpd

Pure-FTPd

Un rôle Ansible qui installe Pure-FTPd sur Debian/Ubuntu.

Exigences

Ce rôle n'a des exigences que si le support TLS est activé et que vous devez générer le certificat.

Si la valeur de pureftpd_tls_certificate_method est generate, openssl doit être installé sur le serveur.

Si la valeur de pureftpd_tls_certificate_method est certbot, certbot doit être disponible sur le serveur distant. Vous pouvez utiliser geerlingguy.certbot pour l'installer.

Variables de rôle

Les variables disponibles sont listées ci-dessous, avec les valeurs par défaut (voir defaults/main.yml):

pureftpd_packages:
  - pure-ftpd-common
  - pure-ftpd

Liste des paquets à installer avec APT.

pureftpd_global_config_mode: standalone
pureftpd_global_config_virtualchroot: 'true'
pureftpd_global_config_uploadscript: ''
pureftpd_global_config_uploaduid: ''
pureftpd_global_config_uploadgid: ''

Propriétés pour la configuration globale de Pure-FTPd. Elles sont utilisées pour générer /etc/default/pure-ftpd-common. Vous pouvez en lire plus sur ces options dans templates/pure-ftpd-common.j2.

pureftpd_fortune: ''

Message à afficher lors de la connexion des utilisateurs.

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

Cette propriété configure le stockage des utilisateurs virtuels sur un serveur MySQL. Vous trouverez plus d'informations sur cette configuration dans la documentation 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'

Cette propriété configure le stockage des utilisateurs virtuels sur un serveur PostgreSQL. Vous trouverez plus d'informations sur cette configuration dans la documentation 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

Cette propriété configure le stockage des utilisateurs virtuels sur un serveur LDAP. Vous trouverez plus d'informations sur cette configuration dans la documentation 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'

Liste des options de configuration pour Pure-FTPd. Vous trouverez plus d'informations sur cette configuration dans la documentation de Pure-FTPd.

L'option TLS a quatre valeurs possibles (de 0 à 3). Ces valeurs impliquent :

  • 0: le support pour SSL/TLS est désactivé.
  • 1: les clients peuvent se connecter soit de manière traditionnelle, soit via une couche SSL/TLS.
  • 2: les sessions en texte clair sont refusées et seuls les clients compatibles SSL/TLS sont acceptés.
  • 3: les sessions en texte clair sont refusées et seuls les clients compatibles SSL/TLS sont acceptés. Les connexions de données en clair sont également refusées, donc des connexions de données privées sont appliquées.

Vous trouverez plus d'informations dans la documentation 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

Ces propriétés définissent la priorité des différentes méthodes d'authentification. Seules celles avec une valeur supérieure à 0 seront activées.

pureftpd_system_users:
  - name: user1
    password: p4ssW0rd
    homedir: /var/ftp/user1

Liste des utilisateurs qui doivent être présents sur le système.

pureftpd_system_deleted_users:
  - name: user2

Liste des utilisateurs qui ne doivent pas être présents sur le système. Cela est utile pour supprimer d'anciens comptes FTP sur le système.

pureftpd_virtual_users_user: ftp
pureftpd_virtual_users_group: ftp

Si le serveur Pure-FTPd utilise des utilisateurs virtuels, il a besoin d'au moins un utilisateur système et son groupe correspondant.

pureftpd_virtual_users_gid: ''
pureftpd_virtual_users_uid: ''

Ces propriétés forcent un UID et un GID pour eux. Ils ne sont pas définis par défaut.

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

Liste des utilisateurs virtuels à créer en utilisant PureDB comme méthode de stockage. name, password et homedir sont obligatoires.

pureftpd_virtual_deleted_users:
  - name: vuser2

Liste des utilisateurs qui ne doivent pas être présents dans la base de données PureDB. Cela est utile pour supprimer d'anciens comptes FTP.

pureftpd_virtual_users_import: false

Avec cette propriété activée, le rôle importera les utilisateurs système en tant qu'utilisateurs virtuels.

Il est à noter que seuls les comptes ayant accès au shell seront importés. Les comptes avec le shell configuré sur nologin doivent être ajoutés manuellement.

pureftpd_tls_certificate_method: ''

Cette propriété a trois valeurs valides :

  • certbot: Cette option utilisera certbot pour demander un certificat Let's Encrypt.

  • generate: Cette option utilisera openssl pour créer un certificat auto-signé.

  • upload: Cette option téléversera un certificat existant.

    pureftpd_tls_certificate_certbot: command: /opt/certbot/certbot-auto fqdn: ftp.example.com email: letsencrypt@example.com size: 4096 port: 80

Lors de l'utilisation de certbot, ce dictionnaire définit le path pour la commande certbot et quelques options nécessaires pour la demande de certificat. Vous devez définir le FQDN pour le certificat et l'e-mail pour le compte Let's Encrypt. Vous pouvez changer la taille de la clé du certificat et le port où certbot attendra le défi Let's Encrypt.

pureftpd_tls_certificate_openssl:
  size: 4096
  days: 365
  fqdn: ftp.example.com
  country: ''
  state: ''
  locality: ''
  organization: ''
  unit: ''

Lors de l'utilisation de generate, ce dictionnaire définit les options pour la commande openssl.

pureftpd_tls_certificate_file: ''
pureftpd_tls_certificate_content: ''

Lors de l'utilisation de upload, ces options définissent le fichier à téléverser ou le contenu du fichier de certificat à créer sur le serveur.

Dépendances

Aucune.

Exemple de Playbook

- hosts: webservers
  roles:
     - gcoop-libre.pure-ftpd

Licence

GPLv2

Informations sur l'auteur

Ce rôle a été créé en 2017 par gcoop Cooperativa de Software Libre.

À propos du projet

Pure-FTPd for Debian/Ubuntu

Installer
ansible-galaxy install gcoop-libre.pure-ftpd
Licence
gpl-2.0
Téléchargements
143