如何防止Debian SFTP被暴力破解
小樊
43
2025-12-25 19:08:35
Debian SFTP防暴力破解实用方案
一 核心加固清单
使用密钥认证 并禁用密码:在客户端生成密钥对(如4096位 RSA ),将公钥写入用户家目录的**~/.ssh/authorized_keys**,随后在服务器设置PasswordAuthentication no 、PubkeyAuthentication yes ,可显著降低被暴力猜解的风险。
禁用root 远程登录:设置PermitRootLogin no ,避免攻击者直接以最高权限账户尝试登录。
更改默认端口:将Port 22 改为非标准端口(如2222 ),能减少自动化扫描与噪声流量。
限制认证尝试与并发会话:设置MaxAuthTries 3–5 、MaxSessions 2–5 ,降低短时间内的爆破效率。
仅允许指定用户或组:通过AllowUsers 或AllowGroups 白名单化管理登录主体。
启用SFTP专用子系统 并Chroot 隔离:使用Subsystem sftp internal-sftp ,对特定用户/组强制仅SFTP,并限制在其主目录,减少攻击面。
禁用不必要通道与转发:关闭X11Forwarding 、AllowTcpForwarding 、AllowAgentForwarding 、PermitTunnel ,避免被滥用为跳板。
强化目录权限:Chroot目录必须由root 拥有且权限为755 ,可写目录单独授权给相应用户,以满足 internal-sftp 的权限要求。
保持系统与软件更新:及时apt update && apt upgrade ,修复OpenSSH 等组件已知漏洞。
二 使用 Fail2ban 自动封禁
安装与启用:执行sudo apt install fail2ban -y && sudo systemctl enable --now fail2ban 。
配置 SSH 防护(/etc/fail2ban/jail.local):
示例(若已改端口为2222 ):
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 600
若仍使用22 端口,将 port 改为22 。
使配置生效:执行sudo systemctl restart fail2ban 。
说明:Fail2ban 会基于**/var/log/auth.log**的失败记录自动封禁反复尝试的源 IP,是抵御暴力破解的有效“闸门”。
三 防火墙与网络层限制
使用UFW 仅放行必要来源与端口:例如仅允许某固定 IP 访问22/2222 端口,其余默认拒绝。
使用iptables 精细化控制:对指定来源放行,对其它来源丢弃22/2222 端口的 TCP 包。
原则:最小化暴露面,只开放必需端口与来源,并定期审计规则是否被误改。
四 最小权限与 SFTP 专用配置示例
创建 SFTP 专用用户与组:
组:sudo groupadd sftpusers
用户:sudo useradd -m -g sftpusers -s /bin/false sftpuser (禁止 SSH 登录,仅用于 SFTP)
配置 /etc/ssh/sshd_config(在文件末尾追加):
Subsystem sftp internal-sftp
Match Group sftpusers
ChrootDirectory /home/%u
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
AllowAgentForwarding no
PermitTunnel no
目录与权限(满足 Chroot 要求):
主目录:sudo chown root:root /home/sftpuser && sudo chmod 755 /home/sftpuser
可写目录:sudo mkdir /home/sftpuser/uploads && sudo chown sftpuser:sftpusers /home/sftpuser/uploads
应用配置:sudo systemctl restart ssh (或 sshd,视系统服务名而定)。
五 验证与运维
配置语法检查:sudo sshd -t ,确认无误再重启服务。
查看与维护 Fail2ban:
状态:sudo fail2ban-client status sshd
解封:sudo fail2ban-client set sshd unbanip
日志核查:持续关注**/var/log/auth.log**与 Fail2ban 日志,及时发现异常登录与封禁情况。
安全运维:定期更新系统与安全组件,审计用户与权限,保留关键操作的审计记录。