Pure-FTPd 是一款免费(BSD 许可证)、安全、生产质量且符合标准的 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
修改 Pure-FTPd 配置以激活 TLS:
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 用户数据库文件的路径。
- 配额:设置用户配额限制。
- SyslogFacility:定义用于日志记录的 syslog 工具。
- TLSCipherSuite:指定加密连接允许的 TLS 密码。
- TrustedGID:指定用于登录的受信任组 ID 列表。
- UMask:设置文件创建的默认umask。
- UnixAuthentication:启用针对 UNIX 密码数据库的身份验证。
- UploadScript:指定成功上传后运行的脚本。
此列表涵盖了最常用的配置选项,但并不详尽。请始终参考官方 Pure-FTPd 文档或使用
pure-ftpd-wrapper --帮助
指挥以获得最准确、最全面的信息。
监控与维护
定期检查登录/var/log/pure-ftpd/是否有任何异常活动或错误。