凌晨3点服务器被CPU打爆!从裸奔到铜墙铁壁,这套纵深防御方案救了我的命

news/2026/1/25 13:28:50/文章来源:https://www.cnblogs.com/sprinng/p/19529374

0

前言:一个让我夜不能寐的问题

上周五凌晨3点,我被短信惊醒——服务器CPU飙到100%,网站全挂。

查日志,触目惊心:

# 1小时内的恶意请求
grep "nikto\|sqlmap\|nmap" access.log | wc -l
# 结果:23847

2万多次攻击扫描,来自全球各地的IP,疯狂探测我的漏洞。

这不是个例。根据 Cloudflare 2025年报告,一个暴露在公网的服务器,平均每天会收到超过10万次恶意请求

于是我花了整整一周,搭建了这套5层纵深防御体系

现在,我的服务器稳如老狗:

# 过去7天拦截统计
[L1 内核层] SYN Flood: 12,847 次
[L2 Fail2Ban] 封禁IP: 2,341 个
[L3 Lua拦截] 恶意UA: 45,892 次
[L4 限流] 429返回: 8,234 次
[L5 WAF] 攻击拦截: 15,678 次

今天,我把这套方案完整开源


[写在前面] 如果你是个人开发者、独立站长,或是需要自己管理服务器的技术爱好者,这篇文章就是为你量身打造的。我们不讲虚的,直接上代码,保证能跑。

一、架构全景:5层纵深防御

先看整体架构,理解每一层的职责:

1

核心设计原则:

层级 位置 拦截目标 性能消耗 技术栈
L1 内核 SYN Flood、ICMP 洪水 极低 sysctl + firewalld
L2 宿主机 协议探测、端口扫描、暴力破解 Fail2Ban + IPSet
L3 容器 空UA、爬虫脚本、工具指纹 OpenResty Lua
L4 容器 高频请求 (CC攻击) Nginx limit_req
L5 容器 SQL注入、XSS、CVE漏洞 ModSecurity + CRS

越靠前拦截,性能消耗越低。 这就是纵深防御的精髓。


二、L1 内核层:第一道防线

SYN Flood 是最常见的 DDoS 攻击方式。攻击者发送大量半连接请求,耗尽服务器资源。

解决方案:sysctl 内核参数调优 + firewalld 限速

2.1 sysctl 配置

# 创建配置文件
sudo bash -c 'cat > /etc/sysctl.d/99-anti-ddos.conf << EOF
# ========================================
# SYN Flood 防护配置
# 作者: wwj
# ========================================# 【必须】启用 SYN Cookie
# 原理: 不保存半连接状态,用加密cookie验证
net.ipv4.tcp_syncookies = 1# 【优化】减少 SYN 重试次数 (默认6)
# 效果: 更快释放无效连接
net.ipv4.tcp_syn_retries = 2
net.ipv4.tcp_synack_retries = 2# 【优化】增加 SYN 队列长度 (默认128)
# 效果: 容纳更多正常连接
net.ipv4.tcp_max_syn_backlog = 4096# 【优化】TIME_WAIT 复用
# 效果: 减少端口耗尽风险
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30# 【Docker必须】增大连接跟踪表
# 默认65535,高并发场景容易满
net.netfilter.nf_conntrack_max = 1048576
EOF'# 立即生效
sudo sysctl -p /etc/sysctl.d/99-anti-ddos.conf# 验证配置
sysctl net.ipv4.tcp_syncookies
# 输出应该是: net.ipv4.tcp_syncookies = 1

2.2 firewalld SYN 限速

相比 iptables,firewalld 的管理更加现代化。我们在防火墙层直接丢弃过快的连接。

# 限制每秒最多25个新连接 (突发50个)
sudo firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 \-p tcp --syn -m limit --limit 25/s --limit-burst 50 -j ACCEPTsudo firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 1 \-p tcp --syn -j DROP# 限制 ICMP (防 Ping Flood)
sudo firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 \-p icmp -m limit --limit 10/s --limit-burst 20 -j ACCEPTsudo firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 1 \-p icmp -j DROP# 重载规则
sudo firewall-cmd --reload# 验证
sudo firewall-cmd --direct --get-all-rules

效果: 99% 的 SYN Flood 攻击在内核层就被丢弃,根本不会到达你的 Nginx。


三、L2 宿主机层:Fail2Ban + IPSet 高性能封禁

普通玩家用 Fail2Ban 修改 iptables 规则,每封一个 IP 加一条规则,封几千个 IP 后系统就慢如蜗牛。
高端玩家使用 IPSet。 无论封禁 1 个还是 10 万个 IP,匹配耗时都是 O(1)(恒定时间),对 CPU 几乎零负担。

此外,为了完美配合 Docker,我们使用 journald 作为日志驱动,彻底解决容器日志轮转难题。

3.1 准备工作:配置 Docker 日志驱动

修改 docker-compose.yml,让 OpenResty 使用 journald 写日志:

services:op:image: sprinng/openresty:1.27.1.2-ms-small-alpine3.23.0container_name: oplogging:driver: journald  # 关键: 使用系统日志驱动options:tag: "{{.Name}}"

修改后记得重建容器:docker-compose up -d --force-recreate

3.2 安装 Fail2Ban 和 IPSet

# CentOS/AlmaLinux
sudo dnf install -y epel-release
sudo dnf install -y fail2ban ipset# 启动服务
sudo systemctl enable --now fail2ban

3.3 配置 4 个金牌监狱

针对不同类型的攻击,我们设计了 4 个专用的“监狱”:

  1. nginx-bad-request: 专抓协议探测(400错误)
  2. nginx-path-scan: 专抓目录扫描(404错误)
  3. nginx-path-scan-crawler: 爬虫专用通道(容忍度更高)
  4. nginx-auth-bruteforce: 专抓暴力破解(401/403错误)

一键创建配置:

sudo bash -c 'cat > /etc/fail2ban/jail.d/docker-nginx.local << EOF
[DEFAULT]
# 白名单 (Cloudflare IP + 本地IP)
ignoreip = 127.0.0.1/8 ::1 172.18.0.0/16 192.168.0.0/16 10.0.0.0/8 173.245.48.0/20 103.21.244.0/22 103.22.200.0/22 103.31.4.0/22 141.101.64.0/18 108.162.192.0/18 190.93.240.0/20 188.114.96.0/20 197.234.240.0/22 198.41.128.0/17 162.158.0.0/15 104.16.0.0/13 104.24.0.0/14 172.64.0.0/13 131.0.72.0/22# 核心: 使用 ipset 高性能封禁
banaction = iptables-ipset-proto6# 监狱1: 协议探测 (1次400即封)
[nginx-bad-request]
enabled = true
backend = systemd
journalmatch = CONTAINER_NAME=op
filter = nginx-bad-request
maxretry = 1
findtime = 60
bantime = 604800 # 封7天# 监狱2: 路径扫描 (60秒20次404)
[nginx-path-scan]
enabled = true
backend = systemd
journalmatch = CONTAINER_NAME=op
filter = nginx-path-scan
maxretry = 20
findtime = 60
bantime = 3600# 监狱3: 爬虫容错通道
[nginx-path-scan-crawler]
enabled = true
backend = systemd
journalmatch = CONTAINER_NAME=op
filter = nginx-path-scan-crawler
maxretry = 200
findtime = 60
bantime = 3600# 监狱4: 暴力破解 (10次401/403)
[nginx-auth-bruteforce]
enabled = true
backend = systemd
journalmatch = CONTAINER_NAME=op
filter = nginx-auth-bruteforce
maxretry = 10
findtime = 60
bantime = 21600
EOF'

注:对应的 filter 配置文件较长,因篇幅限制未完全列出,文末部署包中包含完整配置。


四、L3 容器 Lua 层:高性能 UA 拦截

为什么用 Lua 而不是 nginx if?
因为 Lua 灵活、性能高,且可以打印详细日志,方便排查是谁在攻击你。

-- block_rules.lua 片段
-- 规则: 拦截常见黑客工具和脚本local ua_blacklist = {{"^curl/", "curl"},{"^Wget/", "wget"},{"^python%-requests", "python-requests"},{"^Go%-http%-client", "go-http-client"},{"^Scrapy", "scrapy"},-- ... 更多规则
}local ua = ngx.var.http_user_agent or ""
for _, rule in ipairs(ua_blacklist) doif string.match(string.lower(ua), rule[1]) thenngx.log(ngx.WARN, "[BLOCK] reason=ua_blacklist, tool=", rule[2], ", ip=", ngx.var.remote_addr)return ngx.exit(444) -- 444 直接断开连接,不给任何回显end
end

效果: 绝大多数脚本小子(Script Kiddies)在这一层就会被无情断开,连 HTTP 头都拿不到。


五、L4 容器限流层:nginx limit_req

CC 攻击的特点是:高频请求,消耗服务器资源

nginx 的 limit_req 是最高效的解决方案。

5.1 核心配置

# http 块中定义 zone
# 关键: 使用 $binary_remote_addr$host 作为 key
#       同一 IP 访问不同域名,独立计数
limit_req_zone $binary_remote_addr$host zone=domain_req_limit:10m rate=60r/s;# server 块中使用
limit_req zone=domain_req_limit burst=100 nodelay;
limit_req_status 429;

参数详解:

参数 含义
$binary_remote_addr$host 按 IP+域名 独立计数
10m 10MB 内存,约存储 16 万个 key
rate=60r/s 每秒最多 60 个请求
burst=100 允许突发 100 个请求
nodelay 突发请求不排队,直接处理或拒绝

为了更形象地理解,我们可以把它看作一个“漏桶”,如下图所示:

漏桶

5.2 为什么用 IP+域名 作为 key?

假设你有多个域名:a.comb.comc.com

如果只用 IP 作为 key:

  • 用户访问 a.com 30次 + b.com 30次 + c.com 30次
  • 总计 90 次,触发限流,用户体验差

使用 IP+域名 作为 key:

  • 每个域名独立计数
  • 用户每个域名都可以访问 60 次
  • 不会误伤正常用户

六、L5 容器 WAF 层:ModSecurity + OWASP CRS

这是最后一道防线,也是最智能的防线。它能识别 SQL 注入、XSS、WebShell 上传等复杂攻击。

6.1 核心配置避坑

新手最容易踩的坑: Fail2Ban 启动失败。
原因往往是 ModSecurity 的审计日志文件不存在。Fail2Ban 启动时必须检测到日志文件,否则会报错退出。

解决方案(Pro Tip):
在部署前,务必手动创建日志文件:

# 确保目录和文件存在
sudo mkdir -p /data/op/modsecurity/logs/modsecurity/
sudo touch /data/op/modsecurity/logs/modsecurity/audit.log# 然后再启动容器和 Fail2Ban

6.2 启用 OWASP CRS

我们使用 OWASP Core Rule Set (CRS) v4,这是目前世界上最优秀的开源 WAF 规则集。

# modsecurity.conf
SecRuleEngine On  # 开启拦截模式
Include /etc/modsecurity/coreruleset/crs-setup.conf
Include /etc/modsecurity/coreruleset/rules/*.conf

七、快速验证:你的盾牌坚固吗?

部署完成后,别忘了测试一下:

# 1. 测试 Lua 拦截 (模拟 Curl)
curl http://your-domain.com/
# 预期: 连接被立即关闭 (Empty reply from server)# 2. 测试 WAF 拦截 (模拟 SQL 注入)
curl "http://your-domain.com/?id=1' OR '1'='1"
# 预期: 403 Forbidden# 3. 测试 Fail2Ban (模拟扫描)
# 在另一台机器连续请求不存在的页面
for i in {1..30}; do curl http://your-domain.com/scan_$i; done
# 预期: IP 被封禁,连接超时

八、为什么你需要“生产级安全部署包”?

上面展示的是核心配置,足以应对 90% 的普通攻击。但从“能用”到“生产级好用”,还有很长的路要走:

  1. Fail2Ban 的 filter 正则很难写:写错一个字符,Fail2Ban 就无法识别日志,防护失效。
  2. ModSecurity 误报多:WordPress 后台无法保存?富文本编辑器无法提交?不处理误报,网站根本没法用。
  3. 规则库更新麻烦:攻击手段日新月异,你的规则库还在用去年的吗?
  4. IPSet 配置复杂:需要精确的 ipset 命令配合 iptables 才能生效,错一步就是全网断连。

为了让你少走弯路,我将这套经过半年实战验证的方案打包好了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1214566.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

打孔吸风皮带推荐制造商,亨冠工业价格贵不贵

问题1:什么是打孔吸风皮带?哪些场景必须用这类皮带? 打孔吸风皮带是一种在带体表面均匀分布透气孔的特种输送带,通过与负压吸风系统配合,实现物料的稳定吸附输送,避免轻薄、易飘、异形物料在传输过程中偏移、堆叠…

养老规划平台哪个口碑好,德生科技的服务推荐吗?

一、什么是养老规划平台?和传统养老咨询有何区别? 养老规划平台是借助数字化技术整合政策、金融、服务资源,为用户提供从养老政策解读、待遇测算到个性化规划方案的一站式工具,核心是通过技术实现政策精准匹配+需求…

2026铸造钢球实力厂商排名,山东金池靠四大优势脱颖而出

在工业研磨领域,耐磨钢球是矿山、水泥、冶金等行业的心脏耗材,其质量直接决定磨机效率与生产综合成本。面对市场上鱼龙混杂的铸造钢球制造企业,如何精准选择兼具硬度、耐磨性与场景适配性的产品?以下结合用户核心痛…

金螳螂家总部店反馈怎么样,听听30000+客户真实评价

在消费升级与数字化浪潮的双重驱动下,家装行业正经历从传统施工向品质服务的深刻转型。面对市场上鱼龙混杂的家装品牌,消费者往往陷入价格虚高、质量难保、服务断层的选择困境。以下结合不同服务定位,为你解析2026年…

探讨黑龙江靠谱的公考培训机构,哪个口碑好值得选择?

随着公职考试竞争日趋激烈,考生在选择培训机构时往往面临信息繁杂难分辨承诺与服务不符付费后无人问津等痛点,而诚信的公考培训企业正是破解这些困境的核心关键。本文结合考生高频疑问,从机构选择、服务落地、效果验…

YOLOv12官版镜像效果惊艳!复杂场景检测不漏检

YOLOv12官版镜像效果惊艳&#xff01;复杂场景检测不漏检 在城市天际线的密集楼宇间&#xff0c;无人机巡检镜头正高速掠过玻璃幕墙——反光、阴影、重叠轮廓、低对比度目标混杂其中&#xff1b;在港口集装箱堆场&#xff0c;吊装机械臂需在毫秒级响应中识别数十个尺寸各异、部…

2026年热门舞蹈地板厂排名,新凯琳作为推荐品牌靠谱不?

本榜单依托全维度市场调研与真实行业口碑,深度筛选出五家标杆企业,为舞蹈机构、艺术院校、演出场馆等场景选型提供客观依据,助力精准匹配适配的防滑舞蹈地板服务伙伴。 TOP1 推荐:临沂新凯琳地板材料有限公司 推荐…

2026年四川晾衣架及配套商贸服务商综合评测与选型指南

随着家居建材市场的消费升级与零售渠道的精细化运营需求增长,以晾衣架为代表的家庭日常五金及关联产品的采购,正从单一商品买卖向一站式、品质化、服务型的供应链合作模式转变。对于四川省内众多的五金店、日杂店及社…

手把手教学:如何用科哥镜像搭建个人抠图小工具

手把手教学&#xff1a;如何用科哥镜像搭建个人抠图小工具 1. 为什么你需要一个自己的抠图工具 你有没有遇到过这些情况&#xff1f; 想给朋友圈头像换背景&#xff0c;但 Photoshop 太重、美图秀秀又抠不干净发丝&#xff1b;做电商上架商品&#xff0c;每天要处理20张产品…

热词功能实测:提升专业术语识别率的正确姿势

热词功能实测&#xff1a;提升专业术语识别率的正确姿势 语音识别不是“听个大概”就完事——尤其在医疗、法律、金融、科研等专业场景中&#xff0c;一个术语识别错误&#xff0c;可能让整段转录失去价值。比如把“CT扫描”识别成“西提扫描”&#xff0c;把“原告”听成“元…

英伟达的汽车生意经

作者丨章涟漪 链接丨英伟达的汽车“生意经” 点击下方卡片&#xff0c;关注“自动驾驶之心”公众号 戳我-> 领取自动驾驶近30个方向学习路线 >>国内首个自动驾驶全栈交流社区&#xff1a;自动驾驶之心知‍识星球&#xff08;戳我&#xff09; 本文已获转载授权&#x…

汽车工程师在焦虑中释怀的2025年

作者 | 小皮知乎 链接丨https://zhuanlan.zhihu.com/p/1989689030607124116 编辑 | 自动驾驶之心 点击下方卡片&#xff0c;关注“自动驾驶之心”公众号 戳我-> 领取自动驾驶近30个方向学习路线 >>国内首个自动驾驶全栈交流社区&#xff1a;自动驾驶之心知‍识星球&am…

吐血推荐8个一键生成论文工具,继续教育学生轻松搞定毕业论文!

吐血推荐8个一键生成论文工具&#xff0c;继续教育学生轻松搞定毕业论文&#xff01; AI 工具助力论文写作&#xff0c;效率提升不止一点点 在当今快节奏的学习与工作中&#xff0c;继续教育学生常常面临论文写作的难题。无论是毕业论文还是学术研究&#xff0c;撰写高质量的…

unbuntu关于apt镜像的注意事项(不能用腾讯源)

省时间:不能用腾讯源,用阿里源就行 nano /etc/apt/sources.list.d/ubuntu.sources Types: deb URIs: http://mirrors.aliyun.com/ubuntu/ Suites: resolute resolute-updates resolute-backports Components: main r…

低成本实现数字人直播?Live Avatar可行性分析

低成本实现数字人直播&#xff1f;Live Avatar可行性分析 1. 现实与理想的落差&#xff1a;为什么“低成本”数字人直播仍难落地 很多人看到“Live Avatar”这个名字&#xff0c;第一反应是&#xff1a;“阿里开源的数字人模型&#xff1f;那是不是能用几块4090搭个直播间&am…

选购蒸汽锅炉必看:2026年优质制造厂家深度解析,锅炉厂家/导热油锅炉/蒸汽锅炉,蒸汽锅炉制造企业选哪家

评测背景:市场繁荣下的理性选择 随着工业生产的持续复苏与环保政策的深化推进,蒸汽锅炉作为众多行业不可或缺的热能动力设备,其市场需求呈现出稳步增长的态势。面对市场上品牌众多、技术路线各异的蒸汽锅炉产品,如…

用GPEN镜像做了个人像增强项目,附完整步骤

用GPEN镜像做了个人像增强项目&#xff0c;附完整步骤 1. 为什么选GPEN做我的人像增强项目 最近在整理老照片时&#xff0c;发现不少珍贵的人像图存在模糊、噪点、轻微划痕甚至轻微失焦的问题。试过手机APP一键修复&#xff0c;效果浮于表面&#xff1b;也跑过几个开源超分模…

2026 年 AI 搜索 geo 优化公司推荐:头部供应商技术路径与增长效果全解析

随着生成式AI搜索技术快速普及,企业如何从海量信息中被精准识别并有效推荐,已成为决定品牌增长潜力的关键因素。2026年,专业的GEO(生成式引擎优化)服务商不再仅仅是流量入口的“搬运工”,而是品牌与用户之间的智…

聊聊通过式抛丸机公司哪家实惠,江苏鼎坚性价比之选

在工业制造的精密世界里,通过式抛丸机是金属构件表面处理的隐形工匠,直接影响工件涂层附着力、使用寿命与生产效率。面对市场上良莠不齐的通过式抛丸机厂家,企业如何避开同质化内卷定制化不足的坑,找到既实惠又强实…

2026年成都热门烘焙培训学校排名,成都欧米奇西点学校的学费是好多了解下?

本榜单依托全维度市场调研与真实行业口碑,深度筛选出五家标杆西式餐饮技能培育院校,为不同需求的学习者提供客观依据,助力精准匹配适配的技能学习伙伴。 TOP1 推荐:成都欧米奇西点烘焙学校 推荐指数:★★★★★ |…