温馨提示×

怎么提升CentOS SFTP安全

小樊
45
2026-07-08 18:09:27
栏目: 智能运维

在 CentOS 上提升 SFTP(SSH File Transfer Protocol)安全性,可以从 SSH 配置、用户权限、防火墙、审计与防护 等多个方面入手。下面给你一套生产环境常用、可落地的加固方案


一、基础安全:限制 SSH / SFTP 访问

1. 使用独立 SFTP 配置(推荐)

避免普通用户拥有 SSH Shell 权限。

创建 SFTP 专用用户组

groupadd sftpusers

创建 SFTP 用户(禁止登录 Shell)

useradd -m -g sftpusers -s /sbin/nologin sftpuser
passwd sftpuser

2. 配置 SSH 仅允许 SFTP(Chroot)

编辑 SSH 配置:

vim /etc/ssh/sshd_config

在文件末尾添加:

Match Group sftpusers
    ChrootDirectory /data/sftp/%u
    ForceCommand internal-sftp
    X11Forwarding no
    AllowTcpForwarding no

3. 设置 Chroot 目录权限(非常关键)

mkdir -p /data/sftp/sftpuser
chown root:root /data/sftp/sftpuser
chmod 755 /data/sftp/sftpuser

mkdir /data/sftp/sftpuser/upload
chown sftpuser:sftpusers /data/sftp/sftpuser/upload

Chroot 目录必须归 root 所有,且不可写


二、SSH 服务层安全加固

4. 禁止 root 登录

PermitRootLogin no

5. 禁用密码登录(强烈推荐)

PasswordAuthentication no

✅ 使用 SSH Key 登录


6. 修改默认 SSH 端口

Port 2222

⚠️ 记得同步防火墙规则


7. 限制允许登录的用户

AllowUsers sftpuser
# 或
AllowGroups sftpusers

三、SSH Key 认证(提升安全性)

8. 生成密钥

ssh-keygen -t ed25519 -C "sftpuser"

9. 部署公钥

mkdir /home/sftpuser/.ssh
cat id_ed25519.pub >> /home/sftpuser/.ssh/authorized_keys
chmod 600 /home/sftpuser/.ssh/authorized_keys
chown -R sftpuser:sftpusers /home/sftpuser/.ssh

四、防火墙 & 端口安全

10. 使用 firewalld 限制访问

firewall-cmd --permanent --add-port=2222/tcp
firewall-cmd --reload

11. 限制来源 IP(推荐)

firewall-cmd --permanent \
  --add-rich-rule='rule family="ipv4" source address="1.2.3.4" port port="2222" protocol="tcp" accept'
firewall-cmd --reload

五、防止暴力破解

12. 安装 fail2ban

yum install -y epel-release
yum install -y fail2ban
systemctl enable --now fail2ban

示例配置:

[sshd]
enabled = true
port = 2222
maxretry = 3
bantime = 3600

六、日志与审计

13. 开启 SFTP 日志

Subsystem sftp internal-sftp -l INFO

查看日志:

journalctl -u sshd
/var/log/secure

七、文件系统安全

14. 禁止 SFTP 用户访问其他目录

✅ 正确配置 ChrootDirectory 即可

15. 使用只读 / 只写目录

chmod 555 /data/sftp/sftpuser
chmod 755 /data/sftp/sftpuser/upload

八、定期检查清单 ✅

项目 建议
是否禁止 root 登录
是否使用密钥认证
是否限制 SFTP 用户 Shell
是否启用 Chroot
是否限制 IP
是否启用 fail2ban

九、推荐安全等级

场景 建议
公网 SFTP 密钥 + Chroot + fail2ban + 非 22 端口
内网 SFTP Chroot + 用户隔离
高安全 + IP 白名单 + 审计日志

如果你愿意,我可以:

  • ✅ 给你一份 完整 sshd_config 示例
  • ✅ 帮你 一键加固脚本
  • ✅ 针对 CentOS 7 / 8 / Stream 单独说明

只要告诉我你的 CentOS 版本和使用场景 即可。

0