欢迎光临中国护送网
详情描述
Ubuntu 22.04 FTP服务器安装配置详细教程

1. 选择FTP服务器软件

Ubuntu 22.04支持多种FTP服务器,最常用的是:

  • vsftpd(推荐):安全、稳定、轻量级
  • ProFTPD:功能丰富、配置灵活
  • Pure-FTPd:安全、易用

本教程以vsftpd为例。

2. 安装vsftpd

# 更新包列表
sudo apt update

# 安装vsftpd
sudo apt install vsftpd

# 查看服务状态
sudo systemctl status vsftpd

3. 基本配置

备份原始配置文件

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.backup

编辑配置文件

sudo nano /etc/vsftpd.conf

修改配置参数(常见设置)

# 允许本地用户登录
local_enable=YES

# 允许上传文件
write_enable=YES

# 本地用户上传文件的umask
local_umask=022

# 允许匿名用户访问(可选)
anonymous_enable=NO

# 禁止匿名用户上传(如果启用匿名访问)
# anon_upload_enable=NO
# anon_mkdir_write_enable=NO

# 使用本地时间而不是GMT
use_localtime=YES

# 日志文件位置
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES

# 被动模式设置(用于防火墙/NAT后)
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=50000

# 限制用户在其主目录(重要安全设置)
chroot_local_user=YES
allow_writeable_chroot=YES

# 用户列表控制
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO  # 仅允许列表中的用户

4. 创建FTP用户

创建新用户

# 创建用户(不创建主目录)
sudo useradd -m ftpuser

# 设置密码
sudo passwd ftpuser

# 如果需要,将用户添加到vsftpd允许列表
echo "ftpuser" | sudo tee -a /etc/vsftpd.userlist

或使用现有用户

# 将现有用户添加到允许列表
echo "your_username" | sudo tee -a /etc/vsftpd.userlist

5. 配置SSL/TLS(可选但推荐)

生成SSL证书

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
    -keyout /etc/ssl/private/vsftpd.pem \
    -out /etc/ssl/private/vsftpd.pem

在vsftpd.conf中添加SSL配置

# 启用SSL
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

# SSL配置
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem

6. 防火墙配置

# 允许FTP端口(20,21)
sudo ufw allow 20/tcp
sudo ufw allow 21/tcp

# 允许被动模式端口范围
sudo ufw allow 40000:50000/tcp

# 启用防火墙(如果未启用)
sudo ufw enable

7. 启动和测试

重启服务

sudo systemctl restart vsftpd
sudo systemctl enable vsftpd

测试连接

# 本地测试
ftp localhost

# 或使用lftp(功能更全)
sudo apt install lftp
lftp ftp://ftpuser@localhost

8. 客户端连接示例

Linux/Mac命令行

ftp your_server_ip
# 或
lftp ftp://username@your_server_ip

Windows

  • 使用资源管理器:ftp://your_server_ip
  • 使用FileZilla等FTP客户端

9. 高级配置

限制用户访问特定目录

# 创建目录并设置权限
sudo mkdir /home/ftpuser/files
sudo chown ftpuser:ftpuser /home/ftpuser/files

# 在配置文件中限制用户目录
# local_root=/home/$USER/files

配置带宽限制

# 限制本地用户最大带宽(KB/s)
local_max_rate=102400

# 限制匿名用户最大带宽(KB/s)
anon_max_rate=51200

限制并发连接

max_clients=50
max_per_ip=5

10. 故障排除

查看日志

# 查看vsftpd日志
sudo tail -f /var/log/vsftpd.log

# 查看系统日志
sudo journalctl -u vsftpd

常见问题解决

连接被拒绝

# 检查服务状态
sudo systemctl status vsftpd

# 检查端口监听
sudo netstat -tulpn | grep :21

认证失败

# 检查用户是否在允许列表
sudo cat /etc/vsftpd.userlist

# 检查用户主目录权限
sudo ls -ld /home/username

无法上传文件

# 检查目录权限
sudo chmod 755 /home/username
sudo chown username:username /home/username

11. 安全建议

禁用匿名访问(除非必要) 使用强密码策略 定期更新系统和vsftpd 考虑使用SFTP替代FTP(更安全) 配置fail2ban防止暴力破解
sudo apt install fail2ban

12. 安装SFTP(替代方案,更安全)

如果不需要传统FTP,建议使用SFTP:

# SSH已包含SFTP功能
# 确保SSH服务器已安装
sudo apt install openssh-server

# 配置SFTP限制用户访问
sudo nano /etc/ssh/sshd_config

添加以下配置:

Subsystem sftp internal-sftp

Match Group sftpusers
    ChrootDirectory /home/%u
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no

注意事项

FTP协议不安全,密码和数据以明文传输 建议仅在内部网络使用FTP 对外服务强烈建议使用SFTP或FTPS 定期备份配置文件 监控日志文件,检测异常活动

这个教程覆盖了从安装到配置的完整过程,你可以根据自己的需求调整配置参数。