CentOS SFTP 安全性提升清单
一 基础加固
二 认证与访问控制
三 网络与端口安全
四 目录权限与 SELinux 要点
五 快速配置示例
# 1) 安装与启动
sudo yum install -y openssh-server fail2ban
sudo systemctl enable --now sshd fail2ban
# 2) 创建用户与目录(Chroot 根不可写,子目录可写)
sudo groupadd sftpusers
sudo useradd -m -g sftpusers -s /bin/false sftpuser
sudo mkdir -p /srv/sftp/sftpuser/uploads
sudo chown root:root /srv/sftp /srv/sftp/sftpuser
sudo chmod 755 /srv/sftp /srv/sftp/sftpuser
sudo chown sftpuser:sftpusers /srv/sftp/sftpuser/uploads
sudo chmod 755 /srv/sftp/sftpuser/uploads # 可按需设为 775 并配合 umask/ACL
# 3) 配置公钥(客户端生成后将公钥内容追加到 authorized_keys)
sudo mkdir -p /home/sftpuser/.ssh
sudo tee /home/sftpuser/.ssh/authorized_keys <<'EOF'
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ... sftpuser@client
EOF
sudo chown -R sftpuser:sftpusers /home/sftpuser/.ssh
sudo chmod 700 /home/sftpuser/.ssh
sudo chmod 600 /home/sftpuser/.ssh/authorized_keys
# 4) 配置 sshd_config(建议先备份)
sudo tee -a /etc/ssh/sshd_config <<'EOF'
# 仅启用 internal-sftp
Subsystem sftp internal-sftp
# 全局安全基线
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
KbdInteractiveAuthentication no
X11Forwarding no
AllowTcpForwarding no
GatewayPorts no
UsePAM yes
# SFTP 专用组策略
Match Group sftpusers
ChrootDirectory /srv/sftp/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
PermitTunnel no
GatewayPorts no
# 详细日志便于审计
LogLevel VERBOSE
EOF
# 5) SELinux(如启用)
sudo setsebool -P ssh_chroot_rw_homedirs on # 若 chroot 内需要写入
# 6) 防火墙放行 22/TCP(如变更端口,同步修改并重载 firewalld)
sudo firewall-cmd --permanent --zone=public --add-service=ssh
sudo firewall-cmd --reload
# 7) 重启并验证
sudo systemctl restart sshd
ss -tnlp | grep :22
sudo fail2ban-client status sshd
# 客户端测试:sftp sftpuser@your_server