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 = true、port = 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看输出里有没有22025和ALLOW 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主机助手快速搭建网站?


