在 CentOS 上配置 SFTP 时,安全防护绝对是重中之重。文件传输服务一旦出现漏洞,很容易成为攻击者的突破口。因此,从密码强度到防火墙规则,每一步都需要真正做到“防患于未然”。以下这套配置方案,是经过实际运维考验后总结出的安全加固经验。

实施强密码策略
- 密码是系统安全的第一道关口,也是最容易被忽视的环节。请务必为每个 SFTP 用户设置复杂且唯一的密码,坚决避免使用“123456”或“admin”这类默认弱口令。
- 除了初始设置,还应强制定期更换密码。引导用户遵守密码策略虽然初期可能有些抵触,但习惯一旦养成,就能显著提升整体安全性。
启用 SSH 密钥认证
- 说实话,单纯依赖密码验证远不如 SSH 密钥对来得可靠。生成一对公私钥,私钥保存在客户端,公钥部署到服务器——这种方式不仅比密码更安全,也非常适合自动化脚本和批量操作。
- 在
/etc/ssh/sshd_config中添加以下两行配置,即可关闭密码登录,全面切换为密钥认证模式:PubkeyAuthentication yes
PasswordAuthentication no
配置防火墙规则
- 防火墙绝不能闲置。通过
firewalld或iptables严格限定端口,仅开放 SSH 服务的默认端口(如 22)。如果你已经修改了端口号,则能进一步降低被端口扫描器发现的风险。 - 以
firewalld为例,开放 SSH 服务的操作命令如下:sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload
限制用户权限
- 限制用户的活动范围才能带来安全感。通过
chrootDirectory指令,将用户禁锢在其主目录中,彻底杜绝跨目录访问的可能。 - 在
/etc/ssh/sshd_config中这样配置,例如为名为sftpusers的用户组创建专用“牢笼”:Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
开启日志记录与监控
- 与其等出问题后再翻查日志,不如提前将日志启用到最详细级别。细致记录系统活动,一旦出现异常,便能快速溯源。
- 编辑
/etc/ssh/sshd_config,添加或修改以下行:SyslogFacility AUTHPRIV
定期更新系统补丁
- 这一点无需赘述——系统若不及时更新,已知漏洞就随时可能被利用。在 CentOS 上执行更新非常简单:
sudo yum update
合理利用 SELinux
- 如果系统自带了 SELinux,请不要随意关闭它。正确配置后,SELinux 可以作为最后一道防线。当然,在临时测试新配置时,可暂时将其设置为宽松模式,例如:
测试结束后务必恢复为强制模式。setenforce 0
禁用无需的端口与服务
- 攻击面越小,系统越安全。关闭所有无关服务,收紧端口。在
/etc/ssh/sshd_config中,可以直接禁用密码认证来减少风险:PasswordAuthentication no
精细配置 SSH 服务
- 最后的关键一步,是仔细审查
/etc/ssh/sshd_config文件中的核心参数。以下几项必须确认到位:Port 22 # 建议更换默认端口,提高破解难度
PermitRootLogin no # 绝不允许 root 直接远程登录
PasswordAuthentication no # 若已切换密钥认证,则关闭密码登录
PubkeyAuthentication yes # 必须启用公钥认证
AllowUsers your_username # 仅允许指定用户通过 SSH 访问,其余一律拒绝
测试 SFTP 连接
- 配置完成后,务必进行实际连接测试。使用客户端尝试登录,验证文件传输是否正常:
sftp username@your_server_ip
经过上述一系列组合加固,CentOS 上 SFTP 的安全性已得到大幅提升。不过,安全从来不是一劳永逸的事。建议定期回顾这些策略,根据新的威胁形势及时调整。说到底,安全始终是一场动态博弈,持续优化才是保持稳固的正道。
