惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Cloudbric
Cloudbric
WordPress大学
WordPress大学
博客园 - 叶小钗
B
Blog RSS Feed
T
Tailwind CSS Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
美团技术团队
Scott Helme
Scott Helme
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Hugging Face - Blog
Hugging Face - Blog
T
Threat Research - Cisco Blogs
B
Blog
V
V2EX
Simon Willison's Weblog
Simon Willison's Weblog
I
Intezer
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Threatpost
Cisco Talos Blog
Cisco Talos Blog
阮一峰的网络日志
阮一峰的网络日志
C
Cybersecurity and Infrastructure Security Agency CISA
PCI Perspectives
PCI Perspectives
雷峰网
雷峰网
The Register - Security
The Register - Security
博客园 - 【当耐特】
Google DeepMind News
Google DeepMind News
N
News and Events Feed by Topic
H
Hackread – Cybersecurity News, Data Breaches, AI and More
U
Unit 42
Security Latest
Security Latest
NISL@THU
NISL@THU
腾讯CDC
S
SegmentFault 最新的问题
小众软件
小众软件
The GitHub Blog
The GitHub Blog
月光博客
月光博客
A
Arctic Wolf
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
N
Netflix TechBlog - Medium
IT之家
IT之家
D
DataBreaches.Net
C
CXSECURITY Database RSS Feed - CXSecurity.com
N
News | PayPal Newsroom
L
LINUX DO - 最新话题
博客园 - 司徒正美
大猫的无限游戏
大猫的无限游戏
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
J
Java Code Geeks
TaoSecurity Blog
TaoSecurity Blog
P
Privacy International News Feed

沉迷在 - Java.li - 无法自拔

Spring Boot启动报错 Failed to configure a DataSource 解决办法 Maven依赖冲突怎么排查?dependency:tree、exclusions与版本统一完整教程 - 沉迷在 - Java.li - 无法自拔 给网站加一条会动的人群横幅:Little People 动画组件 Demo - 沉迷在 - Java.li - 无法自拔 【soso.re】聚合热榜 | CloudflareWorkers部分接口失效的排查与代理方案 - 沉迷在 - Java.li - 无法自拔 Spring Boot 2升级到Spring Boot 3完整指南:JDK17、javax迁移jakarta、依赖兼容与常见报错 - 沉迷在 - Java.li - 无法自拔 随机小姐姐视频 - 沉迷在 - Java.li - 无法自拔 Spring Boot与JDK版本兼容表:Spring Boot 2.x / 3.x / 4.x应该用哪个Java版本? - 沉迷在 - Java.li - 无法自拔 No compiler is provided in this environment解决办法:JDK、JRE、Maven与IDEA排查 - 沉迷在 - Java.li - 无法自拔 置身钉内|含全文 PDF - 沉迷在 - Java.li - 无法自拔 javac不是内部或外部命令怎么解决?JDK、JAVA_HOME和Path完整排查 Windows配置JAVA_HOME后不生效怎么办?java -version显示旧版本解决办法 Maven Could not transfer artifact 下载失败解决:settings.xml、国内镜像、本地缓存与代理排查 JSON转Java实体类完整教程:对象、数组、嵌套结构与LocalDateTime处理 Windows安装JDK 8 / 17 / 21 / 25完整教程:JAVA_HOME环境变量配置与验证 IDEA下载JDK很慢怎么办?手动配置本地JDK完整教程 Java版本号与class文件major version对照表:Unsupported class file major version 52 / 55 / 61 / 65 / 69 / 70 Gradle国内镜像配置教程:init.gradle、repositories与Wrapper加速完整指南 Maven国内镜像settings.xml配置大全:阿里云、腾讯云、华为云、清华源 Java开发者必备工具箱 2026年Java行情深度解读:就业真实现状、语言排名与开发者破局指南 Go-RSS-Hub:我用 Go 搭了一个可扩展的 RSS 聚合服务 Vibe Coding 实战复盘 2026年全球十大顶级大语言模型横向对比报告 万能插座与十八般兵器:MCP 和 Skill 解决MySQL ONLY_FULL_GROUP_BY 模式导致的 SQL 语法错误 记一次处理服务器被暴力破解(含黑名单IP) Vibe Coding:一名“古法程序员”的使用反思与未来思考 .li后缀续费的特殊性(某些顶级域名在到期前可能被提前删除) 浅谈域名后缀以及市场前景 咖啡与编程 超越基础的编程智慧
如何防止服务器被暴力破解?2026年最全的5层防护实战指南
HiF · 2026-04-21 · via 沉迷在 - Java.li - 无法自拔

服务器总被暴力破解骚扰?本文基于亲身实战,从修改SSH端口、密钥登录,到配置Fail2ban自动封禁、设置防火墙规则,最终实现监控告警,提供一套5层递进式防护终极方案,并附赠累积的黑名单IP,让你的服务器固若金汤。

如何防止服务器被暴力破解?2026年5层防护终极指南

你是否在 /var/log/auth.log/var/log/secure 里见过满屏的 Failed password for root from ?这可不是什么行为艺术,而是你的服务器正在被黑客“暴力破解”——他们用成千上万的密码组合,试图撞开你的大门。轻则浪费资源,重则服务器沦陷,数据被盗,网站被挂黑页。

就在不久前,我的服务器也经历了这场风暴。在记一次处理服务器被暴力破解一文中,我记录了当时的应急处理过程。但亡羊补牢不如未雨绸缪。今天,我将这次实战经验系统化,为你梳理出一套从外到内、从基础到进阶的 「5层服务器防护体系」。遵循这个指南,你可以极大提升服务器的攻击门槛,让暴力破解徒劳无功。

第一层:基础加固 - 告别“出厂设置”

黑客攻击往往从最简单的默认配置开始。第一步就是改变这些“众所周知”的设定。

1. 修改SSH默认端口(22)
将SSH端口从22改为一个大于1024的非知名端口,能立刻过滤掉绝大部分漫无目的的扫描流量。

# 编辑SSH配置文件
sudo vim /etc/ssh/sshd_config
# 找到 #Port 22, 去掉注释,并修改端口号,例如:
Port 58234
# 保存后重启SSH服务
sudo systemctl restart sshd

⚠️ 重要:修改前,务必确保新端口已在防火墙中放行,并且不要关闭当前连接,建议开两个会话测试新端口连通性后再退出。

2. 禁止Root用户直接登录
Root账户权限太大,禁止其直接登录,能迫使攻击者必须同时猜中用户名和密码。

# 同样在 /etc/ssh/sshd_config 中修改
PermitRootLogin no

3. 禁用密码登录,强制使用SSH密钥对
这是最重要、最有效的一步。密钥认证的加密强度远超任何密码。

  • 生成密钥对(在本地电脑):
    ssh-keygen -t rsa -b 4096
    
  • 上传公钥到服务器
    ssh-copy-id -p 你的端口 -i ~/.ssh/id_rsa.pub 用户名@服务器IP
    
  • 禁用密码登录
    # 在 /etc/ssh/sshd_config 中设置
    PasswordAuthentication no
    ChallengeResponseAuthentication no
    
    重启SSH服务后,你的服务器将只认密钥不认密码。

第二层:主动防御 - 用Fail2ban自动封禁“惯犯”

基础操作能防“懒”黑客,但对于持续的暴力破解,我们需要一个自动警察——Fail2ban。它会监控日志,当同一IP在短时间内多次认证失败,就自动将其IP加入防火墙黑名单。

1. 安装Fail2ban

# Ubuntu/Debian
sudo apt update && sudo apt install fail2ban -y
# CentOS/RHEL
sudo yum install epel-release && sudo yum install fail2ban -y

2. 配置防护策略
Fail2ban的配置位于 /etc/fail2ban/jail.local(推荐覆盖jail.conf)。

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo vim /etc/fail2ban/jail.local

找到 [sshd] 部分并进行如下配置(这是关键):

[sshd]
enabled = true
port = 你的SSH端口
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
findtime = 300
bantime = 604800
  • maxretry = 3:允许的最大失败次数。
  • findtime = 300:在300秒(5分钟)内的失败计入。
  • bantime = 604800:违规IP将被封禁604800秒(一周)。可以设置为 -1 永久封禁,但需谨慎。

3. 启动与查看

sudo systemctl enable --now fail2ban
sudo systemctl status fail2ban
# 查看sshd监狱的封禁状态
sudo fail2ban-client status sshd

第三层:网络隔离 - 用防火墙构筑“护城河”

即使端口改了,也应该用防火墙严格限制访问来源。

使用UFW(简单)

# 允许特定IP段(如你的办公网IP)访问SSH端口
sudo ufw allow from 203.0.113.0/24 to any port 58234
# 默认拒绝所有入站
sudo ufw default deny incoming
sudo ufw enable

使用iptables(通用)

# 允许特定IP,拒绝其他所有对SSH端口的访问
sudo iptables -A INPUT -s 203.0.113.100 -p tcp --dport 58234 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 58234 -j DROP
# 记得保存规则(取决于你的发行版)

云服务器安全组:在阿里云、腾讯云等控制台,设置安全组规则,只放行你的IP地址到SSH端口,这是最外一层也是最有效的防护。

第四层:深度监控 - 设立“预警哨所”

防护体系需要眼睛。我们需要知道谁在试探,以及何时该提高警戒。

1. 增强日志
确保SSH日志级别足够。在/etc/ssh/sshd_config中可设置 LogLevel VERBOSE

2. 设置日志告警
可以写一个简单的脚本,用cron定时任务扫描日志,发现大量失败尝试就发邮件或通过Server酱、Telegram Bot通知你。

#!/bin/bash
# 简易日志监控脚本示例
FAILED_COUNT=$(sudo tail -100 /var/log/auth.log | grep "Failed password" | wc -l)
if [ $FAILED_COUNT -gt 10 ]; then
  echo "警告:过去100条日志中发现 $FAILED_COUNT 次SSH失败登录!" | mail -s "服务器安全告警" [email protected]
fi

第五层:进阶策略与工具

对于有更高安全需求的服务器,可以考虑:

  • 部署蜜罐(Honeypot):如用cowrie伪装成一个易攻破的SSH服务,引诱攻击者进入,记录其行为并浪费其时间,同时保护真实服务。
  • 使用现代替代品CrowdSec 可以看作是Fail2ban的“下一代”,它采用分布式情报共享,不仅基于本地日志,还能利用社区共享的攻击IP情报进行防护,更为智能。

实战附录:一份来自实战的黑名单IP段

在我的防御过程中,我积累了一些高频攻击的来源IP段。请注意,IP是动态的,此列表仅供参考,直接封禁整个段可能误伤,建议优先使用Fail2ban动态封禁。 你可以在服务器防火墙的“预置黑名单”中酌情使用。

IP段/国家备注
103.102.128.0/18 (某地区)SSH暴力破解高频源
45.95.0.0/16 (某网络)近期非常活跃的攻击段
185.174.136.0/22 (某地)常与Web漏洞扫描结合

(欢迎大家在评论区补充你遇到的可疑IP,我们一起维护这份清单!)

总结

服务器的安全防护是一个纵深体系,没有一劳永逸的银弹。让我们回顾一下这5层策略:

  1. 基础加固:改端口、禁root、用密钥——让攻击面最小化。
  2. 主动防御:部署Fail2ban——让持续攻击者自动上黑名单。
  3. 网络隔离:配置防火墙/安全组——只允许可信IP访问。
  4. 深度监控:设置日志告警——让自己对攻击态势心中有数。
  5. 进阶探索:考虑蜜罐或CrowdSec——从被动防御转向主动干扰。

按照从1到5的顺序逐步实施,你的服务器安全性将得到质的飞跃。安全是一个持续的过程,定期更新系统、检查日志、审视规则同样重要。

如果你在配置过程中遇到问题,或者有更好的工具推荐,欢迎在下方留言讨论。保护我们的数字资产,从今天这5步开始。