apham0001.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 du Rôle

Les variables disponibles sont énuméré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 lire plus sur ces options dans templates/pure-ftpd-common.j2.

pureftpd_fortune: ''

Message à afficher lors de la connexion d'un utilisateur.

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é définit la configuration nécessaire pour le stockage des utilisateurs virtuels sur un serveur MySQL. Vous pouvez trouver plus d'informations sur ces configurations 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é définit la configuration nécessaire pour le stockage des utilisateurs virtuels sur un serveur PostgreSQL. Vous pouvez trouver plus d'informations sur ces configurations 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é définit la configuration nécessaire pour le stockage des utilisateurs virtuels sur un serveur LDAP. Vous pouvez trouver plus d'informations sur ces configurations 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 pouvez trouver plus d'informations sur ces configurations dans la documentation de Pure-FTPd.

L'option TLS a quatre valeurs possibles (de 0 à 3). Cette valeur implique :

  • 0: le support SSL/TLS est désactivé.
  • 1: les clients peuvent se connecter de manière traditionnelle ou via une couche SSL/TLS.
  • 2: les sessions en clair sont refusées et seuls les clients compatibles SSL/TLS sont acceptés.
  • 3: les sessions en 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 les connexions de données privées sont obligatoires.

Plus d'informations sont disponibles 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: <mot de passe chiffré>
    homedir: /var/ftp/user1

Liste des utilisateurs qui devraient être présents sur le système. Le mot de passe d'un utilisateur système doit être chiffré. Consultez la documentation d'Ansible sur comment générer des mots de passe chiffrés.

pureftpd_system_deleted_users:
  - name: user2

Liste des utilisateurs qui ne devraient 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 de 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 devraient 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 convient de noter que seuls les comptes ayant un accès shell seront importés. Les comptes avec un shell défini 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échargera 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 fixe 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'email 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 de 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 fixe 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écharger ou le contenu du fichier certificat à créer sur le serveur.

Dépendances

Aucune.

Exemple de Playbook

- hosts: webservers
  roles:
     - apham0001.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 apham0001.pure_ftpd
Licence
gpl-2.0
Téléchargements
1.2k
Propriétaire