vsftpd(Very Secure FTP Daemon)。以下是完整流程:
# 1. 更新系统包
sudo yum update -y
# 2. 安装vsftpd
sudo yum install vsftpd -y
# 3. 启动服务并设置开机自启
sudo systemctl start vsftpd
sudo systemctl enable vsftpd
# 4. 检查服务状态
sudo systemctl status vsftpd
sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
sudo vim /etc/vsftpd/vsftpd.conf
# 匿名访问设置
anonymous_enable=NO # 禁止匿名登录
# 本地用户设置
local_enable=YES # 允许本地用户登录
write_enable=YES # 允许写入操作
local_umask=022 # 文件权限掩码
# 目录限制
chroot_local_user=YES # 将用户限制在其主目录
allow_writeable_chroot=YES # 允许chroot目录可写
# 日志设置
xferlog_enable=YES # 启用传输日志
xferlog_file=/var/log/vsftpd.log
# 端口设置
listen=YES # 以独立模式运行
listen_ipv6=NO # 禁用IPv6
# 连接限制
max_clients=50 # 最大连接数
max_per_ip=5 # 每IP最大连接数
# 被动模式设置(重要)
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
pasv_address=你的服务器公网IP # 需修改为实际IP
# 1. 创建用户并设置主目录
sudo useradd -m -d /home/ftpuser -s /sbin/nologin ftpuser
# 2. 设置密码
sudo passwd ftpuser
# 3. 设置目录权限
sudo chmod 750 /home/ftpuser
sudo chown ftpuser:ftpuser /home/ftpuser
# 1. 创建数据库文件
sudo sh -c 'echo "ftpuser" > /etc/vsftpd/virtual_users.txt'
sudo sh -c 'echo "password123" >> /etc/vsftpd/virtual_users.txt'
# 2. 生成数据库
sudo db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db
# 3. 修改权限
sudo chmod 600 /etc/vsftpd/virtual_users.*
# 4. 创建PAM配置文件
sudo cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
sudo vim /etc/pam.d/vsftpd
添加以下内容:
auth required pam_userdb.so db=/etc/vsftpd/virtual_users
account required pam_userdb.so db=/etc/vsftpd/virtual_users
# 1. 开放FTP端口(如果使用firewalld)
sudo firewall-cmd --permanent --add-service=ftp
sudo firewall-cmd --permanent --add-port=30000-31000/tcp
sudo firewall-cmd --reload
# 2. 如果使用iptables
sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 30000:31000 -j ACCEPT
service iptables save
# 1. 查看SELinux状态
getenforce
# 2. 临时关闭(不推荐)
sudo setenforce 0
# 3. 正确配置SELinux
# 允许FTP访问用户主目录
sudo setsebool -P ftp_home_dir 1
# 允许vsftpd读写文件
sudo setsebool -P allow_ftpd_full_access 1
# 查看相关设置
getsebool -a | grep ftp
sudo systemctl restart vsftpd
# 安装ftp客户端
sudo yum install ftp -y
# 测试连接
ftp localhost
# 输入用户名和密码
# 生成SSL证书
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/vsftpd/vsftpd.pem \
-out /etc/vsftpd/vsftpd.pem
# 在vsftpd.conf中添加
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
rsa_cert_file=/etc/vsftpd/vsftpd.pem
# 在配置文件中添加
userlist_enable=YES
userlist_file=/etc/vsftpd/user_list
userlist_deny=NO # 仅允许列表中的用户
sudo echo "ftpuser" >> /etc/vsftpd/user_list
# 查看日志
sudo tail -f /var/log/vsftpd.log
# 重新加载配置
sudo systemctl reload vsftpd
# 查看连接状态
sudo netstat -tulpn | grep ftp
# 限制用户带宽(在配置文件中)
anon_max_rate=512000 # 匿名用户500KB/s
local_max_rate=1024000 # 本地用户1MB/s
连接被拒绝
sudo firewall-cmd --list-allsudo systemctl status vsftpd无法上传文件
ls -ld /home/ftpusergetsebool -a | grep ftp被动模式失败
如果安全性要求高,建议考虑:
sftp user@host完成上述步骤后,FTP服务即可正常运行。建议初次使用后立即测试并配置适当的安全策略。