实用指南:一次借助ChatGPT抵御恶意攻击的经历,为个人服务器添加自动防御系统Fail2ban

news/2025/10/21 14:52:52/文章来源:https://www.cnblogs.com/ljbguanli/p/19155396

实用指南:一次借助ChatGPT抵御恶意攻击的经历,为个人服务器添加自动防御系统Fail2ban


title: 一次借助ChatGPT抵御恶意攻击的经历,为个人服务器添加自动防御系统Fail2ban
tags:

  • 个人成长
    categories:
  • 杂谈

我有一台个人服务器,托管着自己的WordPress网站,也放了RustDesk这种私有化的远程桌面工具,最近我发现RustDesk特别卡,登录服务器才发现WordPress消耗了大量的资源和带宽

Uploaded image

然后我把现象丢给了GPT4o, GPT4o要求查看我的Nginx日志

image-20250602134232283

sudo tail -f /var/log/nginx/access.log

我将日志贴给gpt后,gpt快速分析了问题

image-20250602134331920

一、 使用 Nginx 限速保护登录接口

为了避免保留破解,我们需要对wp-login.php进行限流

1.1 编辑 nginx.conf,添加限流配置

image-20250602151208740

http {} 区块中添加以下内容:

limit_req_zone $binary_remote_addr zone=login_zone:10m rate=5r/m;

解释如下:

  • $binary_remote_addr:按 IP 建立限流;
  • login_zone:10m:设置一个 10MB 内存的限流区域;
  • rate=5r/m:每个 IP 每分钟最多允许 5 次请求。

? 注意:必须写在 http {} 块中!

1.2 修改虚拟主机配置,启用登录页限速

location = /wp-login.php {
limit_req zone=login_zone burst=3 nodelay;
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
参数说明:
  • burst=3:最多允许 3 个突发请求;

  • nodelay:超出限额立即拒绝;

  • 其余参数为 PHP-FPM 常规配置。

二、完整的 Nginx 配置示例(v2fy.com.conf)

为方便参考,这是一份包含 HTTPS、限流、防注入、静态缓存等功能的完整 Nginx 配置 v2fy.com.conf

# 监听 HTTP 端口,将所有请求重定向到 HTTPS
server {
listen 80;
server_name v2fy.com;
location / {
return 301 https://$host$request_uri; # 永久重定向到 HTTPS
}
}
# 主站点的 HTTPS 配置
server {
listen 443 ssl;
server_name v2fy.com;
# 网站根目录
root /usr/share/nginx/v2fy.com;
index index.php index.html index.htm;
# SSL 证书配置(路径根据你实际证书文件填写)
ssl_certificate /etc/nginx/ssl/v2fy.com/fullchain.cer;
ssl_certificate_key /etc/nginx/ssl/v2fy.com/v2fy.com.key;
# 安全相关的 SSL 设置
ssl_session_timeout 5m; # 会话缓存时间
ssl_protocols TLSv1.2 TLSv1.3; # 禁用不安全的 TLSv1 和 TLSv1.1
ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-GCM-SHA256';
ssl_prefer_server_ciphers on;
# 启用 gzip 压缩,提高页面加载速度
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_comp_level 8;
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php;
gzip_vary off;
# 防护 XMLRPC 接口(攻击频发)
location = /xmlrpc.php {
limit_req zone=xmlrpc_zone burst=5 nodelay; # 启用速率限制(需在 http{} 中定义 xmlrpc_zone)
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.2-fpm.sock; # PHP-FPM socket 路径
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# access_log 默认为开启,Fail2Ban 可以监控
}
# 登录页限速,保护登录暴力破解
location = /wp-login.php {
limit_req zone=login_zone burst=3 nodelay;
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
# Feed 接口限速,防止爬虫滥用
location = /feed {
limit_req zone=feed_zone burst=3 nodelay;
}
# 屏蔽伪 WordPress UA 发起的 cron 请求
location = /wp-cron.php {
if ($http_user_agent ~* "WordPress/") {
return 403;
}
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
# 优化 favicon 请求(避免 404 日志)
location = /favicon.ico {
log_not_found off;
access_log off;
}
# 允许 robots.txt 被搜索引擎访问
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
# 缓存常见静态资源,减少带宽和服务器压力
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max; # 浏览器缓存时间最长
log_not_found off;
access_log off;
}
# 网站主页及所有 URL 路由处理(WordPress rewrite)
location / {
try_files $uri $uri/ /index.php?$args;
}
# PHP 文件处理规则(fastcgi)
location ~ \.php$ {
try_files $uri =404; # 不存在的文件直接返回 404
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
# 反向代理某个接口(如 /wemessage/)
location /wemessage/ {
proxy_pass http://127.0.0.1:3600; # 反代本地端口
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# 防止攻击者构造特定路径发起请求
if ($request_uri ~* "(appendChild|postLinks|defer|actionURL)") {
return 403;
}
# 拦截含有特殊符号的异常路径(常用于注入、攻击等)
if ($request_uri ~* "[\[\]\!\=\,\{\}%]") {
return 403;
}
}

我们将配置丢给ChatGPT ,继续进行安全增强。

image-20250602140620846

三、进一步强化:启用 Fail2Ban 拉黑恶意 IP

目前,我们已经可以对恶意请求进行限速,限速可以缓解攻击,但无法彻底拦截持续扫描的恶意 IP。此时可借助 Fail2Ban 实现自动封禁。

3.1 什么是 Fail2ban ?

fail2ban 是一个非常实用的开源安全工具,主要功能是自动检测系统日志中的可疑行为(如暴力破解、恶意请求)并临时封禁攻击者的 IP 地址,从而提高服务器的安全性。

功能说明
防止 SSH 暴力破解如果某个 IP 多次尝试登录 SSH 密码失败,会被封禁。
封禁 Nginx/Web 攻击者分析访问日志,如发现频繁 403/404 请求或恶意 URL,就封禁对应 IP。
灵活可配置可自定义规则、封禁时长、阈值、监控哪些日志文件等。
自动解封支持设置封禁时间,比如封 10 分钟后自动解封。

3.2 Fail2ban工作原理(简化流程):

  1. 监控日志文件(如 /var/log/nginx/access.log/var/log/auth.log
  2. 匹配特定的行为(比如 5 分钟内失败登录 5 次、访问特定恶意路径等)
  3. 执行动作:默认是 iptables 封 IP,也可发邮件或执行你自定义的命令

四:配置 Fail2Ban 保护 Nginx

4.1 安装Fail2ban

# 更换国内镜像源(可选)
sudo sed -i 's|http://archive.ubuntu.com/ubuntu|https://mirrors.tuna.tsinghua.edu.cn/ubuntu|g' /etc/apt/sources.list
# 更新软件包索引并安装
sudo apt update
sudo apt install fail2ban -y

4.2 查看fail2ban工作状态

sudo systemctl status fail2ban

4.3 基于默认配置文件,新建本地配置文件

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

在配置文件/etc/fail2ban/jail.local末尾添加以下内容

[nginx-bad-requests]
enabled = true
port = http,https
filter = nginx-bad-requests
logpath = /var/log/nginx/access.log
maxretry = 5
findtime = 600
bantime = 3600
  • maxretry = 5:10 分钟内出现 5 次匹配就封禁
  • bantime = 3600:封禁 1 小时
  • logpath:你的 nginx 日志路径,可以根据实际调整

4.4 创建过滤器规则

sudo vim /etc/fail2ban/filter.d/nginx-bad-requests.conf

在文件中加入以下内容

[Definition]
failregex =  -.*"(GET|POST).*?(appendChild|postLinks|defer|actionURL).*HTTP.*"
ignoreregex =

4.5 重启Fail2ban

sudo systemctl restart fail2ban

查看 nginx-bad-requests 规则封禁了多少IP

sudo fail2ban-client status nginx-bad-requests

image-20250602143447680

我们拉长时间段,发现被ban的IP在逐渐增加(从19个IP增加到了33个)

image-20250602154654662

服务器的状态也回归到了正常的水平

image-20250602154840553

总结

本文借助 ChatGPT 的建议,我们快速诊断 Nginx 日志中的恶意请求;利用 Nginx 配置实现接口限速;引入 Fail2Ban 实现动态封禁了33个恶意IP,让个人服务器恢复正常。

借助 AI 和自动化工具,我们可以用更低的成本,保证服务器的安全,优秀的运维工程师,也是善用各类工具,提升服务器的稳定性,AI技术的进步,让并不专精的运维的开发者,也能快速找到合适工具,加固个人服务器,避免不必要的流量和算力浪费。

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

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

相关文章

Docker补充

Docker知识点学习。目录Docker实际应用docker 管理镜像操作容器操作Dockerfile命令学习一些Docker的图解 Docker实际应用 docker 管理 镜像操作搜索对应镜像docker serarch xxx查看现有镜像docker images docker imag…

【QNX】Socket ServerClient 源代码

1 Socket Server 源代码 服务端计划只启动一个线程,所以功能实现时使用了一些全局变量。1 int32_t skt_s_listen_fd{-1};2 pthread_t thr_server;3 struct sockaddr_un srv_addr;4 struct sockaddr_un cli_addr;5 std…

Linux环境--文件系统--动静态库

Linux环境--文件系统--动静态库2025-10-21 14:44 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !importa…

详细介绍:大模型落地的四大核心引擎:从技术突破到产业重构

详细介绍:大模型落地的四大核心引擎:从技术突破到产业重构pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Conso…

2025机电安装厂家推荐:太仓华芃专注工业设备安装,实力厂家可靠之选

2025机电安装厂家推荐:太仓华芃专注工业设备安装,实力厂家可靠之选 工业设备安装领域的技术挑战与行业现状 随着制造业向智能化、精密化方向快速发展,工业设备安装行业正面临着前所未有的技术挑战。据统计数据显示,…

EasyCVR视频汇聚平台GB28181级联异常排查:上级订阅信息无响应的根源解析

EasyCVR视频汇聚平台GB28181级联异常排查:上级订阅信息无响应的根源解析在视频监控平台的级联部署中,GB28181协议的稳定运行是保障上下级平台数据互通的核心。最近我们收到用户反馈:EasyCVR向下级平台级联时,状态显…

2025不锈钢酸洗钝化液实力厂家推荐,常州隆彦商贸环保型清洗解决方案

2025不锈钢酸洗钝化液实力厂家推荐,常州隆彦商贸环保型清洗解决方案 技术革新引领行业变革 在当前不锈钢表面处理领域,酸洗钝化工艺正面临前所未有的技术挑战。传统酸洗工艺普遍存在能耗高、污染严重、效率低下等问题…

2025 年半导体探针台厂家最新推荐榜:覆盖晶圆 / 高低温 / 射频测试领域,精选国产实力企业

引言 随着半导体产业向高精度、多场景方向快速发展,探针台作为芯片测试核心设备,其性能与服务直接影响企业研发效率与产品质量。当前市场中,探针台厂家数量繁杂,部分企业技术薄弱、服务滞后,难以适配新能源、光通…

2025 年最新烘干机生产厂家推荐榜单:覆盖多品类需求,聚焦高效节能与品质保障食品/蔬菜/滚筒/木材/药材/大型烘干机厂家推荐

引言 当前烘干机市场品类繁杂,从食品、药材到木材、工业物料等细分领域需求各异,但部分厂家技术薄弱,设备能耗高、烘干精度不足,且售后服务缺失,导致企业选购时易踩坑。同时,市场信息杂乱,缺乏权威指引,企业难…

arp 断网小实验

0-1 从零开始到实现arp 断网部署环境安装kali Linux这里选择使用kali linux 主要是因为其环境包含了大量安全渗透工具https://www.kali.org/get-kali/#kali-virtual-machines导入下载的 .vmdk 文件(正常下载得到的是z…

2025 年箱变压器厂家最新推荐榜单:涵盖非晶合金铁心、三相、矿用等多类型设备,助力采购方精准筛选优质合作企业

引言 随着电力行业向智能化、绿色化转型,箱变压器作为电力系统核心设备,市场需求不仅持续增长,对设备的专业性、适配性要求也显著提升。但当前市场中,供应商技术水平差异大,部分企业缺乏核心研发能力,产品难以满…

从“人防”到“智防”:EasyCVR+煤矿AI智能分析一体机重塑矿山安全监管模式

从“人防”到“智防”:EasyCVR+煤矿AI智能分析一体机重塑矿山安全监管模式矿业是国民经济的基础产业,为工业化和现代化提供着不可或缺的物质支撑。然而,传统矿业模式长期面临着资源禀赋恶化、安全环保压力增大、生产…

从Java工程师到AI工程师,我花了6个月的转型经验分享

刚刷到一则招聘信息:字节跳动30%后端岗位要求大模型开发能力[据程序员如何转行到ai大模型领域],而我去年正是从Java开发转型到这个风口。 为什么值得一试?薪资真的很香 作为典型的技术型选择障碍,我先对比过各种转…

2025 年最新推荐配电柜源头厂家口碑排行榜:聚焦高压智能防爆等多类型产品,精选实力品牌助企业采购高压/智能/抽屉式/照明/防爆配电柜厂家推荐

引言 当前电力系统在工业生产与城市建设中的作用愈发关键,配电柜作为核心控制设备,其品质直接影响电力网络安全稳定运行。但市场上配电柜厂家数量众多,产品质量参差不齐,部分厂家缺乏核心技术,生产的产品存在安全…

使用matlab进行牛顿迭代求函数极值的手段

使用matlab进行牛顿迭代求函数极值的手段pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "M…

2025年超声波检测设备厂家权威推荐榜:相控阵/高频/水浸/钎焊/液冷板检测系统与设备精选指南

2025年超声波检测设备厂家权威推荐榜:相控阵/高频/水浸/钎焊/液冷板检测系统与设备精选指南 行业技术背景与发展趋势 超声波检测技术作为现代工业无损检测的核心手段,正经历着从基础脉冲回波向智能化、自动化方向的深…

完整教程:这个叫DOCX-MCP的开源项目,解决了AI操作Word的一个大麻烦

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

完整教程:第五章:原型模式 - 克隆大法的大师

完整教程:第五章:原型模式 - 克隆大法的大师pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &q…

XMLType 测试记录

XMLType 测试记录Posted on 2025-10-21 14:33 大势趋007 阅读(0) 评论(0) 收藏 举报XMLType 学习测试-- 创建表 CREATE TABLE employee_xml (emp_id NUMBER PRIMARY KEY,emp_data XMLType );-- 插入数据 INSERT I…