1. 强化身份认证机制
ssh-keygen -t ed25519),将公钥(id_ed25519.pub)追加到用户~/.ssh/authorized_keys文件中,并设置权限:chmod 700 ~/.ssh、chmod 600 ~/.ssh/authorized_keys。在/etc/ssh/sshd_config中配置PasswordAuthentication no、PubkeyAuthentication yes,重启SSH服务生效。2. 限制用户访问范围(Chroot Jail)
Match Group或Match User指令,将SFTP用户限制在其主目录(如/home/sftpuser),防止访问系统其他敏感区域。配置示例如下:Match Group sftpusers
ChrootDirectory /home/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
注意:ChrootDirectory必须由root拥有,权限设为755,用户不可修改。3. 配置SSH服务安全参数
sshd_config文件:禁用root登录(PermitRootLogin no)、限制并发连接数(MaxSessions 10、MaxStartups 10:30:60)、关闭不必要的SSH功能(如AllowTcpForwarding no、X11Forwarding no),减少攻击面。修改后通过sshd -t验证配置语法,再重启服务(systemctl restart sshd)。4. 设置严格的目录权限
/home/sftpuser)需由root拥有(chown root:root /home/sftpuser、chmod 755 /home/sftpuser),避免用户修改目录权限。创建专门的可写子目录(如/home/sftpuser/uploads),归属用户及所属组(chown sftpuser:sftpusers /home/sftpuser/uploads、chmod 755 /home/sftpuser/uploads),确保用户只能在自己的目录内写入文件。5. 配置防火墙限制访问源
ufw(Ubuntu)或firewalld(CentOS/RHEL)配置规则。例如,ufw允许特定IP:sudo ufw allow from 192.168.1.100 to any port 22,然后启用防火墙(sudo ufw enable);firewalld通过rich规则限制: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)。6. 启用日志与监控
/etc/ssh/sshd_config中设置LogLevel VERBOSE,记录SFTP登录、文件传输等详细信息。定期检查日志文件(/var/log/auth.log或/var/log/secure),通过tail -f /var/log/auth.log实时监控异常活动(如多次失败登录)。7. 使用Fail2ban防暴力破解
sudo apt install fail2ban),编辑/etc/fail2ban/jail.local启用SSH保护:[sshd]
enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 600
重启Fail2ban(sudo systemctl restart fail2ban),自动封禁5分钟内失败3次以上的IP。8. 保持系统与软件更新
sudo apt update && sudo apt upgrade(Ubuntu/Debian)或sudo yum update(CentOS/RHEL)安装最新安全补丁,修复已知漏洞,降低被攻击风险。