郑州市护送服务网

Linux系统搭建FTP服务器完整步骤

2026-03-26 19:25:02 浏览次数:2
详细信息

Linux系统搭建FTP服务器完整步骤

本文将指导您在Linux系统上使用vsftpd搭建安全可靠的FTP服务器。

一、准备工作

1. 系统要求

2. 选择FTP服务器软件

推荐使用vsftpd(Very Secure FTP Daemon):

二、安装vsftpd

1. CentOS/RHEL系统

# 更新系统
sudo yum update -y

# 安装vsftpd
sudo yum install vsftpd -y

# 启动服务并设置开机自启
sudo systemctl start vsftpd
sudo systemctl enable vsftpd

2. Ubuntu/Debian系统

# 更新系统
sudo apt update && sudo apt upgrade -y

# 安装vsftpd
sudo apt install vsftpd -y

# 启动服务并设置开机自启
sudo systemctl start vsftpd
sudo systemctl enable vsftpd

三、配置vsftpd

1. 备份原始配置文件

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

2. 编辑配置文件

sudo nano /etc/vsftpd/vsftpd.conf

3. 基础配置(推荐设置)

# 监听设置
listen=YES
listen_ipv6=NO

# 匿名用户设置
anonymous_enable=NO          # 禁用匿名登录
local_enable=YES            # 允许本地用户登录
write_enable=YES            # 允许写入操作

# 用户权限设置
chroot_local_user=YES        # 将用户限制在其家目录
allow_writeable_chroot=YES   # 允许在限制目录中写入

# 日志设置
xferlog_enable=YES          # 启用传输日志
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES

# 连接设置
idle_session_timeout=600     # 会话超时时间(秒)
data_connection_timeout=120  # 数据传输超时时间
max_clients=10              # 最大连接数
max_per_ip=5               # 每个IP最大连接数

# 安全设置
pam_service_name=vsftpd
userlist_enable=YES
userlist_file=/etc/vsftpd/user_list
userlist_deny=NO
tcp_wrappers=YES

# 被动模式设置(重要)
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000

四、用户管理

1. 创建FTP专用用户

# 创建用户(不创建家目录)
sudo useradd -m ftpuser1
sudo passwd ftpuser1

# 或创建用户并指定家目录
sudo useradd -m -d /var/ftp/user1 -s /sbin/nologin ftpuser1
sudo passwd ftpuser1

2. 配置用户访问权限

# 将用户添加到允许列表
sudo echo "ftpuser1" >> /etc/vsftpd/user_list

3. 设置目录权限

# 为用户创建目录
sudo mkdir -p /var/ftp/user1

# 设置所有权
sudo chown ftpuser1:ftpuser1 /var/ftp/user1

# 设置权限
sudo chmod 755 /var/ftp/user1

五、防火墙配置

1. CentOS 7+/RHEL 7+(使用firewalld)

# 允许FTP服务
sudo firewall-cmd --permanent --add-service=ftp

# 开放被动模式端口范围
sudo firewall-cmd --permanent --add-port=30000-31000/tcp

# 重新加载防火墙
sudo firewall-cmd --reload

2. Ubuntu/Debian(使用ufw)

# 允许FTP服务
sudo ufw allow ftp

# 开放被动模式端口范围
sudo ufw allow 30000:31000/tcp

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

3. 传统iptables配置

# 允许FTP控制连接(端口21)
sudo iptables -A INPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT

# 允许被动模式端口范围
sudo iptables -A INPUT -p tcp --dport 30000:31000 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 30000:31000 -m state --state ESTABLISHED -j ACCEPT

# 保存iptables规则
sudo service iptables save  # CentOS 6
# 或使用iptables-persistent(Debian/Ubuntu)

六、SSL/TLS加密配置(可选但推荐)

1. 生成SSL证书

# 创建证书目录
sudo mkdir /etc/vsftpd/ssl
cd /etc/vsftpd/ssl

# 生成自签名证书
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
    -keyout /etc/vsftpd/ssl/vsftpd.key \
    -out /etc/vsftpd/ssl/vsftpd.crt \
    -subj "/C=CN/ST=Province/L=City/O=Company/OU=Department/CN=your-domain.com"

2. 配置SSL支持

/etc/vsftpd/vsftpd.conf中添加:

# SSL/TLS配置
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

rsa_cert_file=/etc/vsftpd/ssl/vsftpd.crt
rsa_private_key_file=/etc/vsftpd/ssl/vsftpd.key

3. 设置证书权限

sudo chmod 600 /etc/vsftpd/ssl/vsftpd.*

七、启动和测试

1. 重启vsftpd服务

sudo systemctl restart vsftpd

# 检查服务状态
sudo systemctl status vsftpd

2. 测试FTP连接

# 本地测试
ftp localhost

# 或使用命令行工具
lftp ftp://ftpuser1@localhost

3. 客户端连接信息

八、高级配置选项

1. 限制用户带宽

# 在vsftpd.conf中添加
local_max_rate=100000  # 100KB/s
anon_max_rate=50000    # 50KB/s

2. 限制文件上传大小

max_per_ip=10
max_clients=50
local_max_rate=0  # 0表示无限制

3. 创建虚拟用户(更安全)

# 安装必要组件
sudo apt install db-util  # Ubuntu/Debian
sudo yum install db4-utils  # CentOS/RHEL

# 创建用户文件
sudo nano /etc/vsftpd/virtual_users.txt
# 格式:奇数行为用户名,偶数行为密码
# virtual_user1
# password1
# virtual_user2
# password2

# 生成数据库文件
sudo db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db
sudo chmod 600 /etc/vsftpd/virtual_users.db

# 配置PAM认证
sudo nano /etc/pam.d/vsftpd.virtual
# 添加以下内容:
# auth required pam_userdb.so db=/etc/vsftpd/virtual_users
# account required pam_userdb.so db=/etc/vsftpd/virtual_users

九、故障排除

1. 常见问题解决

# 检查服务状态
sudo systemctl status vsftpd

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

# 检查配置文件语法
sudo vsftpd -olisten=NO /etc/vsftpd/vsftpd.conf

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

2. SELinux设置(CentOS/RHEL)

# 检查SELinux状态
sudo sestatus

# 允许FTP访问用户家目录
sudo setsebool -P ftp_home_dir on

# 或临时禁用SELinux(生产环境不推荐)
sudo setenforce 0

十、安全建议

禁用匿名访问:除非必要 使用强密码:定期更换用户密码 限制连接数:防止DDoS攻击 启用日志:监控用户活动 定期更新:保持软件最新 使用SFTP替代:考虑使用更安全的SFTP(SSH File Transfer Protocol)

十一、完整的自动化安装脚本

#!/bin/bash
# FTP服务器自动安装脚本

# 检测系统
if [ -f /etc/redhat-release ]; then
    OS="centos"
elif [ -f /etc/debian_version ]; then
    OS="debian"
else
    echo "不支持的操作系统"
    exit 1
fi

# 安装vsftpd
if [ "$OS" = "centos" ]; then
    yum install -y vsftpd db4-utils
elif [ "$OS" = "debian" ]; then
    apt update && apt install -y vsftpd db-util
fi

# 备份配置
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.backup

# 写入配置
cat > /etc/vsftpd/vsftpd.conf << EOF
listen=YES
listen_ipv6=NO
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
idle_session_timeout=600
data_connection_timeout=120
max_clients=10
max_per_ip=5
pam_service_name=vsftpd
userlist_enable=YES
userlist_file=/etc/vsftpd/user_list
userlist_deny=NO
tcp_wrappers=YES
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
EOF

# 启动服务
systemctl start vsftpd
systemctl enable vsftpd

echo "FTP服务器安装完成!"

总结

通过以上步骤,您已经成功搭建了一个基本的FTP服务器。建议根据实际需求调整配置参数,并始终遵循安全最佳实践。对于生产环境,强烈建议:

使用SSL/TLS加密 配置防火墙规则 定期审计日志 考虑使用SFTP作为更安全的替代方案
相关推荐