centos sftp安全配置指南
CentOSSFTP安全配置指南
一基础安全基线
保持系统更新:执行sudoyumupdate-y,及时修补漏洞。
安装并启用OpenSSH服务:执行sudoyuminstall-yopenssh-server&&sudosystemctlenable--nowsshd。
禁止root直接登录:在/etc/ssh/sshd_config中设置PermitRootLoginno。
使用密钥认证优先:设置PasswordAuthenticationno,并为账户部署公钥(置于~/.ssh/authorized_keys,权限600,目录700)。
仅启用内部SFTP子系统:设置Subsystemsftpinternal-sftp,便于chroot与权限控制。
禁用不必要功能:在全局或针对SFTP用户的Match块中关闭AllowTcpForwardingno、X11Forwardingno。
防火墙放行SSH:使用firewall-cmd--permanent--add-service=ssh&&firewall-cmd--reload。
日志与审计:保留并定期查看/var/log/secure,监控失败登录与异常行为。
二用户与目录权限
创建专用用户与组:
组:sudogroupaddsftpusers
用户:sudouseradd-m-Gsftpuserssftpuser&&sudopasswdsftpuser
正确设置chroot根目录权限:
chroot目标(如/home/sftpuser)及其所有上级目录必须属主为root:root,权限755,否则internal-sftp会拒绝登录。
为用户提供可写目录:
例如:mkdir-p/home/sftpuser/upload&&chownsftpuser:sftpusers/home/sftpuser/upload&&chmod755/home/sftpuser/upload。
仅SFTP的受限Shell(可选):创建用户时可使用-s/sbin/nologin,进一步降低交互式登录风险。
三加固后的sshd_config示例
#全局基线Port22PermitRootLoginnoPasswordAuthenticationnoChallengeResponseAuthenticationnoUsePAMyesX11ForwardingnoAllowTcpForwardingnoSubsystemsftpinternal-sftp#仅允许sftpusers组使用SFTP并chroot到其家目录MatchGroupsftpusersChrootDirectory%hForceCommandinternal-sftpAllowTcpForwardingnoX11Forwardingno
修改后执行:sudosystemctlrestartsshd并测试连接。
如需自定义端口(例如2222),在全局Port增加或替换端口,并在防火墙放行对应端口。
四网络与访问控制
防火墙放行:
默认端口:firewall-cmd--permanent--add-service=ssh&&firewall-cmd--reload
自定义端口:firewall-cmd--permanent--add-port=2222/tcp&&firewall-cmd--reload
限制来源IP(两种做法,择一或并用):
防火墙层面:
放通白名单到trusted区域:firewall-cmd--permanent--zone=trusted--add-source=1.2.3.4
仅trusted区域放行SSH:firewall-cmd--permanent--zone=trusted--add-service=ssh
重载:firewall-cmd--reload
SSH层面(MatchAddress):
在/etc/ssh/sshd_config的Match块中加入MatchAddress1.2.3.4,5.6.7.8以限制仅这些来源可用SFTP。
五运维与故障排查
连接与权限验证:
连接测试:sftpsftpuser@your_server_ip(或-P2222指定端口)。
常见登录失败原因:chroot目录或其上级目录属主非root、权限非755、用户家目录未对SFTP用户可写(应在chroot下单独建可写子目录)。
SELinux场景:
不建议直接关闭SELinux。若遇到权限问题,优先使用restorecon恢复默认上下文,或按需调整布尔值与策略;确需临时排障可setenforce0,验证后恢复setenforce1。
日志与监控:
实时查看:sudotail-f/var/log/secure;对失败登录、异常IP、非法命令进行告警与封禁。

