apham0001.pure_ftpd

Pure-FTPd

Debian/UbuntuにPure-FTPdをインストールするためのAnsibleロールです。

要件

TLSサポートを有効にする場合、このロールには要求があり、証明書を生成する必要があります。

pureftpd_tls_certificate_methodの値がgenerateの場合、サーバーにopensslがインストールされている必要があります。

pureftpd_tls_certificate_methodの値がcertbotの場合、リモートサーバーにcertbotが利用可能である必要があります。geerlingguy.certbotを使用してインストールできます。

ロール変数

利用可能な変数は以下に一覧表示され、デフォルト値が記載されています(defaults/main.ymlを参照):

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

APTでインストールするパッケージのリストです。

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

Pure-FTPdのグローバル設定に必要なプロパティです。これらは/etc/default/pure-ftpd-commonを生成するために使用されます。これらのオプションについての詳細はtemplates/pure-ftpd-common.j2をご覧ください。

pureftpd_fortune: ''

ユーザーのログイン時に表示するメッセージです。

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

このプロパティは、MySQLサーバー上での仮想ユーザーのストレージに必要な設定を定義します。これらの設定についての詳細は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'

このプロパティは、PostgreSQLサーバー上での仮想ユーザーのストレージに必要な設定を定義します。これらの設定についての詳細は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

このプロパティは、LDAPサーバー上での仮想ユーザーのストレージに必要な設定を定義します。これらの設定についての詳細は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'

Pure-FTPdの設定オプションのリストです。これらの設定についての詳細はPure-FTPdのドキュメントをご覧ください。

TLSオプションには4つの可能な値(0から3)があります。この値は以下を意味します:

  • 0: SSL/TLSのサポートが無効になっています。
  • 1: クライアントは従来の方法またはSSL/TLSレイヤー経由で接続できます。
  • 2: 平文セッションは拒否され、SSL/TLS互換のクライアントのみが受け入れられます。
  • 3: 平文セッションは拒否され、SSL/TLS互換のクライアントのみが受け入れられます。平文データ接続も拒否されるため、プライベートデータ接続が強制されます。

詳しい情報は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

これらのプロパティは、異なる認証方法の優先順位を設定します。値が0より大きいもののみが有効になります。

pureftpd_system_users:
  - name: user1
    password: <encrypted password>
    homedir: /var/ftp/user1

システム上に存在すべきユーザーのリストです。システムユーザーのパスワードは暗号化されている必要があります。暗号化されたパスワードを生成する方法については、Ansibleのドキュメントを参照してください。

pureftpd_system_deleted_users:
  - name: user2

システム上に存在すべきでないユーザーのリストです。古いFTPアカウントを削除する際に便利です。

pureftpd_virtual_users_user: ftp
pureftpd_virtual_users_group: ftp

Pure-FTPdサーバーが仮想ユーザーを使用する場合、少なくとも1つのシステムユーザーとそのグループが必要です。

pureftpd_virtual_users_gid: ''
pureftpd_virtual_users_uid: ''

これらのプロパティは、UIDとGIDを強制します。デフォルトでは定義されていません。

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

PureDBをストレージ方法として使用して作成する仮想ユーザーのリストです。namepassword、およびhomedirは必須です。

pureftpd_virtual_deleted_users:
  - name: vuser2

PureDBデータベースに存在すべきではないユーザーのリストです。古いFTPアカウントを削除するのに便利です。

pureftpd_virtual_users_import: false

このプロパティが有効な場合、ロールはシステムユーザーを仮想ユーザーとしてインポートします。

シェルアクセスのあるアカウントのみがインポートされます。シェルがnologinに設定されているアカウントは手動で追加する必要があります。

pureftpd_tls_certificate_method: ''

このプロパティには3つの有効な値があります:

  • certbot: このオプションは、certbotを使用してLet's Encrypt証明書をリクエストします。

  • generate: このオプションは、opensslを使用して自己署名証明書を作成します。

  • upload: このオプションは、既存の証明書をアップロードします。

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

certbotを使用する場合、この辞書はcertbotコマンドのpathと証明書リクエストに必要なオプションを設定します。証明書のFQDNとLet's Encryptアカウントのメールアドレスを設定する必要があります。証明書のキーサイズや、certbotがLet's Encryptのチャレンジを待機するポートも変更できます。

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

generateを使用する場合、この辞書はopensslコマンドのオプションを設定します。

pureftpd_tls_certificate_file: ''
pureftpd_tls_certificate_content: ''

uploadを使用する場合、これらのオプションはアップロードするファイルまたはサーバーに作成する証明書ファイルの内容を設定します。

依存関係

なし。

例のプレイブック

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

ライセンス

GPLv2

著者情報

このロールは、2017年にgcoop Cooperativa de Software Libreによって作成されました。

プロジェクトについて

Pure-FTPd for Debian/Ubuntu

インストール
ansible-galaxy install apham0001.pure_ftpd
ライセンス
gpl-2.0
ダウンロード
1.2k
所有者