您的位置:首页 >SFTP配置时如何防止暴力破解
发布于2026-04-24 阅读(0)
扫一扫,手机访问

这部分的配置,可以说是整个防御体系的基石。做好了,能直接挡掉绝大部分自动化脚本的骚扰。
/etc/ssh/sshd_config 里,把 PasswordAuthentication 设为 no,同时确保 PubkeyAuthentication 是 yes。客户端那边,用 ssh-keygen -t rsa -b 4096 这类命令生成密钥对,然后把公钥内容塞进服务器的 ~/.ssh/authorized_keys 文件。别忘了,权限设置是门学问,.ssh 目录权限得是 700,authorized_keys 文件得是 600,这一步错了,前面可能都白搭。PermitRootLogin 直接改成 no。先让攻击者猜不到用户名,这门槛就高了不少。systemctl restart sshd 一下。上面这几板斧下去,尤其是“禁用密码+仅密钥”这个组合拳,对于SFTP这种特定场景,被暴力猜解的风险已经能降到一个很低的水平了。基础加固是修高墙,那这部分就是部署巡逻队和设置关卡流量控制,形成纵深防御。
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 用这个 # logpath = /var/log/auth.log # Debian/Ubuntu 用这个 maxretry = 3 bantime = 600意思很直白:10分钟(600秒)内,同一个IP失败3次,就关它10分钟“禁闭”。
systemctl start fail2ban && systemctl enable fail2ban。想看看“巡逻队”工作状态?fail2ban-client status sshd 命令给你答案。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它们实现的效果是:60秒内,如果同一个IP对22端口的新连接请求超过4个,后续的请求就直接丢弃。用 firewalld 的话,也可以通过 direct 规则达到相同目的。
看出来了吗?Fail2Ban 是“事后追责”,发现异常再封禁;而防火墙速率限制是“事前预防”,直接从流量上掐断高频试探。两者一结合,防御的层次感和反应速度就都有了。
如果说前面是防外人,那这里就是管好自家“钥匙”,并且给每把钥匙加上试错自锁功能。
/etc/pam.d/sshd 文件顶部加入:
auth required pam_tally2.so onerr=fail deny=3 unlock_time=600意思是:失败3次就锁定账户,600秒后自动解锁。如果需要手动给某个用户解锁,执行
faillog -u <用户名> -r 就行。/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配合,一个管“用户账户”,一个管“来源IP”,能覆盖从短时爆破到长时间慢速试探的各种攻击窗口。
安全领域有句老话:最安全的服务是根本不运行的服务。所以,我们要收窄攻击面。
/etc/ssh/sshd_config 中,确保类似这样的配置是启用的:
Subsystem sftp /usr/libexec/openssh/sftp-server(注意,具体路径可能因发行版而异)。这样,SSH服务就只提供SFTP功能,关掉其他不必要的子系统。
配置完了,怎么知道它真的在起作用?日常运维又该注意什么?
fail2ban-client status sshd。想实时看谁被关了“禁闭”?tail -f /var/log/fail2ban.log 是个好选择。faillog -u <用户名> 命令(如果用的是pam_tally2)。/etc/ssh/sshd_config、/etc/fail2ban/jail.local 这些关键文件前,先复制一份。改完后,逐步重启服务并检查现有会话是否正常。说到底,安全不是一劳永逸的配置,而是一个持续的过程。通过上面这些状态检查和日志审计手段,你才能快速确认策略是否生效,并在第一时间发现那些不请自来的“客人”。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
9