Linux 如何防止暴力破解?

发布时间 - 2026-01-23 00:00:00    点击率:
改端口和禁root登录是最简单有效的第一道防线,需修改sshd_config中Port为高位端口(如22025)、PermitRootLogin no,并用密钥认证替代密码登录,再配合Fail2ban与UFW双重防护。

改端口 + 禁 root 登录是最简单有效的第一道防线

暴力破解工具默认扫 22 端口、狂试 root 账号,这两项关掉,90% 的自动化攻击会直接跳过你的服务器。

  • 编辑 /etc/ssh/sshd_config,把 Port 22 改成比如 Port 22025(选 10000–65535 之间的高位端口,避开常见扫描范围)
  • 确认 PermitRootLogin no 已启用,且已创建普通用户并加进 sudo 组(如 usermod -aG sudo deploy
  • 务必新开一个终端,用新用户连一次再 reload 服务:运行 systemctl reload sshd,不是 restart,避免配置错误导致锁死

必须用密钥登录,彻底绕过密码环节

只要还开着 PasswordAuthentication yes,再复杂的密码也扛不住字典穷举;而密钥认证本身不传输密码,也不受重放或中间人影响。

  • 客户端生成密钥建议用 ssh-keygen -t ed25519 -C "me@work"(比 RSA 更快更安全)
  • 上传公钥别只靠 ssh-copy-id —— 它可能因权限问题失败;手动执行更稳:mkdir -p ~/.ssh && chmod 700 ~/.ssh && echo "your_public_key_here" >> ~

    /.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys
  • 最后在 sshd_config 中设 PasswordAuthentication no,再 systemctl reload sshd

Fail2ban 不是万能的,但配错就等于没开

它本质是日志分析器+防火墙联动工具,不解决根本漏洞,但能拦住那些漏网的试探性连接。关键是别直接改 jail.conf,升级时会被覆盖;也别忽略白名单,否则自己运维 IP 被误封就尴尬了。

  • 先复制出本地配置:cp /etc/fail2ban/jail.{conf,local}
  • [sshd] 段里确保:enabled = trueport = 22025(必须和你改的 SSH 端口一致)、logpath = /var/log/auth.log(Ubuntu/Debian)或 /var/log/secure(RHEL/CentOS)
  • ignoreip 至少加上你自己的公网 IP 和内网段,例如 ignoreip = 127.0.0.1/8 192.168.1.0/24 203.0.113.42
  • 重启后用 fail2ban-client status sshd 查是否生效,别只看服务状态

UFW 防火墙是最后一层兜底,但默认策略要设对

Fail2ban 封的是 IP,UFW 控的是端口通路。两者叠加才能让攻击者既连不上,又连上了也进不去——尤其当 Fail2ban 因日志路径错或 filter 不匹配而静默失效时,UFW 还能守住大门。

  • 启用前先清空旧规则:ufw reset,避免冲突
  • 设默认策略:ufw default deny incoming(不是 deny outgoing,那会断掉 apt/yum)
  • 只放行必要端口:ufw allow 22025/tcp(对应你改的 SSH 端口),ufw allow OpenSSH 会自动识别当前配置,但不如显式写端口可靠
  • 启用后立刻验证:ufw status verbose 看输出里有没有 22025ALLOW IN 字样

最容易被忽略的是:所有改动都依赖日志路径、端口、用户权限三者严格一致。比如 Fail2ban 的 logpath 指向了 /var/log/auth.log,但系统实际往 /var/log/secure 写,那它就永远看不到失败登录——这种“看起来开了,其实没起作用”的情况,比完全不配更危险。


# linux  # word  # centos  # go  # 防火墙  # 端口  # ubuntu  # 工具  # ai  # echo  # Filter  # var  # copy  # default  # ssh  # debian  # 自动化  # 的是  # 最简单  # 第一道  # 穷举  # 上了  # 还能  # 和你  # 开了  # 你自己  # 自动识别 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何配置任务调度?(Cron Job示例)  详解CentOS6.5 安装 MySQL5.1.71的方法  如何在云虚拟主机上快速搭建个人网站?  Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明  独立制作一个网站多少钱,建立网站需要花多少钱?  如何挑选高效建站主机与优质域名?  如何快速辨别茅台真假?关键步骤解析  javascript中对象的定义、使用以及对象和原型链操作小结  Android okhttputils现在进度显示实例代码  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  微信小程序 五星评分(包括半颗星评分)实例代码  如何在云指建站中生成FTP站点?  如何实现建站之星域名转发设置?  音响网站制作视频教程,隆霸音响官方网站?  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例  laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法  Laravel怎么判断请求类型_Laravel Request isMethod用法  Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面  Android中AutoCompleteTextView自动提示  Swift中循环语句中的转移语句 break 和 continue  JS去除重复并统计数量的实现方法  如何选择可靠的免备案建站服务器?  Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南  JavaScript中的标签模板是什么_它如何扩展字符串功能  如何快速搭建安全的FTP站点?  iOS UIView常见属性方法小结  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南  如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体  Laravel如何实现API资源集合?(Resource Collection教程)  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环  百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏  如何在阿里云域名上完成建站全流程?  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  JavaScript如何操作视频_媒体API怎么控制播放  制作企业网站建设方案,怎样建设一个公司网站?  成都网站制作公司哪家好,四川省职工服务网是做什么用?  Laravel Blade模板引擎语法_Laravel Blade布局继承用法  网站图片在线制作软件,怎么在图片上做链接?  进行网站优化必须要坚持的四大原则  Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程  Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件  Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层  如何用y主机助手快速搭建网站?