CentOS SFTP用户管理策略
创建专用SFTP用户组
 为集中管理SFTP用户,创建专用组(如sftp或sftpusers),避免与系统用户或其他服务用户混淆。
 命令示例:sudo groupadd sftp
创建SFTP用户并配置属性
-g参数),禁止其通过SSH登录系统(-s /sbin/nologin参数),防止用户获得完整Shell权限。sudo useradd -g sftp -s /sbin/nologin sftpuser1sudo passwd sftpuser1(要求包含大小写字母、数字和特殊字符,长度≥8位)。-d参数),如sudo useradd -g sftp -s /sbin/nologin -d /home/sftpuser1 sftpuser1。家目录基础权限
 SFTP用户的家目录必须归属root用户和专用组(如sftp),权限设为755(drwxr-xr-x),确保用户无法修改家目录结构(如删除或重命名目录)。
 命令示例:
sudo mkdir -p /home/sftpuser1 sudo chown root:sftp /home/sftpuser1 sudo chmod 755 /home/sftpuser1  可写子目录设置
 若用户需要上传或修改文件,需在家目录下创建专用子目录(如upload),归属用户自身(chown sftpuser1:sftp),权限设为755或775(drwxr-xr-x或drwxrwxr-x)。
 命令示例:
sudo mkdir /home/sftpuser1/upload sudo chown sftpuser1:sftp /home/sftpuser1/upload sudo chmod 755 /home/sftpuser1/upload  启用SFTP子系统
 编辑/etc/ssh/sshd_config文件,确保Subsystem sftp internal-sftp未被注释(默认启用),使用OpenSSH内置的SFTP服务替代传统sftp-server(更安全)。
限制用户访问范围
 使用Match指令针对SFTP用户组或单个用户设置限制,核心配置包括:
ChrootDirectory %h:将用户限制在其家目录(%h代表用户家目录),防止访问系统其他目录;ForceCommand internal-sftp:强制用户只能使用SFTP,禁止SSH登录;AllowTcpForwarding no/X11Forwarding no:禁用端口转发和X11转发,减少攻击面。Match Group sftp ChrootDirectory %h ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no  重启SSH服务
 修改配置后,重启SSH服务使更改生效:sudo systemctl restart sshd。
禁用root登录
 编辑/etc/ssh/sshd_config,设置PermitRootLogin no,禁止root用户通过SSH登录,降低系统被入侵的风险。修改后重启SSH服务。
SELinux配置(若启用)
 若系统SELinux处于Enforcing模式,需调整上下文以允许SFTP访问:
sudo setenforce 0;/etc/selinux/config,将SELINUX=enforcing改为SELINUX=permissive;sudo chcon -Rt ssh_home_t /home/sftpuser1(针对用户家目录)。防火墙开放端口
 确保防火墙允许SSH(默认端口22)流量通过:
sudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --reload  定期更新系统
 使用sudo yum update命令定期更新系统和软件包,修复已知安全漏洞,提升系统安全性。
密码认证(默认)
 在/etc/ssh/sshd_config中设置PasswordAuthentication yes,允许用户通过用户名和密码登录。需确保密码强度足够,定期更换密码。
公钥认证(推荐)
 更安全的认证方式,步骤如下:
ssh-keygen -t rsa -b 4096(默认保存在~/.ssh/id_rsa和~/.ssh/id_rsa.pub);ssh-copy-id sftpuser1@your_server_ip(自动将公钥添加到~/.ssh/authorized_keys);/etc/ssh/sshd_config中PubkeyAuthentication yes未被注释。其他认证方式(可选)
UsePAM yes和LDAP客户端);krb5-workstation等包并配置GSSAPIAuthentication yes);SSLCertificateFile和SSLCertificateKeyFile)。