CentOS如何防止VSFTP被攻击
小樊
45
2025-11-29 16:03:55
CentOS 下加固 VSFTP 的安全实践
一 基础加固配置
- 禁用匿名访问并仅允许本地用户:设置 anonymous_enable=NO、local_enable=YES。
- 限制用户在其主目录:设置 chroot_local_user=YES,防止目录遍历;如遇到 SELinux 限制,可按需调整布尔值(如 setsebool -P ftp_home_dir 1),但更推荐保持默认安全策略并配合最小权限使用。
- 精细化写权限:仅在需要时开启 write_enable=YES,避免为所有用户开放上传/删除。
- 启用日志与传输日志:开启 xferlog_enable=YES、xferlog_std_format=YES,便于审计与追踪异常行为。
- 保持软件与补丁更新:定期执行 yum update vsftpd,及时修复已知漏洞。
二 身份与访问控制
- 系统级黑名单优先:将高权限或危险账户写入 /etc/vsftpd/ftpusers,该文件为“永久黑名单”,不受其他开关影响,建议至少包含 root 等管理账号。
- 灵活的用户白/黑名单:通过 /etc/vsftpd/user_list 配合 userlist_enable=YES 与 userlist_deny=NO/YES 实现白名单或黑名单策略(二选一,务必明确语义,避免误封)。
- 基于防火墙的主机限制:在 CentOS 7/8 推荐使用 firewalld 的富规则对来源 IP 进行拒绝或放行,替代传统的 tcp_wrappers(在 CentOS 8 中不再适用)。
三 加密传输与被动端口
- 启用 TLS/SSL 加密:为 vsftpd 配置 SSL/TLS(证书可由 openssl 生成),强制或优先使用加密通道,防止凭据与数据在明文下传输。
- 固定被动模式端口段并放行:在配置中设置 pasv_min_port=30000、pasv_max_port=31000,并在防火墙中仅允许该范围的端口,减少被动模式下的攻击面。
- 端口变更与访问控制:如需变更默认控制端口,可在 vsftpd.conf 中设置 listen_port=2123 并同步调整防火墙策略,同时仅对受信来源开放。
四 抗暴力破解与入侵检测
- 基于日志的自动封禁:编写脚本分析 /var/log/secure 中 FTP 失败登录(如 “Failed” 关键字),当某 IP 的失败次数超过阈值(如 100 次)时,自动将其加入 /etc/hosts.deny 以阻断 vsftpd(及可选的 SSH)访问,并通过 crontab 定时执行,形成持续防护。
- 主动防御脚本要点:统计失败 IP → 与阈值比较 → 不在黑名单则追加到 /etc/hosts.deny → 记录与告警,便于事后复盘。
五 快速检查清单
- 配置核对:确认 anonymous_enable=NO、local_enable=YES、chroot_local_user=YES、write_enable 按需、xferlog_enable=YES。
- 访问控制:/etc/vsftpd/ftpusers 黑名单就位;/etc/vsftpd/user_list 与 userlist_enable/userlist_deny 策略一致且已验证。
- 加密与端口:已配置 TLS/SSL;被动端口段(如 30000–31000)在防火墙放行;如需变更端口,已同步更新防火墙与服务配置。
- 日志与监控:/var/log/secure 与传输日志正常输出;自动封禁脚本已部署并运行,阈值与周期符合业务与安全要求。
- 系统加固:vsftpd 与系统组件保持最新;仅开放必要端口与来源 IP;定期审计用户、权限与目录。