CentOS SFTP安全漏洞如何防范
CentOSSFTP安全漏洞防范清单
一加固基础配置
禁用root登录:在/etc/ssh/sshd_config设置PermitRootLoginno,重启sshd。
使用SSH密钥替代密码:客户端生成4096位RSA密钥,将公钥写入用户~/.ssh/authorized_keys,并设置权限700/600;服务端禁用密码认证PasswordAuthenticationno、启用PubkeyAuthenticationyes。
仅启用内部SFTP:注释或移除外部子系统,使用Subsystemsftpinternal-sftp。
限制危险功能:在MatchGroupsftpusers中设置ForceCommandinternal-sftp、AllowTcpForwardingno、X11Forwardingno。
目录与所有权:Chroot根目录(如%h或/sftp/%u)必须由root:root拥有且权限755;可写目录在子目录中单独授权给相应用户。
防火墙:仅放行22/TCP,如条件允许仅允许受信IP段访问。
日志与监控:设置LogLevelVERBOSE,持续审计/var/log/secure。
定期更新:执行yumupdateopenssh-server保持修复最新漏洞。
二用户与权限隔离
创建专用组与用户:
groupaddsftpusers
useradd-m-gsftpusers-s/sbin/nologinsftpuser(或-s/bin/false)
目录结构示例:
/sftp/sftpuser(root:root,755)
/sftp/sftpuser/upload(sftpuser:sftpusers,755/775视业务而定)
Chroot与权限要点:Chroot目录及上级必须为root所有;如需上传,给对应用户在子目录授予写权限,避免对Chroot根目录可写。
公钥分发与权限:
mkdir-p~sftpuser/.ssh&&chmod700~sftpuser/.ssh
echo“<公钥>”>~sftpuser/.ssh/authorized_keys&&chmod600~sftpuser/.ssh/authorized_keys
chown-Rsftpuser:sftpusers~sftpuser/.ssh
可选:为SFTP用户设置umask002/022,统一新建文件权限。
三网络与登录防护
限制来源IP:
firewalld:firewall-cmd--permanent--zone=public--add-rich-rule=‘rulefamily=“ipv4”sourceaddress=“
或仅放行白名单段,其余默认拒绝。
防暴力破解:部署Fail2ban,启用[sshd]jail,maxretry=5、bantime=3600,日志路径/var/log/secure。
端口与协议:尽量保持22/TCP不变更;如需端口迁移,同步更新防火墙与客户端配置,并谨慎评估现有自动化流程的兼容性。
连接测试:
sftpsftpuser@
验证仅密钥可登录、失败登录被封禁、日志有对应记录。
四已知漏洞处置要点
CVE-2020-15778(scp命令注入):
修复:升级到OpenSSH≥8.4;如无法升级,建议禁用scp(如重命名/usr/bin/scp为不可用或卸载openssh-clients,注意对运维流程影响)。
说明:该问题影响scp,不直接等同于SFTP子系统漏洞,但常见运维替代关系使风险外溢。
低版本OpenSSH历史漏洞:如扫描报出历史SFTP/SSH漏洞,建议升级至包含修复的版本(如8.5p1起修复若干问题);离线环境升级前准备telnet等应急通道,升级后及时关闭。
五快速配置示例
服务端/etc/ssh/sshd_config片段:
PermitRootLoginno
PasswordAuthenticationno;PubkeyAuthenticationyes
Subsystemsftpinternal-sftp
MatchGroupsftpusers
ChrootDirectory%h
ForceCommandinternal-sftp
AllowTcpForwardingno;X11Forwardingno
目录与权限:
chownroot:root/sftp/sftpuser&&chmod755/sftp/sftpuser
chownsftpuser:sftpusers/sftp/sftpuser/upload
生效与验证:
systemctlrestartsshd
tail-f/var/log/secure;sftpsftpuser@

