温馨提示×

怎样确保centos sftp安全配置

小樊
57
2025-09-20 03:46:48
栏目: 智能运维

一、基础环境准备

确保系统已安装最新版本的OpenSSH服务器(包含SFTP组件),可通过yum install openssh-server安装或更新。启动SSH服务并设置开机自启:systemctl start sshd && systemctl enable sshd

二、创建专用SFTP用户与组

  1. 创建用户组:新建专门用于SFTP的用户组(如sftpusers),便于统一管理权限:
    groupadd sftpusers
  2. 创建用户并配置限制:创建用户时,设置其shell为/sbin/nologin(禁止登录系统shell),并添加到sftpusers组:
    useradd -m -s /sbin/nologin sftpuser
    usermod -aG sftpusers sftpuser
  3. 设置用户密码:为用户配置强密码(包含大小写字母、数字、特殊字符,长度≥8位):
    passwd sftpuser

三、配置SSH服务限制(核心安全措施)

编辑/etc/ssh/sshd_config文件,添加或修改以下关键配置:

  1. 禁用root登录:防止root用户通过SFTP获取系统最高权限:
    PermitRootLogin no
  2. 启用内部SFTP子系统:替代传统sftp-server,提升安全性:
    Subsystem sftp internal-sftp
  3. 限制用户访问范围:通过Match指令将sftpusers组用户限制在其主目录(ChrootDirectory),并禁用端口转发等不必要的功能:
    Match Group sftpusers
        ChrootDirectory %h  # 将用户限制在主目录(如/home/sftpuser)
        ForceCommand internal-sftp  # 强制使用SFTP,禁止SSH shell访问
        AllowTcpForwarding no  # 禁用TCP转发
        X11Forwarding no  # 禁用X11转发
    
  4. 可选:禁用密码认证(推荐密钥认证):若无需密码登录,可禁用密码认证,降低密码破解风险:
    PasswordAuthentication no
    PubkeyAuthentication yes

四、设置严格的目录权限

  1. 主目录权限:SFTP用户的主目录必须属主为root,权限为755(禁止用户修改主目录结构):
    mkdir -p /home/sftpuser
    chown root:root /home/sftpuser
    chmod 755 /home/sftpuser
  2. 上传目录权限:若需允许用户上传文件,需在主目录下创建专用上传目录(如uploads),属主为用户自身,权限为755(或775若需组内共享):
    mkdir -p /home/sftpuser/uploads
    chown sftpuser:sftpusers /home/sftpuser/uploads
    chmod 755 /home/sftpuser/uploads

    注:ChrootDirectory的上级目录(如/home)权限必须为755,且属主为root,否则会导致SFTP连接失败。

五、配置密钥认证(增强身份验证)

  1. 生成密钥对:在客户端生成RSA密钥对(密钥长度≥2048位):
    ssh-keygen -t rsa -b 4096
    (默认保存路径为~/.ssh/id_rsa,私钥需严格保密)
  2. 复制公钥到服务器:将客户端的公钥(id_rsa.pub)复制到服务器用户的~/.ssh/authorized_keys文件中:
    ssh-copy-id sftpuser@your_server_ip
  3. 配置SSH信任密钥:确保~/.ssh/authorized_keys文件权限为600,所属用户为sftpuser
    chmod 600 ~/.ssh/authorized_keys
    chown sftpuser:sftpusers ~/.ssh/authorized_keys
    启用密钥认证后,用户需使用私钥登录,无需输入密码。

六、配置防火墙规则

  1. 使用firewalld(推荐)
    • 启动并启用firewalld服务:systemctl start firewalld && systemctl enable firewalld
    • 添加SFTP服务(默认端口22):firewall-cmd --permanent --add-service=sftp
    • 重新加载防火墙配置:firewall-cmd --reload
  2. 使用iptables(备选)
    • 允许TCP端口22的流量:
      iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
      iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT
    • 保存规则(CentOS 7及以上需使用iptables-services包):
      service iptables saveiptables-save > /etc/sysconfig/iptables

七、SELinux配置(若启用)

  1. 检查SELinux状态sestatus(若显示Enforcing,则表示启用)
  2. 调整SELinux布尔值:允许SSH使用SFTP功能:
    setsebool -P ssh_sysadm_login on
    setsebool -P ssh_keysign on
  3. 设置目录上下文:若用户主目录不在默认路径(如/home),需调整SELinux上下文:
    chcon -Rt svirt_sandbox_file_t /path/to/sftpuser
    或修改/etc/selinux/config文件,将SELINUX=enforcing改为SELINUX=permissive(测试无误后再改回enforcing)。

八、测试与监控

  1. 测试SFTP连接:使用客户端命令测试连接(密钥认证示例):
    sftp -i ~/.ssh/id_rsa sftpuser@your_server_ip
    若成功进入SFTP命令行,则配置生效。
  2. 监控日志:定期检查/var/log/secure(或/var/log/auth.log)日志,查看SFTP登录记录及异常活动(如多次认证失败)。

九、定期维护

  1. 更新系统与软件:定期运行yum update更新系统和OpenSSH软件,修复已知安全漏洞。
  2. 备份配置:定期备份/etc/ssh/sshd_config、用户主目录及密钥文件,防止配置丢失。
  3. 审计用户权限:定期检查sftpusers组成员及用户权限,移除不必要的用户或调整权限。

0