FTPサーバー · 2 min read · Sep 23, 2025

Ubuntu 24.04にPure-FTPdをインストールする

Pure-FTPdは、Ubuntuや他のLinuxディストリビューション向けに利用可能な無料のオープンソースFTPサーバーソフトウェアです。セキュリティ、パフォーマンス、使いやすさに重点を置いて設計されたPure-FTPdは、仮想ユーザーのサポート、TLS/SSLを使用した暗号化接続、さまざまな認証メカニズムなどの堅牢な機能を提供します。また、帯域幅の制限、ユーザー権限の制限、匿名FTPアクセスの有効化などの機能も提供しています。Pure-FTPdは、他のFTPサーバーと比較して設定の簡単さから選ばれることが多く、小規模および大規模なUbuntuシステムの展開に人気があります。

ファイル転送プロトコル(FTP)は、クライアントとサーバー間でファイルを転送するために使用される標準ネットワークプロトコルです。1970年代初頭に開発されたFTPは、ユーザーがリモートサーバー上のファイルをアップロード、ダウンロード、管理できるようにします。接続を制御するためのコマンドチャネルとファイルを転送するためのデータチャネルの2つのチャネルを使用して動作します。FTPはアクティブモードまたはパッシブモードのいずれかで動作でき、サーバーとクライアントが接続を確立する方法を決定します。ファイル転送に広く使用されていますが、データ(ログイン資格情報を含む)が平文で送信されるため、FTPは安全ではないと見なされています。このガイドでは、Pure-FTPdをFTPS(SSL/TLS上のFTP)を使用するように構成する方法を示します。

このチュートリアルでは、UbuntuにPure-FTPdをインストールし、構成するプロセスをステップバイステップで案内します。

Pure-FTPdのインストールに必要な前提条件

インストールを進める前に、以下を確認してください:

  • Ubuntuサーバーのセットアップ
  • sudo権限を持つユーザーアカウントへのアクセス

Pure-FTPdのステップバイステップインストール

システムパッケージの更新

まず、システムのパッケージリストを更新します:

sudo apt update

Pure-FTPdのインストール

次に、以下のコマンドを使用してPure-FTPdをインストールします:

sudo apt install pure-ftpd

強化されたセキュリティのためのPure-FTPdの構成

セキュアな環境の設定

FTPユーザー用の専用グループを作成します:

sudo groupadd ftpgroup

Pure-FTPd用のユーザーを作成します:

sudo useradd -g ftpgroup -d /dev/null -s /etc ftpuser

ユーザーアクセスの管理

FTPサーバーにユーザーを追加するには:

sudo pure-pw useradd [username] -u ftpuser -g ftpgroup -d /home/ftpusers/[username]  
sudo pure-pw mkdb

[username]を希望のユーザー名に置き換えます。

セキュアなデータ転送のためのTLSの構成

自己署名証明書を生成します:

sudo openssl req -x509 -nodes -days 730 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

TLSを有効にするためにPure-FTPdの設定を変更します:

echo 1 | sudo tee /etc/pure-ftpd/conf/TLS  
sudo service pure-ftpd restart

高度な構成オプション

以下は、Ubuntuの/etc/pure-ftpd/conf/ディレクトリでPure-FTPdに対して構成できる一般的な設定のリストです。設定ファイル名は太字で示されています。

  • AltLog: 代替ログ記録方法を指定します。たとえば、AltLog clf:/var/log/pureftpd.logは、W3C形式で転送をログに記録します。
  • AnonymousOnly: 有効にすると(AnonymousOnlyという名前のファイルを作成することで)、サーバーは匿名ログインのみを許可します。
  • AntiWarez: このファイルが存在する場合、ユーザーはサーバー上に既に存在するファイルをアップロードすることが禁止されます。
  • AutoRename: 同名のファイルが存在する場合、アップロードされたファイルの名前を自動的に変更します。
  • Bind: サーバーを特定のIPアドレスとポートにバインドします。たとえば、Bind 21は、すべての利用可能なアドレスのポート21にバインドします。
  • BrokenClientsCompatibility: FTP標準に厳密に従わないFTPクライアントとの互換性を有効にします。
  • ChrootEveryone: 有効にすると、すべてのユーザーが自分のホームディレクトリに制限されます。
  • CreateHomeDir: ユーザーがログインしたときに、存在しない場合は自動的にホームディレクトリを作成します。
  • CustomerProof: クライアントの構成やコマンドでの一般的なミスに対する耐性を高めます。
  • Daemonize: このファイルが存在する場合、Pure-FTPdはデーモンとして実行されます。
  • DisplayDotFiles: ドットファイル(隠しファイル)が表示されるかどうかを制御します。
  • DontResolve: ロギングと帯域幅制御のためのDNS解決を防ぎ、パフォーマンスを向上させることができます。
  • ExtAuth: ユーザー認証のための外部プログラムを指定します。
  • ForcePassiveIP: サーバーがパッシブモードクライアントに特定のIPアドレスを報告するように強制します。
  • FSCharset: ファイルシステムの文字セットを設定し、非ASCIIファイル名に便利です。
  • IPv4OnlyまたはIPv6Only: サーバーがIPv4またはIPv6アドレスのみをリッスンするように制限します。
  • KeepAllFiles: サーバー上のファイルの削除を防ぎます。
  • LDAPConfigFile: 認証のためのLDAP構成ファイルへのパスを指定します。
  • LimitRecursion: 再帰の深さとディレクトリリストに表示されるファイルの数を制限します。
  • MaxClientsNumber: 同時接続の最大数を制限します。
  • MaxClientsPerIP: 単一のIPアドレスからの同時接続の数を制限します。
  • MaxDiskUsage: ディスク使用量のパーセンテージを制限します。
  • MaxIdleTime: クライアントを切断する前の最大アイドル時間(分)を設定します。
  • MaxLoad: 特定のシステム負荷を超えた場合、クライアントを切断するか新しい接続を拒否します。
  • MinUID: ログインのための最小UIDを設定します。UIDが低いユーザーはログインできません。
  • MySQLConfigFile: データベースベースの認証のためのMySQL構成ファイルへのパスを指定します。
  • NoAnonymous: このファイルが存在する場合、匿名ログインを無効にします。
  • NoChmod: サーバー上でCHMODコマンドを無効にします。
  • NoRename: ユーザーがファイルの名前を変更することを防ぎます。
  • PassivePortRange: パッシブ接続のためのポート範囲を定義します(例:30000 35000)。
  • PerUserLimits: ユーザーごとの制限を設定します。
  • PureDB: PureDBユーザーデータベースファイルへのパスを指定します。
  • Quota: ユーザーのクォータ制限を設定します。
  • SyslogFacility: ロギングのためのsyslogファシリティを定義します。
  • TLSCipherSuite: 暗号化接続のための許可されたTLS暗号を指定します。
  • TrustedGID: ログインのための信頼できるグループIDのリストを指定します。
  • UMask: ファイル作成のためのデフォルトのumaskを設定します。
  • UnixAuthentication: UNIXパスワードデータベースに対する認証を有効にします。
  • UploadScript: 成功したアップロード後に実行するスクリプトを指定します。

このリストは、最も一般的に使用される構成オプションをカバーしていますが、網羅的ではありません。常に公式のPure-FTPdドキュメントを参照するか、次のコマンドを使用して最も正確で包括的な情報を得てください。

pure-ftpd-wrapper --help

以下は、/etc/pure-ftpd/conf/内のPure-FTPd設定のリストで、受け入れられる値のタイプを示す例です:

  • AltLog: AltLog clf:/var/log/pureftpd.log - 例:clf:/var/log/pureftpd.log
  • AnonymousOnly: AnonymousOnlyという名前のファイルを作成することで有効にします。 - 値は必要ありません。
  • AntiWarez: AntiWarezという名前のファイルを作成することで有効にします。 - 値は必要ありません。
  • AutoRename: AutoRenameという名前のファイルを作成することで有効にします。 - 値は必要ありません。
  • Bind: Bind 21 - 例:192.168.0.1,21
  • BrokenClientsCompatibility: BrokenClientsCompatibilityという名前のファイルを作成することで有効にします。 - 値は必要ありません。
  • ChrootEveryone: ChrootEveryoneという名前のファイルを作成することで有効にします。 - 値は必要ありません。
  • CreateHomeDir: CreateHomeDirという名前のファイルを作成することで有効にします。 - 値は必要ありません。
  • CustomerProof: CustomerProofという名前のファイルを作成することで有効にします。 - 値は必要ありません。
  • Daemonize: Daemonizeという名前のファイルを作成することで有効にします。 - 値は必要ありません。
  • DisplayDotFiles: DisplayDotFilesという名前のファイルを作成することで有効にします。 - 値は必要ありません。
  • DontResolve: DontResolveという名前のファイルを作成することで有効にします。 - 値は必要ありません。
  • ExtAuth: ExtAuth /path/to/authenticator - 例:/usr/local/bin/myauth
  • ForcePassiveIP: ForcePassiveIP 192.168.0.1 - 例:192.168.0.1
  • FSCharset: FSCharset utf-8 - 例:utf-8
  • IPv4OnlyまたはIPv6Only: IPv4OnlyまたはIPv6Onlyという名前のファイルを作成することで有効にします。 - 値は必要ありません。
  • KeepAllFiles: KeepAllFilesという名前のファイルを作成することで有効にします。 - 値は必要ありません。
  • LDAPConfigFile: LDAPConfigFile /etc/pure-ftpd/ldap.conf - 例:/etc/pure-ftpd/ldap.conf
  • LimitRecursion: LimitRecursion 10000 8 - 例:10000 8(10000ファイル、8レベル深い)
  • MaxClientsNumber: MaxClientsNumber 50 - 例:50
  • MaxClientsPerIP: MaxClientsPerIP 8 - 例:8
  • MaxDiskUsage: MaxDiskUsage 95 - 例:95(95パーセント)
  • MaxIdleTime: MaxIdleTime 15 - 例:15(15分)
  • MaxLoad: MaxLoad 4.0 - 例:4.0
  • MinUID: MinUID 1000 - 例:1000
  • MySQLConfigFile: MySQLConfigFile /etc/pure-ftpd/mysql.conf - 例:/etc/pure-ftpd/mysql.conf
  • NoAnonymous: NoAnonymousという名前のファイルを作成することで有効にします。 - 値は必要ありません。
  • NoChmod: NoChmodという名前のファイルを作成することで有効にします。 - 値は必要ありません。
  • NoRename: NoRenameという名前のファイルを作成することで有効にします。 - 値は必要ありません。
  • PassivePortRange: PassivePortRange 30000 35000 - 例:30000 35000
  • PerUserLimits: PerUserLimits 8 - 例:8(ユーザーごとに8つの同時接続)
  • PureDB: PureDB /etc/pure-ftpd/pureftpd.pdb - 例:/etc/pure-ftpd/pureftpd.pdb
  • Quota: Quota 1000M - 例:1000M(1000メガバイト)
  • SyslogFacility: SyslogFacility ftp - 例:ftp
  • TLSCipherSuite: TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3 - 例:HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3
  • TrustedGID: TrustedGID 1000 - 例:1000
  • UMask: UMask 133:022 - 例:133:022(ファイル:133、ディレクトリ:022)
  • UnixAuthentication: UnixAuthenticationという名前のファイルを作成することで有効にします。 - 値は必要ありません。
  • UploadScript: UploadScript /path/to/script - 例:/usr/local/bin/uploadscript

これらの例は、Pure-FTPdのさまざまなオプションを構成する方法を明確にするはずです。

監視とメンテナンス

/var/log/pure-ftpd/内のログを定期的にチェックして、異常な活動やエラーがないか確認してください。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。