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

推荐订阅源

Scott Helme
Scott Helme
有赞技术团队
有赞技术团队
阮一峰的网络日志
阮一峰的网络日志
雷峰网
雷峰网
D
Docker
Stack Overflow Blog
Stack Overflow Blog
Hugging Face - Blog
Hugging Face - Blog
爱范儿
爱范儿
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
MyScale Blog
MyScale Blog
A
About on SuperTechFans
博客园 - 【当耐特】
U
Unit 42
H
Help Net Security
博客园 - 三生石上(FineUI控件)
V2EX - 技术
V2EX - 技术
T
Tor Project blog
博客园 - 叶小钗
G
Google Developers Blog
S
Securelist
Security Latest
Security Latest
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
T
Threat Research - Cisco Blogs
aimingoo的专栏
aimingoo的专栏
C
Cybersecurity and Infrastructure Security Agency CISA
博客园_首页
V
Vulnerabilities – Threatpost
P
Palo Alto Networks Blog
T
The Exploit Database - CXSecurity.com
The Register - Security
The Register - Security
Recorded Future
Recorded Future
NISL@THU
NISL@THU
量子位
L
LangChain Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
C
Cyber Attacks, Cyber Crime and Cyber Security
C
CERT Recently Published Vulnerability Notes
The Hacker News
The Hacker News
D
DataBreaches.Net
小众软件
小众软件
罗磊的独立博客
Forbes - Security
Forbes - Security
The Last Watchdog
The Last Watchdog
Jina AI
Jina AI
I
InfoQ
S
Schneier on Security
Recent Announcements
Recent Announcements
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
S
Secure Thoughts

齐物 on 老刘博客

Arch Linux 电源优化指南 Ubuntu 26.04 用了一个月 告别 PaperMod:审美疲劳后的 Hugo 博客“换装”记 Ubuntu25.10编译安装Ibus-libpinyin 博客托管平台换成edgeone pages 博客评论换回Giscus EndeavourOS + Btrfs + Snapper + GRUB:完整的快照回滚系统配置指南 把GotoSocial嵌入到Hugo 给Hugo PaperMod主题添加一个漂亮又简洁的友情链接页面 群晖NAS安装FRP客户端(frpc) Ubuntu24.04安装Windterm 从 Windows 到 Linux:重新体验的过程与心得 解决腾讯 EdgeOne 域名解析与 SSL 证书申请失败问题 折腾杀毒软件的一点感想 开箱|媳妇的华为 Watch Fit 4 Ghost 博客与 Mailgun 邮件服务申请全流程 Ubuntu部署ghost博客所踩的小坑 当GitHub二次验证丢失:我的完整恢复经历 在群晖里安装简单的笔记软件flatnotes 手机上有好用的输入法吗? 再次使用 KeepassXC进行密码管理 解决Windows11打开安全中心空白的方法 修汽车空调 给Hugo PaperMod增加giscus评论系统 2024年,高德地图和百度地图选哪个? 电视和投影仪,哪个对孩子的眼睛更好? 使用Fcitx5 for Android,读《万历十五年》 2024年 Web 开发趋势 利用cloudflare页面规则设置301永久跳转 初冬时节话镜片防雾 在群晖中使用tailscale实现内网穿透 EndeavourOS安装之后的几件事 Hugo-papermod主题的优化记录 视光周刊(第9期):年轻的时候近视,年老不花眼? 从WordPress转到Hugo 思源笔记群晖正确的部署方法 近视人群夏季佩戴太阳镜的几种方案 在manjaro中安装使用Rime并启用雾凇输入法 开始试用小狼毫输入法 使用群晖自动备份网站 manjaro安装配置fcitx5输入法 没有公网IP也能玩转群晖DDNS ubuntu20.10升级编译安装ibus-libpinyin输入法 电波表如何接收日本电波对时塔的信号 奇葩的京东无线宝 keepass加群辉实现数据同步及浏览器自动填充密码(二) zerotier加openwrt路由实现内网穿透控制群晖 打造一个安全的宝塔面板服务器环境 网易词典笔2.0简单开箱 给鱼缸上了沼泽过滤 破磨边机,早晚换了你 Apple iPad第七代使用小计 使用群晖,配置打印机,实现无线打印机的功能 宝塔面板安装FRP内网穿透控制群晖 推荐一款免费的视频剪辑软件shotcut 使用zerotier进行内网穿透 再次折腾黑群晖系统 记暴风酷播云2期折腾黑群晖 WordPress开启Nginx fastcgi_cache缓存加速 给7B2主题加上外链自动跳转功能 这次发现百度收录的挺快的 百度输入法小测 黑莓8830上网利器之浏览器 做博客比做网站难 网站又搬家了—这次选的衡天小张的服务器 换到pipni的空间了 杯具,原来上传的图片等都没有能转过来 换了个模板 小测三款博客离线编辑软件 开发出godaddy免费空间的另外一个用途 体验了下失而复得 解决godaddy免费空间广告带来影响的方法 小测QQ刚推出的webqq mini wordpress中文tag、中文分类找不到文章的解决方法 提供WordPress 主题 Marcelle的汉化版本 博客整体细节基本完成 虚惊一场 如何增加WordPress上传文件类型 ubuntu9.10 sis显卡驱动程序 聪明的宝宝 lnkillprocess.exe – DLL 初始化失败终极解决方案 lnkillprocess.exe-dll初始化失败的原因终于找到了 如何安全使用计算机4 如何安全使用计算机 3 如何安全使用计算机 2 如何安全使用计算机 1 KPI考评——企业绩效管理的基础 推荐大家使用Symantec Endpoint Protection 11.0.4000_MR4简体中文正式版
lnmp一键开启waf及使用 Fail2Ban防护
老刘 · 2019-07-28 · via 齐物 on 老刘博客

本文主要介绍如何在 LNMP 一键安装包 环境下,启用 ngx_lua_waf Web 防火墙,并使用 Fail2Ban 防护 Nginx 与 WordPress。


一、LNMP 开启 Lua 支持

LNMP 一键安装包从 1.5 版本开始支持 Lua,可用于启用 ngx_lua_waf。

  1. 修改 lnmp.conf
  1. 若 LNMP 已安装,执行:

输入当前 Nginx 版本号或需要升级的版本号,即可启用 Lua 支持。


二、安装 ngx_lua_waf

  1. 下载并解压:
1
2
3
wget https://github.com/loveshell/ngx_lua_waf/archive/master.zip -O ngx_lua_waf.zip
unzip ngx_lua_waf.zip
mv ngx_lua_waf-master /usr/local/nginx/conf/waf
  1. 修改 Nginx 配置 /usr/local/nginx/conf/nginx.conf

server_tokens off; 下添加:

1
2
3
lua_package_path "/usr/local/nginx/conf/waf/?.lua;;";
lua_shared_dict limit 10m;
init_by_lua_file /usr/local/nginx/conf/waf/init.lua;
  1. 在虚拟主机中启用 WAF:
1
2
3
4
server {
    root /网站目录;
    access_by_lua_file /usr/local/nginx/conf/waf/waf.lua;
}
  1. 测试 Nginx 配置并重载:
1
2
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
  1. 测试防护:
1
http://你的域名/test.php?id=../etc/passwd

提示“您的请求带有不合法参数,已被网站管理员设置拦截”表示生效。

  • WAF 配置文件路径:/usr/local/nginx/conf/waf/config.lua

三、Fail2Ban 防护网站与服务器

1. 获取真实访问 IP

套用 CDN 后,需要在 Nginx 中获取真实 IP:

1
2
3
4
http {
    log_format main '$http_x_forwarded_for-$remote_user[$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"';
    access_log /home/wwwlogs/xxxx.log main;
}

重载 Nginx 后,日志中显示的即为真实来源 IP。


2. 配置 Fail2Ban

  1. 复制配置文件:
1
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
  1. 编辑 /etc/fail2ban/jail.local

[DEFAULT] 下设置:

1
2
3
bantime = 3600     # 封禁时长
findtime = 3600    # 统计时间
maxretry = 6       # 最大失败次数
  1. 启用监狱(示例 Nginx 与 WordPress 防护):
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
[nginx-http-auth]
enabled = true
filter = nginx-http-auth
port = http,https
logpath = /var/log/nginx/error.log

[nginx-badbots]
enabled = true
filter = nginx-badbots
port = http,https
logpath = /var/log/nginx/access.log
maxretry = 2

[nginx-nohome]
enabled = true
filter = nginx-nohome
port = http,https
logpath = /var/log/nginx/access.log
maxretry = 2

[nginx-noproxy]
enabled = true
filter = nginx-noproxy
port = http,https
logpath = /var/log/nginx/access.log
maxretry = 2

[wp-login]
enabled = true
filter = wp-login
port = http,https
maxretry = 10
findtime = 60
bantime = 43600
logpath = /var/log/nginx/access.log

[xmlrpc]
enabled = true
filter = xmlrpc
port = http,https
logpath = /var/log/nginx/access.log
bantime = 43600
maxretry = 1
findtime = 5

3. 创建 Fail2Ban 规则

/etc/fail2ban/filter.d/ 中添加规则文件:

  • nginx-http-auth.conf:过滤 HTTP 验证失败
  • nginx-badbots.conf:过滤恶意爬虫(可复制 apache-badbots.conf)
  • nginx-nohome.conf:过滤目录扫描
  • nginx-noproxy.conf:防止反代
  • wp-login.conf:防止 WordPress 登录暴力破解
  • xmlrpc.conf:防止 WordPress xmlrpc 攻击

4. 防护无效 404 请求

  1. 创建过滤规则 /etc/fail2ban/filter.d/nginx-not-found.conf
1
2
3
[Definition]
failregex = ^<HOST>.*"(GET|POST).*" (404|444|403|400) .*$
ignoreregex =
  1. 启用监狱:
1
2
3
4
5
6
7
8
9
[nginxno404]
enabled = true
port = http,https
filter = nginx-not-found
action = iptables[name=nginxno404, port=http, protocol=tcp]
logpath = /home/wwwlogs/access.log
bantime = 3600
findtime = 60
maxretry = 5
  1. 重启 Fail2Ban:
1
systemctl restart fail2ban.service
  1. 查看状态:
1
2
3
fail2ban-client status
tail -f /var/log/fail2ban.log
iptables --list -n

四、总结

  • LNMP + Lua + ngx_lua_waf 可提供基本 Web 防火墙保护。
  • Fail2Ban 可防暴力破解、恶意爬虫、目录扫描、WordPress xmlrpc 攻击及无效请求。
  • 结合日志监控与定期规则更新,可有效提升网站安全性。

注:本文参考了 落格部落明月登楼博客 的相关内容。