阅读量:43
1. 更新系统与软件包
确保CentOS系统和vsftpd软件为最新版本,及时修复已知安全漏洞:
sudo yum update -y
sudo yum install vsftpd -y
2. 配置vsftpd.conf安全参数
编辑/etc/vsftpd/vsftpd.conf文件,调整以下核心配置:
- 禁用匿名访问:防止未授权用户获取服务器文件。
anonymous_enable=NO - 限制本地用户权限:仅允许本地用户登录,启用写入权限(根据需求调整)。
local_enable=YES write_enable=YES - 启用chroot jail:将用户限制在自己的主目录,避免访问系统其他目录。
chroot_local_user=YES allow_writeable_chroot=YES # 若用户主目录需写入,设置为YES(否则设为NO) - 限制登录尝试次数:防止暴力破解,连续失败3次后锁定账户。
max_login_attempts=3 account_lock=YES - 限制用户列表:通过
/etc/vsftpd/user_list文件指定允许/拒绝的用户(userlist_enable=YES、userlist_deny=NO表示仅允许列表内用户登录)。 - 禁用不必要的功能:关闭递归目录列表(防止DoS攻击)、ASCII模式下载(节省CPU资源)。
ls_recurse_enable=NO ascii_download_enable=NO
3. 配置防火墙规则
使用firewalld限制FTP服务访问,仅允许受信任IP或端口:
- 开放必要端口:默认FTP端口(21)、被动模式端口范围(如1024-1048)。
sudo firewall-cmd --permanent --add-port=21/tcp sudo firewall-cmd --permanent --add-port=1024-1048/tcp sudo firewall-cmd --reload - 限制访问源:仅允许特定IP段访问FTP服务(示例:允许192.168.1.0/24)。
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ftp" accept' sudo firewall-cmd --reload
4. 启用TLS/SSL加密
加密数据传输,防止密码和文件内容被窃取:
- 生成SSL证书(若无现有证书):
sudo mkdir -p /etc/ssl/certs sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/certs/vsftpd.pem -out /etc/ssl/certs/vsftpd.pem - 配置vsftpd使用SSL:在
vsftpd.conf中添加以下参数: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/ssl/certs/vsftpd.pem rsa_private_key_file=/etc/ssl/certs/vsftpd.pem
5. 使用SELinux增强安全性
调整SELinux策略,限制vsftpd的权限:
- 允许FTP访问用户主目录:
sudo setsebool -P ftp_home_dir 1 - 禁止匿名用户写入(若允许匿名访问,需谨慎):
sudo setsebool -P allow_ftpd_anon_write 0 - 锁定敏感目录:使用
chattr命令防止系统关键目录被修改(如/etc、/bin)。sudo chattr +i /etc/passwd sudo chattr +i /etc/shadow
6. 防止暴力破解
通过PAM(Pluggable Authentication Modules)和账户策略强化登录安全:
- 设置强密码策略:要求用户使用包含大小写字母、数字和特殊字符的密码,定期更换(通过
passwd命令或chage工具)。 - 启用PAM限制:编辑
/etc/pam.d/vsftpd文件,添加以下行(限制登录尝试次数)。auth required pam_tally2.so deny=3 unlock_time=300
7. 监控与日志审计
启用日志记录,定期检查可疑活动:
- 开启传输日志:在
vsftpd.conf中设置:xferlog_enable=YES xferlog_file=/var/log/vsftpd.log xferlog_std_format=YES - 监控日志文件:使用
tail命令实时查看登录和传输记录,或通过logwatch工具生成日报。sudo tail -f /var/log/vsftpd.log
8. 使用虚拟用户(可选,更高安全性)
虚拟用户仅能访问FTP服务,无法登录系统,进一步提升安全性:
- 生成虚拟用户口令库:创建文本文件(如
/etc/vsftpd/account.txt),格式为“用户名+密码”(每行一个),然后生成数据库文件。echo -e "ftpuser1\npassword1\nftpuser2\npassword2" > /etc/vsftpd/account.txt db_load -T -t hash -f /etc/vsftpd/account.txt /etc/vsftpd/account.db chmod 600 /etc/vsftpd/account.db - 配置PAM认证:创建
/etc/pam.d/vsftp.vu文件,内容如下:auth required pam_userdb.so db=/etc/vsftpd/account account required pam_userdb.so db=/etc/vsftpd/account - 设置虚拟用户目录:创建专用目录并限制权限(如
/ftpsite)。sudo useradd -d /ftpsite -s /sbin/nologin virtual_user sudo mkdir -p /ftpsite sudo chown virtual_user:virtual_user /ftpsite sudo chmod 700 /ftpsite - 修改vsftpd.conf:启用虚拟用户认证,禁用本地用户登录(若仅需虚拟用户)。
anonymous_enable=NO local_enable=NO guest_enable=YES guest_username=virtual_user pam_service_name=vsftp.vu
通过以上步骤,可显著提升CentOS上vsftpd服务器的安全性,防范常见攻击(如匿名访问、暴力破解、数据泄露)。需根据实际需求调整配置,并定期进行安全审计。