CentOS vsftpd安全加固步骤
确保系统为最新状态后,通过yum包管理器安装vsftpd:
sudo yum update -y
sudo yum install vsftpd -y
编辑主配置文件/etc/vsftpd/vsftpd.conf,调整以下关键参数:
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES # 允许chroot目录可写(若用户需上传文件)
/etc/vsftpd.user_list文件控制允许/拒绝的用户(需配合userlist_enable=YES和userlist_deny=NO使用)。userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO
local_umask=022
为避免数据传输明文暴露,启用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 # 强制数据传输加密
force_local_logins_ssl=YES # 强制登录过程加密
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/pki/tls/certs/vsftpd.crt
rsa_private_key_file=/etc/pki/tls/private/vsftpd.key
使用firewalld开放FTP相关端口(主动模式需21端口,被动模式需指定端口范围):
sudo firewall-cmd --permanent --add-service=ftp # 开放FTP服务(包含21端口)
sudo firewall-cmd --permanent --add-port=30000-31000/tcp # 被动模式端口范围
sudo firewall-cmd --reload
若系统启用SELinux,需调整以下策略以允许vsftpd正常运行:
sudo setsebool -P ftp_home_dir on # 允许FTP访问用户主目录
sudo setsebool -P allow_ftpd_anon_write 0 # 禁止匿名用户写入(增强安全性)
避免使用root用户登录FTP,创建专用用户并设置主目录权限:
sudo useradd -m -s /sbin/nologin ftpuser # 创建无法登录shell的用户
sudo passwd ftpuser # 设置强密码
sudo chown ftpuser:ftpuser /home/ftpuser # 确保主目录归属正确
通过日志监控FTP活动,便于溯源安全事件:
xferlog_enable=YES
xferlog_std_format=YES
xferlog_file=/var/log/xferlog
保持系统和vsftpd软件包最新,及时修补安全漏洞:
sudo yum update -y
重启vsftpd服务使配置生效,并使用FTP客户端(如FileZilla)测试连接:
sudo systemctl restart vsftpd
sudo systemctl enable vsftpd # 设置开机自启
通过以上步骤,可显著提升CentOS上vsftpd服务器的安全性,防范未授权访问、数据泄露等风险。需根据实际业务需求调整被动模式端口范围、用户权限等参数。