CentOS SFTP安全配置要点
确保系统安装最新版本的OpenSSH服务器(SFTP依赖其运行),并定期通过sudo yum update更新系统及软件包,修复已知安全漏洞。
sftpusers):sudo groupadd sftpusers;/home/sftpuser):sudo useradd -m -G sftpusers -s /sbin/nologin sftpuser(-s /sbin/nologin禁止用户登录shell,仅允许SFTP访问);sudo passwd sftpuser(要求包含大小写字母、数字和特殊字符,长度≥10位)。编辑/etc/ssh/sshd_config文件,添加以下配置以限制SFTP用户行为:
PermitRootLogin no(防止root用户通过SFTP登录,降低提权风险);Match Group sftpusers(仅允许sftpusers组的用户使用SFTP);ChrootDirectory %h(将用户限制在其主目录内,无法访问系统其他目录);ForceCommand internal-sftp(禁止使用SSH shell,仅允许SFTP传输);AllowTcpForwarding no(禁止端口转发)、X11Forwarding no(禁止X11图形转发)。/home/sftpuser)必须归root所有,权限设为755(sudo chown root:root /home/sftpuser && sudo chmod 755 /home/sftpuser),确保用户无法修改该目录结构;/home/sftpuser/uploads),归用户所有,权限设为755(sudo mkdir /home/sftpuser/uploads && sudo chown sftpuser:sftpusers /home/sftpuser/uploads && sudo chmod 755 /home/sftpuser/uploads),允许用户上传文件但不具备删除目录的权限。ssh-keygen -t rsa -b 4096),将公钥(id_rsa.pub)复制到用户家目录的.ssh/authorized_keys文件中(ssh-copy-id sftpuser@server_ip),并设置.ssh目录权限为700、authorized_keys文件权限为600(chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys),密钥认证比密码更安全;/etc/ssh/sshd_config中设置PasswordAuthentication no,进一步降低密码泄露风险。使用firewalld开放SSH端口(默认22),并限制访问源IP(可选):
sudo firewall-cmd --permanent --add-service=ssh;192.168.1.100访问):sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="22" accept';sudo firewall-cmd --reload,确保规则生效。/etc/ssh/sshd_config中设置日志级别:LogLevel VERBOSE(记录详细的认证和传输信息);sudo tail -f /var/log/secure实时监控SFTP登录及文件传输活动,或通过fail2ban工具自动封禁多次尝试失败的IP地址。/etc/ssh/sshd_config文件,确保未添加不必要的配置项(如多余的AllowUsers或Port);