CentOS下SFTP安全配置指南
导读:一 环境准备与基线加固 安装并启用 OpenSSH 服务,保持系统与安全组件为最新版本: 安装:sudo yum install -y openssh-server 启动与开机自启:sudo systemctl start sshd &...
一 环境准备与基线加固
- 安装并启用 OpenSSH 服务,保持系统与安全组件为最新版本:
- 安装:sudo yum install -y openssh-server
- 启动与开机自启:sudo systemctl start sshd & & sudo systemctl enable sshd
- 防火墙仅放行 SSH 端口 22:
- firewalld:sudo firewall-cmd --permanent --add-service=ssh & & sudo firewall-cmd --reload
- 禁止 root 直接登录,降低爆破与提权风险:
- 在 /etc/ssh/sshd_config 中设置:PermitRootLogin no
- 建议启用 密钥认证、禁用密码登录(见下文“认证与访问控制”),并定期更新系统与软件包以修补漏洞。
二 用户与目录规划
- 创建专用的 SFTP 用户组 与 系统用户,并限制其仅用于 SFTP:
- 建组:sudo groupadd sftpusers
- 建用户(禁止 shell 登录,仅用于 SFTP):sudo useradd -g sftpusers -s /sbin/nologin sftpuser
- 设置密码:sudo passwd sftpuser
- 规划目录结构(示例将用户根目录置于 /data/sftp):
- 目录:sudo mkdir -p /data/sftp/sftpuser/upload
- 权限关键点:Chroot 根目录必须由 root 拥有且权限为 755,否则 chroot 会失败;可写目录由用户所有:
- sudo chown root:sftpusers /data/sftp/sftpuser
- sudo chmod 755 /data/sftp/sftpuser
- sudo chown sftpuser:sftpusers /data/sftp/sftpuser/upload
- 如需使用用户家目录作为 Chroot,同样确保家目录属主为 root:root 且权限 755。
三 SSHD 配置与 SFTP 子系统
- 编辑 /etc/ssh/sshd_config,建议采用“内部 SFTP + 组限制 + 禁用转发”的组合:
- 全局启用内部 SFTP 子系统:Subsystem sftp internal-sftp
- 对 SFTP 用户组应用限制(示例为 sftpusers):
Match Group sftpusers ChrootDirectory %h ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no - 说明:
- ChrootDirectory %h 将用户根目录限制在其主目录;%h 为主目录占位符。
- ForceCommand internal-sftp 强制仅提供 SFTP,避免开启 shell。
- 禁用 AllowTcpForwarding 与 X11Forwarding 减少攻击面。
- 如需仅对单个用户生效,可将 Match Group sftpusers 替换为 Match User sftpuser。
- 修改后检查语法并重启服务:
- 语法检查:sudo sshd -t
- 重启:sudo systemctl restart sshd。
四 认证与访问控制
- 优先使用 SSH 密钥认证,禁用密码登录:
- 在 /etc/ssh/sshd_config 中设置:
- PasswordAuthentication no
- PubkeyAuthentication yes
- 将用户公钥写入 ~/.ssh/authorized_keys(注意:chroot 环境下该文件应位于 Chroot 根目录下的 .ssh/authorized_keys),并设置权限:
- chmod 700 ~/.ssh & & chmod 600 ~/.ssh/authorized_keys
- 在 /etc/ssh/sshd_config 中设置:
- 结合 防火墙 仅开放 22/TCP,并可使用 fail2ban 防止暴力破解:
- 安装与启用(示例):sudo yum install -y fail2ban & & sudo systemctl enable --now fail2ban
- 可选:在 /etc/login.defs 中设置 PASS_MIN_LEN 10 等策略,提升口令强度基线。
五 日志审计与验证
- 启用并定期检查 SSH/SFTP 日志,用于审计与异常检测:
- 日志路径:/var/log/secure(journalctl 亦可:journalctl -u sshd -f)
- 连接与权限验证步骤:
- 连接测试:sftp sftpuser@your_server_ip
- 验证要点:
- 仅能访问其 Chroot 目录及其子目录(如 upload),无法越权浏览系统其他路径。
- 无法开启 TCP 转发 或 X11 转发。
- 若采用密钥登录,确保密码登录已关闭且公钥已正确部署。
- 变更风险控制:
- 修改 sshd_config 后务必先执行 sshd -t 检查语法,再重启 sshd,避免锁死远程访问。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS下SFTP安全配置指南
本文地址: https://pptw.com/jishu/750235.html
