如何保障centos sftp安全配置
小樊
46
2025-12-27 08:01:25
CentOS SFTP 安全配置清单
一 基础加固
- 更新系统与软件包:执行 sudo yum update -y,保持系统与安全补丁为最新。
- 禁用 root 登录与弱认证:在 /etc/ssh/sshd_config 中设置 PermitRootLogin no、PasswordAuthentication no、PermitEmptyPasswords no、PermitUserEnvironment no,仅启用 PubkeyAuthentication yes。
- 使用更安全的子系统:将 Subsystem sftp 设置为 internal-sftp,便于 chroot 与权限控制。
- 可选白名单:通过 AllowUsers your_username 或 AllowGroups sftpusers 限制可登录账户/组。
- 重启生效:sudo systemctl restart sshd。
以上做法可显著降低暴力破解与提权风险,并减少攻击面。
二 用户与目录权限
- 创建专用组与用户:
- 组:sudo groupadd sftpusers
- 用户:建议为用户设置受限 shell(如 /sbin/nologin),仅用于 SFTP:sudo useradd -m -s /sbin/nologin -G sftpusers sftpuser
- 规划目录结构(两种常见做法,二选一或混合):
- 方案A(家目录即根):Chroot 到 /home/%u,需保证家目录属主为 root。
- 方案B(集中目录):Chroot 到 /srv/sftp/%u,便于集中管理与备份。
- 权限要点(chroot 成功的关键):
- Chroot 目录(如 /home/sftpuser 或 /srv/sftp/sftpuser)必须由 root:root 拥有,权限 755。
- 可写目录(如 uploads)放在 Chroot 下,由业务用户所有,例如:
- sudo mkdir -p /srv/sftp/sftpuser/uploads
- sudo chown sftpuser:sftpusers /srv/sftp/sftpuser/uploads
- sudo chmod 755 /srv/sftp/sftpuser
- 公钥登录(推荐):客户端生成 ssh-keygen -t rsa -b 4096,将公钥追加到服务器 ~/.ssh/authorized_keys,并设置 600 权限。
以上权限与目录结构确保用户被限制在指定目录内,同时具备可写区域,避免越权访问系统其他路径。
三 SSHD 配置示例
- 全局段(示例):
- Port 22(或改为高位端口以降低噪音)
- Protocol 2
- PermitRootLogin no
- PubkeyAuthentication yes
- PasswordAuthentication no
- PermitEmptyPasswords no
- PermitUserEnvironment no
- X11Forwarding no
- AllowTcpForwarding no
- UsePAM yes
- SyslogFacility AUTHPRIV
- Subsystem sftp internal-sftp
- 按组限制(放在文件末尾):
- Match Group sftpusers
- ChrootDirectory %h(或 /srv/sftp/%u)
- ForceCommand internal-sftp
- AllowTcpForwarding no
- X11Forwarding no
- 应用:sudo systemctl restart sshd
该配置通过 Match 块将 SFTP 用户隔离在指定根目录,并关闭转发通道,减少攻击面。
四 防火墙与网络访问控制
- 使用 firewalld(推荐):
- sudo systemctl start firewalld && sudo systemctl enable firewalld
- sudo firewall-cmd --permanent --add-service=ssh && sudo firewall-cmd --reload
- 可选白名单:sudo firewall-cmd --permanent --add-rich-rule=‘rule family=“ipv4” source address=“YOUR_IP” port port=“22” protocol=“tcp” accept’ && sudo firewall-cmd --reload
- 使用 iptables(如仍在使用):
- sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
- sudo iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT
- 保存规则(视系统而定)。
建议仅开放必要来源 IP,并定期审计规则与连接日志。
五 日志审计与运维
- 集中日志:确保 SyslogFacility AUTHPRIV 生效,实时查看 /var/log/secure 检测异常登录与权限错误。
- 定期维护:
- sudo yum update -y 及时修补漏洞;
- 定期轮换密钥、审查 authorized_keys;
- 结合脚本或 SIEM 对失败登录、频繁断开等异常进行告警。
- 连接测试:
- 密钥登录:sftp -i ~/.ssh/id_rsa sftpuser@your_server_ip
- 密码登录(如未禁用):sftp sftpuser@your_server_ip
持续监控与更新是保持 SFTP 服务长期安全的关键。