vsftpd(非常安全的 FTP 守护进程)。以下是详细的安装与配置步骤:
确保系统是 CentOS 8,并更新到最新状态:
sudo dnf update -y
sudo dnf install -y vsftpd
安装 vsftpd:
sudo dnf install vsftpd
启动并设置开机自启:
sudo systemctl start vsftpd
sudo systemctl enable vsftpd
sudo systemctl status vsftpd # 确认状态为 active
备份默认配置文件:
sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
编辑配置文件:
sudo vi /etc/vsftpd/vsftpd.conf
根据需求修改以下关键参数(以下是常见安全配置):
# 禁止匿名登录
anonymous_enable=NO
# 允许本地用户登录
local_enable=YES
# 允许写入操作
write_enable=YES
# 本地用户文件掩码
local_umask=022
# 使用本地时间
use_localtime=YES
# 启用ASCII模式上传/下载
ascii_upload_enable=YES
ascii_download_enable=YES
# 用户列表配置(重要)
userlist_enable=YES
userlist_file=/etc/vsftpd/user_list
userlist_deny=NO # 仅允许user_list中的用户登录
# 限制用户到其家目录(增强安全)
chroot_local_user=YES
allow_writeable_chroot=YES
# 被动模式设置(适合防火墙/NAT环境)
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
# 日志设置
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
创建用户列表文件(如果使用 userlist 控制):
sudo vi /etc/vsftpd/user_list
每行添加一个允许登录的用户名,例如:
ftpuser1
ftpuser2
创建 FTP 专用用户(可选):
sudo useradd -m -s /sbin/nologin ftpuser1
sudo passwd ftpuser1 # 设置密码
设置家目录权限(确保安全):
sudo chmod 750 /home/ftpuser1
sudo chown ftpuser1:ftpuser1 /home/ftpuser1
如果需要匿名访问(不推荐生产环境):
在配置中设置 anonymous_enable=YES,并指定匿名目录:
anon_root=/var/ftp/pub
anon_upload_enable=YES # 允许匿名上传(需目录可写)
防火墙放行 FTP:
sudo firewall-cmd --permanent --add-service=ftp
sudo firewall-cmd --permanent --add-port=30000-31000/tcp # 被动模式端口范围
sudo firewall-cmd --reload
SELinux 调整:
# 允许 FTP 访问家目录
sudo setsebool -P ftp_home_dir on
# 如果需要匿名上传,允许写入公共目录:
sudo setsebool -P allow_ftpd_anon_write on
# 检查 SELinux 状态
getenforce
重启 vsftpd:
sudo systemctl restart vsftpd
本地测试连接:
ftp localhost
# 输入用户名和密码,尝试上传/下载文件
从远程客户端测试(如 FileZilla):
检查日志:
sudo tail -f /var/log/vsftpd.log
常见问题:
user_list 中,且密码正确。write_enable=YES。sudo dnf update vsftpd。
限制用户访问范围,避免使用 root 用户登录。
通过以上步骤,可以在 CentOS 8 上快速搭建一个安全的 FTP 服务器。根据实际需求调整配置参数(如匿名访问、被动端口等)。