首先确保系统为最新状态,避免已知漏洞:
sudo yum update -y
安装VSFTPD(Very Secure FTP Daemon):
sudo yum install vsftpd -y
vsftpd.conf)编辑配置文件(路径:/etc/vsftpd/vsftpd.conf),调整以下核心参数:
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES # 若用户主目录需写入,设置为YES(生产环境建议设为NO并单独配置目录权限)
user_list中的用户登录(需配合userlist_enable和userlist_deny)。userlist_enable=YES
userlist_file=/etc/vsftpd/user_list
userlist_deny=NO # 设置为NO表示仅允许列表中的用户登录
允许FTP服务及被动模式端口通过防火墙(CentOS 7及以上使用firewalld):
# 允许FTP服务(默认端口21)
sudo firewall-cmd --permanent --add-service=ftp
# 允许被动模式端口范围(根据实际情况调整,如1024-1048)
sudo firewall-cmd --permanent --add-port=1024-1048/tcp
# 重新加载防火墙规则
sudo firewall-cmd --reload
为避免数据明文传输,需配置SSL/TLS加密:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/pki/tls/private/vsftpd.key \
-out /etc/pki/tls/certs/vsftpd.crt
ssl_enable=YES
force_local_data_ssl=YES # 强制数据连接使用SSL
force_local_logins_ssl=YES # 强制登录过程使用SSL
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO # 禁用不安全的SSLv2/3协议
rsa_cert_file=/etc/pki/tls/certs/vsftpd.crt
rsa_private_key_file=/etc/pki/tls/private/vsftpd.key
被动模式可避免防火墙拦截主动连接,需指定端口范围:
pasv_enable=YES
pasv_min_port=1024 # 起始端口(需与防火墙开放范围一致)
pasv_max_port=1048 # 结束端口
若系统启用了SELinux,需调整相关策略:
sudo setsebool -P ftp_home_dir on
sudo chcon -Rt svirt_sandbox_file_t /home/*
应用所有配置变更:
sudo systemctl restart vsftpd
# 设置开机自启
sudo systemctl enable vsftpd
使用FTP客户端(如FileZilla)连接服务器,选择“FTPS - FTP over TLS”模式,验证加密连接是否成功(客户端会显示锁图标)。
/var/log/vsftpd.log),监控异常登录行为。chroot_local_user=YES与allow_writeable_chroot=NO结合,为用户单独创建可写目录(如/home/user/upload)并设置权限。