在 CentOS 上提升 SFTP 安全性,可以从系统配置、权限控制、加密与审计几个方面入手。下面按实用优先级给出建议(以 CentOS 7/8 为例,多数也适用于 Rocky/Alma)。
SFTP 基于 SSH,因此先强化 SSH:
vi /etc/ssh/sshd_config
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
前提:已为账户配置好公钥
Protocol 2
Port 2222
并同步防火墙:
firewall-cmd --add-port=2222/tcp --permanent
firewall-cmd --reload
重启服务:
systemctl restart sshd
useradd -m -s /sbin/nologin sftpuser
passwd sftpuser
vi /etc/ssh/sshd_config
在文件末尾添加:
Match User sftpuser
ChrootDirectory /sftp/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
mkdir -p /sftp/sftpuser/upload
chown root:root /sftp/sftpuser
chmod 755 /sftp/sftpuser
chown sftpuser:sftpuser /sftp/sftpuser/upload
✅ Chroot 目录必须属主为 root,且其他用户不可写
如果你不想和 SSH 混用:
好处:
firewall-cmd --permanent --add-service=ssh
firewall-cmd --reload
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
vi /etc/ssh/sshd_config
Subsystem sftp internal-sftp -l INFO -f AUTH
查看日志:
journalctl -u sshd
/var/log/secure
auditdinotifywaitKexAlgorithms curve25519-sha256
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com
MACs hmac-sha2-512
✅ 禁止 root 登录
✅ 禁用密码,使用密钥
✅ SFTP 用户 chroot 隔离
✅ fail2ban 防爆破
✅ 日志开启并定期审查
✅ 非必要不开放 22 端口
如果你愿意,我可以: