温馨提示×

centos如何加固sftp安全

小樊
50
2026-09-21 06:31:42
栏目: 智能运维

在 CentOS 上加固 SFTP(SSH File Transfer Protocol) 安全,通常从 SSH 配置、账户权限、网络访问、日志审计 等方面入手。下面按“实用 + 安全”的方式给你一套完整方案。


一、使用独立 SFTP 用户(禁止 Shell 登录)

1. 创建 SFTP 专用用户组

groupadd sftpusers

2. 创建用户并禁止 SSH Shell

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

二、配置 Chroot 限制目录(最重要)

1. 创建目录结构

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

⚠️ Chroot 目录 必须由 root 拥有

2. 修改 SSH 配置

编辑 /etc/ssh/sshd_config:

Subsystem sftp internal-sftp

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

重启 SSH:

systemctl restart sshd

三、禁用 root 登录和弱认证

1. 禁止 root 登录

PermitRootLogin no

2. 推荐:禁用密码,使用密钥

PasswordAuthentication no
PubkeyAuthentication yes

生成密钥:

ssh-keygen -t ed25519

复制公钥:

ssh-copy-id sftpuser@server

四、限制 SSH 访问来源(防火墙 + SSH)

1. 防火墙限制(推荐)

firewall-cmd --permanent --add-port=22/tcp
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.0/24" port port="22" protocol="tcp" accept'
firewall-cmd --reload

2. SSH 绑定内网(可选)

ListenAddress 10.0.0.10

五、加强 SSH 安全参数

Protocol 2
LoginGraceTime 30
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2

六、使用非默认端口(降低扫描)

Port 2222

记得同步防火墙和 SELinux

SELinux 放行:

semanage port -a -t ssh_port_t -p tcp 2222

七、日志与审计

1. 查看 SFTP 日志

tail -f /var/log/secure

2. 开启详细日志(可选)

LogLevel VERBOSE

八、可选增强(高安全场景)

✅ 使用 Fail2Ban 防爆破
✅ 使用 ACL 精细控制目录权限
✅ 使用 SELinux 限制 SFTP 行为
✅ 定期审计用户与密钥


九、最小化安全配置示例(总结)

Subsystem sftp internal-sftp

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
Port 2222

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

如果你愿意,我可以:

  • 给你一份 CentOS 7 / 8 / Stream 专用配置
  • 帮你写 Fail2Ban SFTP 规则
  • 帮你做 等保 / 合规 SFTP 加固清单

你现在是 CentOS 几?用在什么场景(内网 / 公网 / 业务系统)?

0 踩