讲师中心 微信公众号
AI工具推荐 视频效率加速

Nginx 与操作系统 iptables 结合:实现基于日志触发的自动化封禁

老伟姑娘_4836

老伟姑娘_4836

发布时间:2026-05-09 12:12:16

|

671人浏览过

|

来源于php中文网

原创

Nginx日志触发iptables封禁需统一时间格式(用%b匹配Aug)、过滤200/301/302状态码、防重复封禁、持久化规则并记录封禁日志,建议每1–2分钟cron执行分析脚本。

nginx 与操作系统 iptables 结合:实现基于日志触发的自动化封禁

直接用 Nginx 日志触发 iptables 封禁,核心是“日志分析 + 规则写入”,不依赖额外服务,轻量、可控、适合中小规模运维场景。关键不在脚本多复杂,而在时间匹配、阈值合理、避免误封。

确保日志格式与时间解析对得上

Nginx 默认日志时间格式为 [07/Aug/2025:10:00:00 +0800],而多数 shell 脚本用 date +"%d/%m/%Y:%H:%M:%S" 生成的是 07/08/2025:10:00:00 —— 月份缩写(Aug)和数字(08)不一致,grep 或 awk 就筛不到数据。必须统一:

  • 要么改脚本,用 date +"%d/%b/%Y:%H:%M:%S" 匹配 %b(如 Aug)
  • 要么改 Nginx 日志格式,在 log_format 中用 $time_local 并自定义为数字月,例如:log_format main '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"'; 配合 time_format %d/%m/%Y:%H:%M:%S(需 Nginx ≥ 1.19.10)
  • 更稳妥的做法:用 tac access.log | awk '{t=substr($4,2,20)} t ~ /^'"$(date -d '1 minute ago' +'%d\/%b\/%Y:%H:%M')"'/{print $1}' 提取时间字段并截取比对

封禁逻辑要防重复、防漏判

单纯统计 IP 出现次数容易误伤(比如 CDN 回源、合法爬虫),建议加两层过滤:

协同养育操作系统
协同养育操作系统

协同养育操作系统(Co-Parenting OS)— 离异家庭专业协同养育支持系统。12模块覆盖接送管理、成长记忆库、孩子观察站、亲子关系粘合剂、共同挑战中心、情绪冲突观察、父母成长、成长档案馆、成长阶段引擎、风险预警、驾驶舱、被恶意攻击急救包。当用户涉及离异家庭育儿、协同养育、抚养探视、接送安排、孩子成长记录、亲子关系、离异冲突、被恶意攻击、前任矛盾等话题时触发。

下载
  • 只统计返回状态码为 200、301、302 的请求(排除大量 404 扫描干扰):在 awk 中加条件 $9 ~ /^(200|301|302)$/
  • 检查 IP 是否已存在 iptables 规则,避免重复插入:用 iptables -C INPUT -s $ip -j DROP > /dev/null || iptables -I INPUT -s $ip -j DROP
  • 封禁前记录原始日志片段(如 top 5 请求 URL),方便事后人工复核

封禁后必须持久化且可回溯

iptables 规则重启即失效,必须保存;同时封禁行为本身也要留痕:

  • 执行 iptables-save > /etc/sysconfig/iptables(CentOS 7)或 netfilter-persistent save(Ubuntu)
  • 把每次封禁的 IP、时间、触发次数、日志采样写入独立文件,例如:echo "$(date '+%F %T') $ip ($count req in 60s) $(tail -n10 $LOG_FILE | grep $ip | head -n3)" >> /var/log/nginx/ip_block_history.log
  • 配合 logrotate 每日切割封禁日志,防止无限增长

建议搭配 cron 定时运行,而非实时监听

用 inotifywait 实时监听日志变动看似高效,但高并发下易丢事件、增加系统负载。更稳的做法是每 1–2 分钟 cron 执行一次分析脚本:

  • 编辑 crontab:*/2 * * * * /usr/local/bin/ip_block.sh > /dev/null 2>&1
  • 脚本内限定只分析最近 90 秒日志(覆盖 cron 延迟),避免重复处理旧数据
  • 首次运行前手动执行一次,确认规则能正常写入、日志路径无权限问题

热门AI工具

更多
音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

相关专题

更多
视频服务器配置参数有哪些
视频服务器配置参数有哪些

视频服务器配置参数有处理器、内存、存储、视频编解码器、网络接口、视频输入输出接口、操作系统、安全性、环境适应性和成本。在搭建视频服务器时,需要根据实际需求和预算,合理选择这些参数,以实现高性能、高稳定性和低成本的目标。

4120

2023.10.17

linux的操作系统介绍
linux的操作系统介绍

Linux是一个灵活、稳定、安全的操作系统,适用于各种不同的应用场景,从个人电脑到服务器和嵌入式系统。想了解更多Linux的相关内容,可以阅读本专题下面的文章。

3286

2024.03.20

Linux操作系统的主要用途
Linux操作系统的主要用途

Linux操作系统用途广泛,包括:服务器运营,软件开发,科学研究和教育,嵌入式系统,以及个人电脑和笔记本电脑。想了解更多Linux的相关内容,可以阅读本专题下面的文章。

5579

2024.03.21

linux操作系统的作用
linux操作系统的作用

linux操作系统在以下领域发挥着关键作用:服务器和云计算;嵌入式系统;个人电脑和笔记本电脑;超级计算;其他领域等等。想了解更多linux操作系统的相关内容,可以阅读本专题下面的文章。

2615

2024.04.12

有哪些常见的网络操作系统
有哪些常见的网络操作系统

常见的网络操作系统有windows server、linux、unix、macos server、freebsd、cisco ios、juniper junos和hp-ux等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3184

2024.09.12

32位操作系统怎么改成62位的
32位操作系统怎么改成62位的

要将 32 位操作系统升级到 64 位,需要遵循以下步骤:1. 检查硬件和软件兼容性;2. 备份数据;3. 获取 64 位操作系统;4. 创建可启动安装媒体;5. 从安装媒体启动计算机;6. 选择“升级”选项;7. 完成安装。

3303

2025.04.02

nginx 重启
nginx 重启

nginx重启对于网站的运维来说是非常重要的,根据不同的需求,可以选择简单重启、平滑重启或定时重启等方式。本专题为大家提供nginx重启的相关的文章、下载、课程内容,供大家免费下载体验。

383

2023.07.27

nginx 配置详解
nginx 配置详解

Nginx的配置是指设置和调整Nginx服务器的行为和功能的过程。通过配置文件,可以定义虚拟主机、HTTP请求处理、反向代理、缓存和负载均衡等功能。Nginx的配置语法简洁而强大,允许管理员根据自己的需要进行灵活的调整。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

3267

2023.08.04

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

80

2026.09.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpEnv手册
phpEnv手册

共0课时 | 0人学习

nginx手册
nginx手册

共0课时 | 0人学习

进程与SOCKET
进程与SOCKET

共6课时 | 0.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn