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

推荐订阅源

MyScale Blog
MyScale Blog
Microsoft Azure Blog
Microsoft Azure Blog
H
Help Net Security
N
News and Events Feed by Topic
Recent Announcements
Recent Announcements
D
Docker
M
MIT News - Artificial intelligence
L
LangChain Blog
I
InfoQ
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
P
Proofpoint News Feed
博客园_首页
MongoDB | Blog
MongoDB | Blog
美团技术团队
S
Schneier on Security
G
GRAHAM CLULEY
月光博客
月光博客
有赞技术团队
有赞技术团队
Vercel News
Vercel News
Scott Helme
Scott Helme
P
Privacy International News Feed
Last Week in AI
Last Week in AI
Recorded Future
Recorded Future
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
The Cloudflare Blog
Attack and Defense Labs
Attack and Defense Labs
Google Online Security Blog
Google Online Security Blog
Simon Willison's Weblog
Simon Willison's Weblog
量子位
S
Security @ Cisco Blogs
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
V
Visual Studio Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
NISL@THU
NISL@THU
N
Netflix TechBlog - Medium
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Spread Privacy
Spread Privacy
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
小众软件
小众软件
罗磊的独立博客
Security Archives - TechRepublic
Security Archives - TechRepublic
T
Threatpost
L
Lohrmann on Cybersecurity
www.infosecurity-magazine.com
www.infosecurity-magazine.com
S
Security Affairs
Cloudbric
Cloudbric
爱范儿
爱范儿
H
Heimdal Security Blog
PCI Perspectives
PCI Perspectives

NGINX

有用 Nginx UI 的朋友吗?这玩意是不是时不时将磁盘 IO 打满? 麦当劳服务模式是 nginx,肯德基服务模式是 apache,这样理解对不对? - V2EX oracleusa.ml 的实现原理 - V2EX 尝试自己配置转发后端请求的时候有个疑问 - V2EX 请教 Nginx 时完整的 SSL 刷新教程或者脚本 - V2EX 问问大家 nginx 日志流量分析用什么方案? - V2EX nginx 二级目录反向代理是不是有先天缺陷? - V2EX nginx rewrite 指令的问题 - V2EX 问个 nginx 配置问题 - V2EX 请问下为啥微信客户端访问到 nginx 没有参数了? - V2EX 有兄弟们用 nginx proxy manager(或者其他图形化工具)来管理 nginx 反向代理的吗? - V2EX 请问 Nginx 怎么添加 CORS 白名单? - V2EX 使用 nginx 监听已被监听的端口, reload 不会失败, 但会导致其他配置不生效. - V2EX nginx 如何获取/打印完整代理路径? - V2EX Nginx 四层反代 QUIC 如何传递客户端 IP - V2EX 关于 windows 下面重启之后 nginx 的问题 - V2EX 我是不是可以反向代理个 V2EX 网站? - V2EX 用 nginx 做的 xai 的转发好像一直有问题 - V2EX 请教一个 Nginx 配置和浏览器强制 http 转 https 问题 - V2EX nginx proxy manager ipv6 反代指向内网 ipv4 局域网地址,还可以这样操作🤔? - V2EX 关于 Nginx 反向代理性能调优的问题,求指导🙏 - V2EX nginx 配置根据请求头分发问题 - V2EX 用过 nginx-proxy-manager 请进, 咨询个问题. - V2EX 我有一个端口转发问题,求大佬们协助 - V2EX 使用 Nginx 代理 Emby 服务器,浏览器可以访问但是客户端连不上 - V2EX 小白在使用 Nginx proxy manager 遇到问题,请大佬们指教。 - V2EX 请教下 nginx 反代配置 - V2EX nginx 配置问题求解答 - V2EX Nginx 流量异常,请大佬支招~ - V2EX nginx 读取 ssl 证书的权限问题请教 - V2EX 请问一个二级域名如何配置可以访问多个 http 服务? - V2EX 配置证书相关的问题 - V2EX 关于 nginx 的一些提问 - V2EX nginx 限流失败的奇怪问题 - V2EX 反向代理提示该网站已被拦截,请教 - V2EX 为什么我的 docker nginx 的不能反向代理 favicon 啊 - V2EX Nginx 能不能实现按域名限制网速? - V2EX 请教一下各位关于 nginx 版本更新区别导致反向代理无法访问的问题 - V2EX 虚心请教一个有关于 nginx 配置的问题 - V2EX 求解 nginx 反代某堡垒机 443 页面出现问题 - V2EX nginx if 语句 return 403,没办法跳转自定义 403 页面 - V2EX 请教 nginx deny 优先级的问题。 - V2EX 求教关于反代的问题 - V2EX nginx 增加 http 块 就报证书错误,请问是什么原因,第一次见 - V2EX 有台生产服务器, Nginx 每天都会因为不同原因 exit 一次,虽然配了自动重启,有没办法排查是什么原因?平均一天 1820 万请求 - V2EX openresty 怎么修改代理站的文件返回给客户端 有啥平替 resend、ZeptoMail 的国内解决方案嘛? 求救:屏蔽爬虫试了 2 天,没成功 - V2EX
fail2ban 保护 nginx 方案 - V2EX
cowiejulewbfwo · 2025-11-28 · via NGINX

Docker Nginx (Host Mode) + Fail2Ban 完整指南

本教程适用于使用 --network host 模式运行 Nginx 容器的场景。在此模式下,Fail2Ban 配置比 Bridge 模式更简单,因为不需要处理 Docker 的 NAT 转发链。


📌 环境信息

  • 运行模式:Docker (Host Network)
  • 日志路径/root/nginx/log/access.log
  • 监听端口:宿主机直接监听 80/443

第一步:确认容器运行状态

请确保您已使用 Host 模式启动容器:

# 停止并删除旧容器
docker rm -f nginx01

# 启动新容器( Host 模式)
docker run -d \
  --name nginx01 \
  --restart always \
  --network host \
  -v "/root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf" \
  -v "/root/nginx/html:/usr/share/nginx/html" \
  -v "/root/nginx/cert:/etc/nginx/cert" \
  -v "/root/nginx/log:/var/log/nginx" \
  --add-host=host.docker.internal:host-gateway \
  nginx

第二步:配置 Fail2Ban 过滤器

我们需要创建规则来告诉 Fail2Ban 什么是恶意行为。

1. 防恶意扫描( Bad Request )

拦截扫描敏感文件(如 .env, wp-login.php)的攻击者。

sudo nano /etc/fail2ban/filter.d/nginx-bad-request.conf
[Definition]
failregex = ^<HOST> - - .* "(GET|POST|HEAD) .*\.(php|asp|aspx|jsp|cgi|env|git|yml|sql|bak|tar|gz|zip|rar|sh) HTTP.*" (400|401|403|404) .*$
            ^<HOST> - - .* "(GET|POST|HEAD) .*/(phpmyadmin|admin|setup|manager|dashboard|wp-login|xmlrpc).* HTTP.*" (400|401|403|404) .*$
ignoregex =

2. 防高频 CC 攻击( Anti-Flood )

拦截请求频率过高的 IP ,但排除静态资源(图片、CSS 等)以免误封。

sudo nano /etc/fail2ban/filter.d/nginx-cc.conf
[Definition]
failregex = ^<HOST> - - .* "(GET|POST|HEAD).*HTTP.*" .*$
# 忽略图片、CSS 、JS 等静态资源
ignoregex = \.(jpg|jpeg|png|gif|ico|css|js|woff|woff2|ttf|svg|mp4|webm) HTTP

第三步:配置监狱(jail.local

这是 Host 模式与 Bridge 模式最大的区别点。**Host 模式下,我们不需要指定 chain = DOCKER-USER**。

sudo nano /etc/fail2ban/jail.local
[DEFAULT]
# 白名单 IP:即使这些 IP 触发规则也不会被封
# 建议加上 localhost
ignoreip = 127.0.0.1/8 192.168.0.0/16 10.0.0.0/8

# 默认封禁时间:1 小时
bantime  = 1h
# 查找时间窗口:10 分钟
findtime = 10m
# 最大尝试次数:5 次
maxretry = 5

# --- Host 模式动作配置 ---
# 直接使用标准 iptables-multiport 即可,无需指定 chain
banaction = iptables-multiport

# ==========================================
# 规则 1:防止恶意扫描
# ==========================================
[nginx-bad-request]
enabled  = true
logpath  = /root/nginx/log/access.log
filter   = nginx-bad-request
port     = 80,443
maxretry = 3
bantime  = 24h

# ==========================================
# 规则 2:防止 CC 攻击
# ==========================================
[nginx-cc]
enabled  = true
logpath  = /root/nginx/log/access.log
filter   = nginx-cc
port     = 80,443
findtime = 60
# 允许每分钟 120 次非静态资源请求
maxretry = 120
bantime  = 2h

第四步:重启与验证

1. 重启 Fail2Ban

sudo systemctl restart fail2ban

2. 验证状态

sudo fail2ban-client status

应看到以下两个监狱处于活动状态:

  • nginx-bad-request
  • nginx-cc

3. 验证防火墙规则

检查 INPUT 链( Host 模式走这里):

sudo iptables -L INPUT -n

确认规则中出现针对目标 IP 的 DROPREJECT 记录,表示封禁生效。


完成!
您的 Nginx 容器已在 Host 模式下成功集成 Fail2Ban ,具备抵御恶意扫描与 CC 攻击的能力。