CentOS FTP Server怎样防止攻击
导读:CentOS FTP Server 防护与加固清单 一 基础加固与访问控制 禁用匿名访问,仅允许本地系统用户登录,并限制可登录用户名单;将本地用户chroot到其主目录,避免目录遍历;如需写入,优先使用不可写的根目录配合可写的子目录,或在...
CentOS FTP Server 防护与加固清单
一 基础加固与访问控制
- 禁用匿名访问,仅允许本地系统用户登录,并限制可登录用户名单;将本地用户chroot到其主目录,避免目录遍历;如需写入,优先使用不可写的根目录配合可写的子目录,或在确保安全的前提下开启allow_writeable_chroot(存在风险)。示例配置:anonymous_enable=NO、local_enable=YES、chroot_local_user=YES、userlist_enable=YES、userlist_deny=NO。
- 启用详细日志与审计:开启xferlog_enable=YES、xferlog_std_format=YES,结合系统日志(如**/var/log/secure**)与Auditd审计关键文件与登录行为,便于发现暴力破解与异常访问。
- 强化口令与账户安全:通过 PAM 设置复杂度与长度(如 minlen=8、包含大小写与数字),定期更换密码;禁止root直接登录 FTP,必要时仅以普通用户登录再提权。
- 最小权限与系统最小化:仅开启必要服务,禁用不需要的端口与后台服务,减少攻击面;为 FTP 服务创建专用系统用户与受限目录,避免共享账号与过宽权限。
二 加密传输与端口管理
- 启用 SSL/TLS(FTPS) 强制加密:配置 ssl_enable=YES、force_local_logins_ssl=YES、force_local_data_ssl=YES,禁用不安全协议(ssl_sslv2=NO、ssl_sslv3=NO),指定证书与私钥路径(如 rsa_cert_file、rsa_private_key_file)。
- 明确被动模式端口范围并放行防火墙:在 vsftpd.conf 中设置 pasv_min_port 与 pasv_max_port(如30000–31000),在 firewalld 中放行控制端口与被动端口段,避免数据通道被拦截。
- 防火墙精细化:仅开放必要来源 IP(如业务网段)访问 21/TCP 与被动端口段;可使用 firewalld 富规则或临时策略进行访问控制。
三 缓解暴力破解与资源耗尽
- 限制登录尝试与并发:通过 PAM 模块(如 pam_tally2 或 pam_faillock)设置失败锁定阈值与解锁时间,降低暴力破解成功率;结合 fail2ban 对频繁失败的来源 IP 进行自动封禁(需确保日志可读)。
- 控制并发连接与会话:在 vsftpd 中限制本地用户最大连接数(如 max_clients、max_per_ip),避免单个账号或单 IP 占用过多资源。
- 资源与速率限制:限制单用户带宽与连接速率,防止滥用导致服务不可用;对异常流量(短时大量连接、异常 PORT 命令)触发临时封禁或限速策略。
- 运行环境加固:保持 vsftpd、系统内核与依赖库及时更新(yum update),修复已知漏洞;启用 SELinux 并维持 enforcing 模式,必要时为 FTP 相关访问设置精确布尔值(如 ftp_home_dir)。
四 监控响应与灾备
- 集中日志与告警:将 /var/log/secure、/var/log/vsftpd.log 接入集中日志平台(如 rsyslog + ELK/Graylog),对“多次失败登录、异常 IP、异常时段传输”设置告警;定期审计与复盘。
- 备份与演练:定期备份 vsftpd 配置、用户与证书,并进行恢复演练;在重大变更前保留回滚方案。
- 架构侧防护:在条件允许时,优先采用 SFTP/FTPS 替代明文 FTP,或将 FTP 置于 DMZ/内网并使用跳板与代理进行访问控制;对外仅暴露必要端口与协议。
五 关键配置示例
- 最小安全配置片段(/etc/vsftpd/vsftpd.conf)
- 匿名与本地:anonymous_enable=NO;local_enable=YES
- 身份与目录:chroot_local_user=YES;allow_writeable_chroot=NO(如需写入,改为子目录可写)
- 访问控制:userlist_enable=YES;userlist_file=/etc/vsftpd.userlist;userlist_deny=NO
- 日志:xferlog_enable=YES;xferlog_std_format=YES
- 被动端口:pasv_min_port=30000;pasv_max_port=31000
- TLS:ssl_enable=YES;force_local_logins_ssl=YES;force_local_data_ssl=YES;ssl_sslv2=NO;ssl_sslv3=NO;rsa_cert_file=/etc/pki/tls/certs/your_cert.crt;rsa_private_key_file=/etc/pki/tls/private/your_key.key
- 防火墙放行(firewalld)
- firewall-cmd --permanent --add-port=21/tcp
- firewall-cmd --permanent --add-port=20/tcp
- firewall-cmd --permanent --add-port=30000-31000/tcp
- firewall-cmd --reload
- 证书生成简例
- openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/pki/tls/private/vsftpd.key -out /etc/pki/tls/certs/vsftpd.crt
- 说明
- 修改配置后执行:systemctl restart vsftpd
- 若启用 SELinux,按需设置:setsebool -P ftp_home_dir on(以及 allow_ftpd_full_access 等,仅在明确需要时开启)
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS FTP Server怎样防止攻击
本文地址: https://pptw.com/jishu/761486.html
