1. OpenSSH版本要求
需确保OpenSSH服务器版本至少为4.8p1,新版本支持chrootDirectory等关键安全特性,旧版本可能无法正常实现SFTP隔离。
2. sshd_config核心配置项
internal-sftp替代默认的/usr/libexec/openssh/sftp-server,internal-sftp是进程内服务,无需额外进程,性能更好且更安全。Match Group sftpusers(组限制)或Match User sftpuser(用户限制)指定允许使用SFTP的用户/组,避免无关账户访问。%h表示用户主目录或/data/sftp/%u按用户名隔离),限制用户只能访问该目录及其子目录。需注意:该目录及其所有父目录的所有者必须为root,权限需设为755(如chown root:root /data/sftp/hanhua_test; chmod 755 /data/sftp/hanhua_test)。AllowTcpForwarding no(禁止TCP转发)、X11Forwarding no(禁止X11转发),防止攻击者利用这些功能绕过安全限制。Match块中添加ForceCommand internal-sftp,强制用户使用SFTP子系统,禁止执行shell命令或其他危险操作。3. 用户与组管理
sftpusers),并将需要使用SFTP的用户添加到该组(groupadd sftpusers; useradd -G sftpusers sftpuser)。-M(不生成home目录)、-s /sbin/nologin(禁止登录shell)参数,增强安全性(如useradd -M -s /sbin/nologin sftpuser)。4. 目录权限设置
/data/sftp/hanhua_test/files),用于存放用户上传的文件,该目录的所有者为用户自身,权限设为770(如mkdir /data/sftp/hanhua_test/files; chown sftpuser:sftpuser /data/sftp/hanhua_test/files; chmod 770 /data/sftp/hanhua_test/files)。5. 认证方式优化
PasswordAuthentication设为no,避免密码泄露风险。~/.ssh/authorized_keys文件中,提升认证安全性。6. 防火墙配置
确保防火墙允许SSH(默认端口22)流量通过,如使用firewalld命令:firewall-cmd --permanent --add-service=ssh; firewall-cmd --reload。
7. 日志记录
可通过修改/etc/rsyslog.conf文件添加local0.* /var/log/sftp-server.log,将SFTP日志单独记录到指定文件,便于后续审计和监控。
8. SELinux配置(若启用)
若SELinux处于Enforcing模式,可能会阻止SFTP正常工作。可临时设置为Permissive模式测试(setenforce 0),或永久修改/etc/selinux/config文件(将SELINUX=enforcing改为SELINUX=disabled)。
9. 加密算法设置
确保SFTP使用强加密算法(如AES-256),可在sshd_config中添加Ciphers aes256-ctr,aes192-ctr,aes128-ctr,并在每次会话开始时进行密钥交换,提升数据传输安全性。
10. 定期更新维护
定期更新系统和OpenSSH软件包,及时修补已知安全漏洞(如yum update openssh-server),降低被攻击的风险。