CentOS环境下VSFTP的安全加固
小樊
34
2025-12-25 06:11:18
CentOS环境下VSFTP安全加固清单
一 基础安全配置
- 禁用匿名访问、仅启用本地用户,按需开启写入:
- anonymous_enable=NO
- local_enable=YES
- write_enable=YES(仅在确实需要上传时开启)
- 限制用户在其家目录,避免可写根目录风险:
- chroot_local_user=YES
- allow_writeable_chroot=NO(更安全的默认做法;若业务必须可写,再评估风险并加固目录与权限)
- 启用日志与传输日志,便于审计与排错:
- xferlog_enable=YES
- xferlog_std_format=YES
- 使用 PAM 认证并明确服务名:
- 建议明确监听地址族(避免不必要的监听):
- listen=YES
- listen_ipv6=NO(如不使用 IPv6)
二 用户与访问控制
- 使用专用系统账户且仅允许 FTP 登录:
- 创建用户:useradd -m ftpuser -s /sbin/nologin
- 设置强口令并定期更换
- 用户白名单/黑名单控制:
- /etc/vsftpd/ftpusers 为永久黑名单(如 root 等高权限账户应加入)
- 启用 user_list 白名单模式:
- userlist_enable=YES
- userlist_deny=NO
- 将允许登录的账户写入 /etc/vsftpd/user_list
- 主机访问控制(CentOS 8 起建议用 firewalld 富规则替代 tcp_wrappers):
- 仅允许可信网段:firewall-cmd --permanent --add-rich-rule=‘rule family=“ipv4” source address=“10.0.0.0/24” accept’ --permanent
- 拒绝恶意网段:firewall-cmd --permanent --add-rich-rule=‘rule family=“ipv4” source address=“203.0.113.0/24” reject’ --permanent
- firewall-cmd --reload
三 传输加密与端口管理
- 启用 TLS/SSL 强制加密,禁用明文会话:
- ssl_enable=YES
- force_local_logins_ssl=YES
- force_local_data_ssl=YES
- rsa_cert_file=/etc/pki/tls/certs/your_cert.crt
- rsa_private_key_file=/etc/pki/tls/private/your_key.key
- 建议禁用不安全协议:ssl_sslv2=NO,ssl_sslv3=NO;仅启用 TLSv1.2/1.3(依 OpenSSL 支持)
- 被动模式端口范围与防火墙放行(示例开放 50000–50100):
- pasv_enable=YES
- pasv_min_port=50000
- pasv_max_port=50100
- 防火墙:firewall-cmd --permanent --add-port=21/tcp;firewall-cmd --permanent --add-port=50000-50100/tcp;firewall-cmd --reload
- 客户端连接测试(如使用 FileZilla)应仅出现 TLS 安全会话
四 连接与资源限制
- 限制并发与速率,抑制滥用与 DoS:
- max_clients=100(按业务评估)
- max_per_ip=5(按业务评估)
- local_max_rate=307200(约 300 KB/s,按需调整)
- anon_max_rate=307200(如启用匿名,建议同样限速)
- 连接空闲与超时控制(示例值,可按业务微调):
- idle_session_timeout=600
- data_connection_timeout=120
- 日志集中与监控:
- 持续关注认证与传输日志(如 /var/log/secure、/var/log/vsftpd.log),设置告警规则识别频繁失败登录与异常流量
五 加固实施与验证步骤
- 备份与最小变更:
- cp /etc/vsftpd/vsftpd.conf{,.bak_$(date +%F)}
- 逐项修改并保留变更记录
- 配置语法检查与服务重启:
- vsftpd -t(语法检查)
- systemctl restart vsftpd && systemctl enable vsftpd
- 连通性与安全验证:
- 使用 FileZilla/命令行尝试登录,确认仅支持 TLS、仅白名单用户可登录、被动端口连通
- 验证 chroot 生效(无法访问上级目录)、上传/下载权限符合预期
- SELinux 与权限:
- 如启用 SELinux 且遇到写入失败,按需设置:setsebool -P ftp_home_dir on
- 目录权限建议:家目录 755,上传目录 775,属主属组均为对应 FTP 用户