温馨提示×

centos sftp怎样提安全性

小樊
35
2026-10-23 13:16:19
栏目: 智能运维

在 CentOS 上提升 SFTP 安全性,可以从系统配置、权限控制、加密与审计几个方面入手。下面按实用优先级给出建议(以 CentOS 7/8 为例,多数也适用于 Rocky/Alma)。


一、禁用不安全的 SSH 功能(最关键)

SFTP 基于 SSH,因此先强化 SSH:

1. 禁止 root 直接登录

vi /etc/ssh/sshd_config
PermitRootLogin no

2. 禁用密码登录,强制密钥

PasswordAuthentication no
PubkeyAuthentication yes

前提:已为账户配置好公钥

3. 限制 SSH 协议版本

Protocol 2

4. 修改默认端口(可选)

Port 2222

并同步防火墙:

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

重启服务:

systemctl restart sshd

二、使用 SFTP 专用账户(chroot 隔离)

1. 创建 SFTP 用户

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

2. 配置 chroot(重要)

vi /etc/ssh/sshd_config

在文件末尾添加:

Match User sftpuser
    ChrootDirectory /sftp/%u
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no

3. 创建目录并修正权限(非常关键)

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

✅ Chroot 目录必须属主为 root,且其他用户不可写


三、使用独立 SFTP 服务(高级做法)

如果你不想和 SSH 混用:

  • 使用 OpenSSH 多实例
  • 或使用 ProFTPD / vsftpd + SFTP

好处:

  • 可单独限制带宽、并发
  • 更容易审计

四、防火墙 & 暴力破解防护

1. 使用 firewalld

firewall-cmd --permanent --add-service=ssh
firewall-cmd --reload

2. 使用 fail2ban(强烈推荐)

yum install epel-release -y
yum install fail2ban -y

配置:

vi /etc/fail2ban/jail.d/sshd.conf
[sshd]
enabled = true
port = 2222
maxretry = 3
bantime = 3600
systemctl enable --now fail2ban

五、日志与审计

1. 开启 SFTP 日志

vi /etc/ssh/sshd_config
Subsystem sftp internal-sftp -l INFO -f AUTH

查看日志:

journalctl -u sshd
/var/log/secure

2. 审计文件操作(可选)

  • auditd
  • inotifywait

六、加密 & 算法强化(进阶)

KexAlgorithms curve25519-sha256
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com
MACs hmac-sha2-512

七、安全 checklist(总结)

✅ 禁止 root 登录
✅ 禁用密码,使用密钥
✅ SFTP 用户 chroot 隔离
✅ fail2ban 防爆破
✅ 日志开启并定期审查
✅ 非必要不开放 22 端口


如果你愿意,我可以:

  • 给你一套 可直接用的 sshd_config
  • 或按你的 业务场景(对外/内网/多用户) 定制方案

0 踩