apham0001.pure_ftpd

Pure-FTPd

Eine Ansible-Rolle, die Pure-FTPd auf Debian/Ubuntu installiert.

Anforderungen

Diese Rolle hat nur Anforderungen, wenn die TLS-Unterstützung aktiviert wird und ein Zertifikat generiert werden muss.

Wenn der Wert von pureftpd_tls_certificate_method auf generate gesetzt ist, muss openssl auf dem Server installiert sein.

Wenn der Wert von pureftpd_tls_certificate_method auf certbot gesetzt ist, sollte certbot auf dem Remote-Server verfügbar sein. Du kannst geerlingguy.certbot verwenden, um es zu installieren.

Rollenvariablen

Verfügbare Variablen sind unten aufgeführt, zusammen mit Standardwerten (siehe defaults/main.yml):

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

Liste der Pakete, die mit APT installiert werden sollen.

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

Eigenschaften für die globale Konfiguration von Pure-FTPd. Diese werden verwendet, um /etc/default/pure-ftpd-common zu generieren. Du kannst mehr über diese Optionen in templates/pure-ftpd-common.j2 lesen.

pureftpd_fortune: ''

Nachricht, die beim Login des Benutzers angezeigt wird.

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

Diese Eigenschaft setzt die Konfiguration, die für die Speicherung von virtuellen Benutzern auf einem MySQL-Server benötigt wird. Weitere Informationen zu diesen Konfigurationen findest du in der Pure-FTPd-Dokumentation.

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'

Diese Eigenschaft setzt die Konfiguration, die für die Speicherung von virtuellen Benutzern auf einem PostgreSQL-Server benötigt wird. Weitere Informationen zu diesen Konfigurationen findest du in der Pure-FTPd-Dokumentation.

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

Diese Eigenschaft setzt die Konfiguration, die für die Speicherung von virtuellen Benutzern auf einem LDAP-Server benötigt wird. Weitere Informationen zu diesen Konfigurationen findest du in der Pure-FTPd-Dokumentation.

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 der Konfigurationsoptionen für Pure-FTPd. Weitere Informationen zu diesen Konfigurationen findest du in der Pure-FTPd-Dokumentation.

Die TLS-Option hat vier mögliche Werte (von 0 bis 3). Dieser Wert bedeutet:

  • 0: Unterstützung für SSL/TLS ist deaktiviert.
  • 1: Clients können entweder auf herkömmliche Weise oder über eine SSL/TLS-Schicht verbinden.
  • 2: Klartext-Sitzungen werden abgelehnt und nur SSL/TLS-kompatible Clients werden akzeptiert.
  • 3: Klartext-Sitzungen werden abgelehnt und nur SSL/TLS-kompatible Clients werden akzeptiert. Klare Datenverbindungen werden ebenfalls abgelehnt, sodass private Datenverbindungen durchgesetzt werden.

Weitere Informationen findest du in der Pure-FTPd-Dokumentation.

pureftpd_auth_puredb: 10
pureftpd_auth_mysql: 0
pureftpd_auth_postgresql: 0
pureftpd_auth_ldap: 0
pureftpd_auth_pam: 80
pureftpd_auth_unix: 90

Diese Eigenschaften setzen die Priorität der verschiedenen Authentifizierungsmethoden. Nur die mit einem Wert größer als 0 werden aktiviert.

pureftpd_system_users:
  - name: user1
    password: <verschlüsseltes Passwort>
    homedir: /var/ftp/user1

Liste der Benutzer, die im System vorhanden sein sollten. Das Passwort eines Systembenutzers sollte verschlüsselt sein. Siehe die Ansible-Dokumentation zu wie man verschlüsselte Passwörter generiert.

pureftpd_system_deleted_users:
  - name: user2

Liste der Benutzer, die nicht im System vorhanden sein sollten. Dies ist nützlich, um alte FTP-Konten im System zu löschen.

pureftpd_virtual_users_user: ftp
pureftpd_virtual_users_group: ftp

Wenn der Pure-FTPd-Server virtuelle Benutzer verwenden soll, benötigt er mindestens einen Systembenutzer und die entsprechende Gruppe.

pureftpd_virtual_users_gid: ''
pureftpd_virtual_users_uid: ''

Diese Eigenschaften setzen eine UID und GID dafür. Sie sind standardmäßig nicht definiert.

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 der virtuellen Benutzer, die mit PureDB als Speicher-Methode erstellt werden sollen. name, password und homedir sind Pflichtangaben.

pureftpd_virtual_deleted_users:
  - name: vuser2

Liste der Benutzer, die nicht in der PureDB-Datenbank vorhanden sein sollten. Dies ist nützlich, um alte FTP-Konten zu löschen.

pureftpd_virtual_users_import: false

Mit dieser Eigenschaft aktiviert, wird die Rolle die Systembenutzer als virtuelle Benutzer importieren.

Es sollte beachtet werden, dass nur Konten, die Shell-Zugriff haben, importiert werden. Konten mit der Shell, die auf nologin gesetzt ist, müssen manuell hinzugefügt werden.

pureftpd_tls_certificate_method: ''

Diese Eigenschaft hat drei gültige Werte:

  • certbot: Diese Option verwendet certbot, um ein Let's Encrypt-Zertifikat anzufordern.

  • generate: Diese Option verwendet openssl, um ein selbstsigniertes Zertifikat zu erstellen.

  • upload: Diese Option lädt ein vorhandenes Zertifikat hoch.

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

Bei Verwendung von certbot setzt dieses Wörterbuch den Pfad für den certbot-Befehl und einige benötigte Optionen für die Zertifikatsanforderung. Du musst den FQDN für das Zertifikat und die E-Mail für das Let's Encrypt-Konto festlegen. Du kannst die Schlüssellänge des Zertifikats und den Port, an dem certbot auf die Let's Encrypt-Herausforderung wartet, ändern.

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

Bei Verwendung von generate setzt dieses Wörterbuch die Optionen für den openssl-Befehl.

pureftpd_tls_certificate_file: ''
pureftpd_tls_certificate_content: ''

Bei Verwendung von upload setzen diese Optionen die Datei, die hochgeladen werden soll, oder den Inhalt der Zertifikatsdatei, die auf dem Server erstellt werden soll.

Abhängigkeiten

Keine.

Beispiel-Playbook

- hosts: webservers
  roles:
     - apham0001.pure-ftpd

Lizenz

GPLv2

Autorinformationen

Diese Rolle wurde 2017 von gcoop Cooperativa de Software Libre erstellt.

Über das Projekt

Pure-FTPd for Debian/Ubuntu

Installieren
ansible-galaxy install apham0001.pure_ftpd
GitHub Repository
Lizenz
gpl-2.0
Downloads
1.2k
Besitzer