vsftpd(Very Secure FTP Daemon)是Linux下常用的FTP服务器软件,需通过配置文件(/etc/vsftpd.conf)强化其安全性:
anonymous_enable=NO,防止未授权用户通过匿名账户登录FTP服务器。chroot_local_user=YES,将本地用户限制在其主目录内(避免访问系统其他目录);若需允许用户修改主目录内容,需添加allow_writeable_chroot=YES。write_enable=YES,允许用户上传、删除文件(根据需求调整)。passwd)为用户设置复杂密码(包含大小写字母、数字、特殊字符),并定期更换密码。fail2ban工具,自动屏蔽多次登录失败的IP地址(如设置5分钟内失败3次则屏蔽1小时),防范暴力破解。防火墙是阻止非法访问的第一道防线,需根据系统使用的防火墙工具(ufw或firewalld)配置规则:
sudo ufw allow 21/tcp。sudo ufw allow 20/tcp;若使用被动模式,需开放动态端口范围(如sudo ufw allow 30000:31000/tcp,范围可根据需求调整)。sudo ufw enable,并验证规则sudo ufw status(确认21、20及动态端口已开放)。firewall-cmd命令永久放行FTP服务(自动包含21端口),执行sudo firewall-cmd --zone=public --add-service=ftp --permanent。sudo firewall-cmd --permanent --add-port=30000-31000/tcp)。sudo firewall-cmd --reload,使规则生效。被动模式(PASV)是FTP的常用模式,需配置vsftpd的端口范围,并同步开放防火墙端口:
/etc/vsftpd.conf,添加pasv_enable=YES(启用被动模式)、pasv_min_port=30000(最小端口)、pasv_max_port=31000(最大端口)(端口范围需与防火墙规则一致)。sudo systemctl restart vsftpd,使配置生效。netstat -ntulp | grep vsftpd命令,确认vsftpd正在监听21端口及动态端口范围。FTP传输默认为明文,易被窃听,需启用SSL/TLS加密:
openssl生成自签名证书,执行sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/certs/vsftpd.pem。/etc/vsftpd.conf,添加ssl_enable=YES(启用SSL)、rsa_cert_file=/etc/ssl/certs/vsftpd.pem(证书路径)、rsa_private_key_file=/etc/ssl/private/vsftpd.pem(私钥路径)、force_local_data_ssl=YES(强制数据传输加密)、force_local_logins_ssl=YES(强制登录加密)。sudo systemctl restart vsftpd,使加密配置生效。SELinux提供额外的访问控制,需调整策略允许vsftpd访问用户目录:
sudo setenforce 1,并修改/etc/selinux/config中的SELINUX=enforcing(永久生效)。sudo setsebool -P ftpd_full_access=on(允许FTP用户完全访问其主目录);若需允许FTP访问特定目录,可使用semanage fcontext命令修改安全上下文(如sudo semanage fcontext -a -t httpd_sys_content_t "/home/user1(/.*)?",然后restorecon -Rv /home/user1)。sudo ufw status(Ubuntu)或sudo firewall-cmd --list-all(CentOS)确认规则是否正确应用。通过以上步骤,可实现vsftpd与防火墙的安全策略配置,有效防范未授权访问、数据泄露等安全风险。需定期更新vsftpd软件及系统补丁,监控日志(/var/log/vsftpd.log)以及时发现异常行为。