温馨提示×

如何保障centos sftp安全配置

小樊
46
2025-12-27 08:01:25
栏目: 智能运维

CentOS SFTP 安全配置清单

一 基础加固

  • 更新系统与软件包:执行 sudo yum update -y,保持系统与安全补丁为最新。
  • 禁用 root 登录与弱认证:在 /etc/ssh/sshd_config 中设置 PermitRootLogin noPasswordAuthentication noPermitEmptyPasswords noPermitUserEnvironment no,仅启用 PubkeyAuthentication yes
  • 使用更安全的子系统:将 Subsystem sftp 设置为 internal-sftp,便于 chroot 与权限控制。
  • 可选白名单:通过 AllowUsers your_usernameAllowGroups 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 服务长期安全的关键。

0