1、Pure-FTPd 简介

Pure-FTPd 是一款基于 BSD License 的开源 FTP 服务器软件,以 安全、高效、易用 为核心设计目标。其特点包括:

  • 高安全性:支持 SSL/TLS 加密、虚拟用户、chroot 监狱模式,避免明文传输密码。

  • 轻量级:资源占用低,适合服务器部署。

  • 兼容性:支持 Linux、BSD、Solaris 等 Unix 系统,甚至 Android。

  • 灵活配置:支持 IPv6、虚拟主机、PAM 认证等高级功能。

2、安装与配置

2.1、系统要求

  • 操作系统:CentOS/RHEL 7+/Ubuntu 18.04+(其他 Unix 系统需编译安装)。

  • 依赖:epel-release(CentOS)或 build-essential(Ubuntu)。

2.2、安装步骤

CentOS/RHEL

# 1. 安装 EPEL 源
sudo yum install -y epel-release
​
# 2. 安装 Pure-FTPd 及依赖
sudo yum install -y pure-ftpd openssl  # 含 OpenSSL 支持 SSL/TLS
​
# 3. 配置文件路径:/etc/pure-ftpd/pure-ftpd.conf
sudo cp /etc/pure-ftpd/pure-ftpd.conf /etc/pure-ftpd/pure-ftpd.conf.bak  # 备份原配置
​
# 4. 修改核心配置(推荐使用文本编辑器)
sudo nano /etc/pure-ftpd/pure-ftpd.conf

关键配置项说明:

# 用户管理(虚拟用户)
PureDB /etc/pure-ftpd/pureftpd.pdb
​
# 日志记录
VerboseLog yes
​
# 禁止匿名登录
NoAnonymous yes
​
# 被动模式端口范围(需开放防火墙)
PassivePortRange 39000 40000
​
# 启用 SSL/TLS 加密(需生成证书)
TLS 1
CertificateFile /etc/pure-ftpd/cert.pem  # 证书路径(需提前生成)

Ubuntu/Debian

# 1. 安装 Pure-FTPd 及依赖
sudo apt-get update
sudo apt-get install -y pure-ftpd openssl
​
# 2. 配置文件路径:/etc/pure-ftpd/conf/
# 修改配置文件(以 PassivePortRange 为例):
echo "39000 40000" | sudo tee /etc/pure-ftpd/conf/PassivePortRange
​
# 其他配置(如日志、SSL):
echo "yes" | sudo tee /etc/pure-ftpd/conf/VerboseLog
echo "yes" | sudo tee /etc/pure-ftpd/conf/NoAnonymous

2.3、用户管理

创建虚拟用户

# 1. 创建用户数据库目录
sudo mkdir -p /etc/pure-ftpd/auth
sudo ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/50puredb
​
# 2. 添加用户(示例:用户名 user1,密码 123456)
sudo pure-pw useradd user1 -u ftpuser -g ftpgroup -d /var/www/ftp/user1 -f /etc/pure-ftpd/pureftpd.pwd
sudo pure-pw mkdb

参数说明:

  • -u:系统用户(需提前创建)。

  • -d:用户主目录(需提前创建并设置权限)。


2.4、启动与服务管理

# 启动服务
sudo systemctl start pure-ftpd
​
# 设置开机自启
sudo systemctl enable pure-ftpd
​
# 查看状态
sudo systemctl status pure-ftpd

2.5、防火墙与端口配置

CentOS/Firewalld

# 开放 FTP 端口(21)和被动模式端口范围
sudo firewall-cmd --permanent --add-port=21/tcp
sudo firewall-cmd --permanent --add-port=39000-40000/tcp
sudo firewall-cmd --reload

Ubuntu/UFW

sudo ufw allow 21/tcp
sudo ufw allow 39000:40000/tcp
sudo ufw reload

3、高级配置与问题解决

3.1、SSL/TLS 加密配置

# 生成自签名证书(有效期 1 年)
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/pure-ftpd/cert.pem -out /etc/pure-ftpd/cert.pem
​
# 配置 Pure-FTPd 使用 SSL
sudo sed -i 's/# TLS 1/TLS 1/' /etc/pure-ftpd/pure-ftpd.conf  # CentOS
# Ubuntu 需在 /etc/pure-ftpd/conf/ 下创建 TLS 文件并写入 "1"
echo "1" | sudo tee /etc/pure-ftpd/conf/TLS

3.2、解决被动模式连接问题

  • 检查防火墙:确保 PassivePortRange 范围的端口已开放。

  • NAT 环境配置(如使用路由器):

    # 设置外网 IP(需替换为实际 IP)
    echo "ForcePassiveIP your_public_ip" | sudo tee -a /etc/pure-ftpd/conf/ForcePassiveIP

3.3、调整并发连接数

# 修改配置文件(CentOS)
sudo nano /etc/pure-ftpd/pure-ftpd.conf
MaxClientsNumber 9999
MaxClientsPerIP 999

# Ubuntu 在 /etc/pure-ftpd/conf/ 下创建对应文件:
echo "9999" | sudo tee /etc/pure-ftpd/conf/MaxClientsNumber
echo "999" | sudo tee /etc/pure-ftpd/conf/MaxClientsPerIP

3.4、SELinux 与 AppArmor

  • 临时禁用 SELinux(仅测试环境):

    sudo setenforce 0
  • 永久禁用 SELinux:

    sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

4、故障排查

  1. 检查服务状态:

    sudo systemctl status pure-ftpd
  2. 查看日志文件:

    # CentOS 日志路径:
    sudo tail -f /var/log/messages
    # Ubuntu 日志路径:
    sudo tail -f /var/log/syslog
  3. 端口监听检查:

    sudo netstat -tunlp | grep pure-ftpd
    # 检查是否监听 21 端口及被动端口
  4. 连接测试:

    # 使用 lftp 测试连接
    lftp -u user1,123456 ftp://your_server_ip

5、安全加固建议

  1. 最小权限原则:

    • 用户目录设置 chroot 监狱模式:

      sudo pure-pw usermod user1 -j "" -R no  # 禁用 shell 登录
    • 目录权限设置:

      sudo chown -R ftpuser:ftpgroup /var/www/ftp/user1
      sudo chmod -R 750 /var/www/ftp/user1
  2. 定期更新:

    sudo yum update pure-ftpd  # CentOS
    sudo apt-get upgrade pure-ftpd  # Ubuntu
  3. 监控与报警:

    • 配置日志轮转:

      sudo nano /etc/logrotate.d/pure-ftpd

六、附录