欢迎光临殡葬网
详情描述

vsftpd(非常安全的 FTP 守护进程)。以下是详细的安装与配置步骤:

一、系统环境确认

确保系统是 CentOS 8,并更新到最新状态:

sudo dnf update -y
sudo dnf install -y vsftpd

二、安装 vsftpd

安装 vsftpd

sudo dnf install vsftpd

启动并设置开机自启

sudo systemctl start vsftpd
sudo systemctl enable vsftpd
sudo systemctl status vsftpd  # 确认状态为 active

三、配置 vsftpd

备份默认配置文件

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  # 允许匿名上传(需目录可写)

五、防火墙与 SELinux 设置

防火墙放行 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):

  • 协议:FTP
  • 主机:服务器IP
  • 端口:21
  • 用户名/密码:已创建的用户凭据

七、故障排查

检查日志

sudo tail -f /var/log/vsftpd.log

常见问题

  • 连接超时:检查防火墙/SELinux 设置。
  • 认证失败:确认用户已在 user_list 中,且密码正确。
  • 无法上传文件:检查目录权限和 write_enable=YES

八、安全建议

使用 SFTP(OpenSSH)代替 FTP(明文传输),或启用 FTPS(FTP over TLS)。 定期更新 vsftpd:sudo dnf update vsftpd。 限制用户访问范围,避免使用 root 用户登录。

通过以上步骤,可以在 CentOS 8 上快速搭建一个安全的 FTP 服务器。根据实际需求调整配置参数(如匿名访问、被动端口等)。