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 utiliseraopenssl
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.