SFTP配置时如何防止暴力破解
小樊
34
2025-11-24 06:59:24
SFTP防暴力破解的实用配置清单
一 基础加固
禁用密码登录、仅用密钥:在 /etc/ssh/sshd_config 中设置 PasswordAuthentication no 、PubkeyAuthentication yes ;客户端生成密钥对(如 ssh-keygen -t rsa -b 4096 ),将公钥加入 ~/.ssh/authorized_keys ,并确保目录与文件权限为 700/600 。
禁止 root 直登:设置 PermitRootLogin no 。
可选降低噪声:更改默认端口 Port 22 → 2222 (仅为降低自动化扫描命中率,不能替代认证加固)。
重启生效:systemctl restart sshd 。
以上措施能显著降低被暴力猜解的风险,尤其是“禁用密码 + 仅密钥”的组合对 SFTP 场景最为关键。
二 自动封禁与速率限制
使用 Fail2Ban 监控 SSH 登录失败并封 IP:
安装:yum install fail2ban -y 或 apt-get install fail2ban 。
配置(示例):创建 /etc/fail2ban/jail.local
[DEFAULT]
bantime = 600
findtime = 600
maxretry = 3
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/secure (CentOS/RHEL)或 /var/log/auth.log (Debian/Ubuntu)
maxretry = 3
bantime = 600
启动:systemctl start fail2ban && systemctl enable fail2ban ;验证:fail2ban-client status sshd 。
用防火墙做连接速率限制(iptables 示例):
规则:
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
firewalld 亦可用 direct 规则实现相同效果。
Fail2Ban 与速率限制形成“事后封禁 + 事前限速”的纵深防御。
三 登录失败锁定与账户策略
PAM 失败计数与解锁:
使用 pam_tally2 (RHEL/CentOS 常用):在 /etc/pam.d/sshd 顶部加入
auth required pam_tally2.so onerr=fail deny=3 unlock_time=600
如需按用户解锁可执行:faillog -u <用户名> -r。
使用 pam_faillock (更现代,部分发行版默认):在 /etc/pam.d/sshd 顶部加入
auth required pam_faillock.so preauth silent deny=3 unlock_time=600
在文件底部加入
account required pam_faillock.so
强密码策略:在 /etc/pam.d/system-auth 与 /etc/pam.d/password-auth 中配置 pam_pwquality 或 pam_cracklib 规则,强制长度、字符集与历史。
PAM 锁定能在多次失败后立即阻断后续尝试,配合 Fail2Ban 能覆盖更长时间窗的攻击。
四 系统与服务最小化
仅启用 SFTP 子系统:在 /etc/ssh/sshd_config 中设置
Subsystem sftp /usr/libexec/openssh/sftp-server (路径因发行版可能不同)。
保持系统与 OpenSSH 更新:及时修补漏洞,减少被利用的风险。
最小化攻击面与及时更新是长期稳固安全的基础。
五 快速验证与运维建议
验证与观测:
查看 Fail2Ban 状态:fail2ban-client status sshd ;实时看日志:tail -f /var/log/fail2ban.log 。
本地验证登录失败计数:使用 faillog -u <用户名> (pam_tally2)。
运维要点:
变更前备份配置(如 /etc/ssh/sshd_config 、/etc/fail2ban/jail.local ),变更后逐步重启并检查会话。
若使用云厂商安全组,可叠加来源 IP 白名单与速率限制策略,形成多层防护。
通过状态检查与日志审计,能快速确认策略是否生效并及时发现异常。