在 CentOS 上保障 SFTP 安全,通常从账户隔离、权限控制、传输加密、网络限制、审计监控几个方面入手。下面给你一套实用且可落地的方案。
groupadd sftpusers
useradd -m -s /sbin/nologin -g sftpusers sftpuser
passwd sftpuser
/sbin/nologin禁止 SSH 登录,只能 SFTP
vi /etc/ssh/sshd_config
注释或删除:
# Subsystem sftp /usr/libexec/openssh/sftp-server
添加:
Subsystem sftp internal-sftp
Match Group sftpusers
ChrootDirectory /sftp/%u
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
mkdir -p /sftp/sftpuser
chown root:root /sftp/sftpuser
chmod 755 /sftp/sftpuser
mkdir /sftp/sftpuser/upload
chown sftpuser:sftpusers /sftp/sftpuser/upload
✅ Chroot 目录必须属主是 root
ssh-keygen
mkdir -p /home/sftpuser/.ssh
cat id_rsa.pub >> /home/sftpuser/.ssh/authorized_keys
chown -R sftpuser:sftpusers /home/sftpuser/.ssh
chmod 700 /home/sftpuser/.ssh
chmod 600 /home/sftpuser/.ssh/authorized_keys
PasswordAuthentication no
PubkeyAuthentication yes
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" accept'
firewall-cmd --reload
Port 2222
PermitRootLogin no
MaxAuthTries 3
ClientAliveInterval 300
LoginGraceTime 30
重启服务:
systemctl restart sshd
tail -f /var/log/secure
yum install -y audit
auditctl -w /sftp -p rwxa
CentOS SFTP 安全 = Chroot + nologin + 密钥登录 + 防火墙 + 日志审计
如果你需要:
可以直接说你的使用场景,我给你定制配置。