< 自用文 主机 USC 记录:> 发现正在被攻击 后的自救

环境:

一台 VPS,之前文章推荐过 $1/月


OS: Ubuntu
内存:961MB
CPU: 1CORE
上面都是学习 Python 时写的应用,这些应用在 CSDN 都有原码,只是时间久了,自用的有修复bugs,还有些功能升级。 以前是运行在家里的 NAS 上,现在移到了 Internet,事儿就来了。

当前运行的应用:

  1. 当收藏夹用的 Portal
  2. 看正经与“正经”新闻的两个花钱订阅的报刊新闻组:(不能写名字,不然文章发不出来,一个名字里有“华尔街”,另一个含“经济”+人)
  3. 用浏览器修切图片的应用
  4. 过滤几个电报X新闻组,取出精华看财经新闻用的。 
  5. 以上是 WEB 应用
  6. 还有 nginx fail2ban ufw 另外两带V不能提名字,你知道的。
  7. Claude Code, GeminiCLI 这上面都可以跑,就是慢点,用得很少。
  8. 用了 GITHUB 项目,可以从浏览器使用 Claude Code,是那这台用的,虽然没运行 Claude Code,但 Nginx  site 还在。
  9. 解释:6 中提到的 nginx, 它来支持 web 访问与后面的应用连接,这里用 nignx + SSL + Python/V 一起做“网站”。

现象:

  • 用 SSH 工具连接 VPS 等了十几秒,以为主机挂
  • V 工具反应很慢
  • SSH 登录后,敲字母,比叫猫过来还慢。
  • 使用 top 命令 那个 v开头的进程,CPU 使用率在60%-93%

解决过程:

1 看 top 输出发呆

看着可用内存 < 60MB... 好在是有加 swap。下面是已经加入过滤运行超过半小时后的截屏:

那时 CPU 内存占用已经降下来一些。

看了看 v 的日志:

没有不正常使用的记录。

2 思考与瞎猜

个人认为那个 v 不是根源。回到文章开头在: “当前运行的应用” 中,有提 v 前面是 NGINX。应该是它的原因。 按这个思路去?找问题

3 过程

1)停止不必须的服务

到 /var/log/nginx 扫了一眼日志,一时想不起来 claude.后缀是干什么的

先删除 / 停止 claude+后缀的 Nginx 网站: rm -fr / &

rm -rf /etc/nginx/sites-enabled/claude.*

这几个还在用:

2)分析 nginx  可网站的日志

tail -f 看几个文件时,就知道是 多个 IPs ,后来查了一下来自不同国家的主机在扫这台主机。看来是组织的群体扫描,如下图这样的。  从日志文件中找了几个 IP ,中国 俄 北美的 南美的

运行之前写的 fail2ban 使用的脚本,看看 fail2ban 运行正常,没有关住的。

运行 ufw status 看看,只有 SSH filter 抓了很,nginx 没货。 下面是写的脚本输出:

绝大部分是 ssh filter 抓到的。 

3)两种方式:在 nginx 上过滤, 在 fail2ban 加过滤

Nginx 设置过滤

缺点不能 Ban IP 小遗憾, 下面是用来防止爬虫的设置,不要全抄,要依据自己的环境修改再用。

    # Logging Settingsaccess_log /var/log/nginx/usc.daven.us.access.log combined buffer=64k flush=5m;error_log /var/log/nginx/usc.daven.us.error.log warn;# Block malicious User-Agents  (updated to allow legitimate API clients)if ($http_user_agent ~* (sqlmap|nikto|masscan|nmap|gobuster|dirbuster|scanner)){return 403;}# Block malicious request methodsif ($request_method !~ ^(GET|HEAD|POST|PUT|PATCH|DELETE|OPTIONS)$ ) {return 405;}# Block common attack pathslocation ~ ^/(admin|phpinfo|phpmyadmin|wp-admin|wp-login|mysql|solr|geoserver|jasperserver|owncloud|partymgr|zabbix|aspera|telerik)(?:/.*)?$ {deny all;return 404;}# Block sensitive files and directorieslocation ~ /\.(env|git|docker|aws|svn|bzr|hg) {deny all;return 404;}location ~ \.(sql|log|ini|conf|bak|old|tmp|backup)$ {deny all;return 404;}# Block scanning of specific extensionslocation ~ \.(jsp|do|cgi|exp|asp|aspx|cfm|pl)$ {deny all;return 404;}# Block directory traversal attemptslocation ~ \.\./.*$ {deny all;return 404;}# Block V2Ray configuration files and sensitive pathslocation ~ ^/(config\.json|v2ray|vmess|trojan|shadowsocks|xray|vless)(?:/.*)?$ {deny all;return 404;}# Block direct port probinglocation ~ ^/:[0-9]+/ {deny all;return 404;}# Block common RCE payloadslocation ~* "(\x09hink|\x07pp|shell_exec|wget)" {return 403;}# Block common malicious paths that aren't already explicitly deniedlocation ~* \.(php|cgi|asp|aspx|jsp|do)$ {return 404;}# Block common scanner User-Agentsif ($http_user_agent ~* (sqlmap|nikto|masscan|nmap|gobuster|dirbuster|scanner|zgrab|nokia.com/genomecrawler)) {return 403;}# Forbid access to hidden fileslocation ~ /\. {deny all;access_log off;log_not_found off;}

fail2ban 过滤

nginx-attack.conf:

[Definition]
allowipv6 = auto
failregex = ^<HOST> -.*"GET .*(.env|.git|.well-known/security\.txt|\/phpmyadmin|\/wp-login\.php|\/wp-admin|\/cgi-bin|\/phpinfo|\.sql|\.log|\.ini|\.conf|\.bak).* HTTP.*" (40[0-4]|444|499|500)^<HOST> -.*"GET .*(?:\x09hink|\x09pp).*shell_exec.*wget.*" 400.*
ignoreregex =

nginx-web-attacks.conf

[Definition]
allowipv6 = auto
failregex = ^<HOST> -.*"GET .*(?:\.env|\.git|\.well-known/security\.txt|\/phpmyadmin|\/wp-admin|\/cgi-bin|\/webui|\/geoserver|\/remote/login|onvif|PSIA|boaform|owa/auth/logon\.aspx|PROPFIND|\+CSCOE\+).*HTTP.*" (40[0-4]|444|499|500)^<HOST> -.*"GET .*(?:\x09hink|\x07pp).*shell_exec.*wget.*" 400.*^<HOST> -.*"POST .*cgi-bin/(\.\./).*bin/sh HTTP.*" (400|404|301|302)^<HOST> -.*"GET .*HTTP.*" (40[0-4]|444|499).*"(?:zgrab|CMS-Checker|libredtail-http|WanScannerBot|Odin|GenomeCrawlerd)"
ignoreregex =

添加到 jail.local 里,让过滤器生效

[nginx-attack]
enabled = true
port    = http,https
filter  = nginx-attack
logpath = /var/log/nginx/access.log
maxretry = 3
bantime = -1
findtime = 60
action = ufw[name=nginx-attacks, port="http,https", protocol=tcp][nginx-web-attacks]
enabled = true
port    = http,https
filter  = nginx-web-attacks
logpath = /var/log/nginx/*.daven.us.access.log
maxretry = 12
bantime = -1
findtime = 600
action = ufw[name=nginx-web-attacks, port="http,https", protocol=tcp]

4) 等待

重启 fail2ban 加载新的 filter, 重启 nginx 应用新的 filter, 整个过程没有太时间停服务。

fail2ban 开始运行 + ufw 一起工作是缓慢,毕竟有些 I/O 堵在哪儿。

去吃了个饭,看着系统内存 CPU 在释放, v从最忙到消失,fail2ban ufw 是在头部是好事,大概 2 个小时后:

CPU 从90%+使用率,降到 10% 以下。

刚看到另一个日志文件中有记录,加了新 fail2ban filter,重启 fail2ban, UFW 又转起来。

网上看 93 阅兵,再次致敬二战中的中国军队。

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

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

相关文章

硬件开发1-51单片机2-按键、中断

一、GPIO&#xff08;General Purpose Input/Output&#xff09;GPIO 是 51 单片机和外界交互最基本的方式。工作模式&#xff1a;输出模式&#xff1a;单片机给定引脚一个电平&#xff08;高电平 (5V)、低电平 (0V)&#xff09;&#xff0c;通过控制引脚实现高低电平输出。输入…

什么是Token?——理解自然语言处理中的基本单位

在日常生活中&#xff0c;我们使用手机语音助手、自动翻译软件和聊天机器人等智能工具&#xff0c;而这些技术背后都离不开对语言的精细处理。今天&#xff0c;我们就来聊聊“token”这一看似专业的术语&#xff0c;了解它在自然语言处理&#xff08;NLP&#xff09;中的重要作…

线程通信机制

目录 一、主线程与子线程基础通信 1.1 主线程向子线程传递数据 二、子线程向主线程返回数据 2.1 通过共享变量方式 2.2 同步块中使用wait/notify机制 2.3 Lock和Condition实现线程通信机制 一、主线程与子线程基础通信 1.1 主线程向子线程传递数据 通过构造函数传递参数…

硬盘 (FOREIGN) Slot:Unconfigured Bad

IBM 服务器硬盘故障&#xff0c;在webbios里看到有显示&#xff08;Foreign&#xff09;Slot:xxxx, Unconfigured Bad的硬盘&#xff0c;选中该硬盘进入属性页面在属性列表中找到“Media Error”和“Pred Fail Count”两项&#xff08;如果找不到请点击【Next】翻页&#xff09…

Vite 环境变量与全局变量详解

目录 一、什么是环境变量&#xff1f; 二、Vite 的环境变量机制 1. .env 文件 2. 定义环境变量 3. 使用环境变量 4. 内置环境变量 三、Vite 中的全局变量 1. 使用 define 配置 2. 使用 TypeScript 声明 四、环境变量 vs 全局变量 五、常见问题与坑点 1. 为什么必须…

华为S5720交换机配置教程:开启Web管理功能

华为S5720交换机Web登录配置指南 华为S5720系列交换机支持通过Web界面进行管理&#xff0c;这是一种图形化的操作方式&#xff0c;比命令行更直观易用。以下是配置S5720交换机开启Web登录的详细步骤。 一、准备工作 连接设备&#xff1a;使用Console线连接交换机的Console…

插入排序及希尔排序

插入排序是一种十分简单有效的排序算法&#xff0c;其基本思想就是将每一个待排序的数据按照关键字大小插入前边已经排好序的子序列之中。 文章目录最基本的插入排序折半插入排序希尔排序 最基本的插入排序 插入排序的基本思想如图可以看出&#xff0c;不断选中数组中的元素&am…

码农必备!本地调试神器act,GitHub Actions最佳拍档

引言 在现代软件开发实践中&#xff0c;持续集成和持续部署(CI/CD)已成为不可或缺的环节。GitHub Actions 作为 GitHub 官方提供的 CI/CD 解决方案&#xff0c;凭借其与代码仓库的深度集成和丰富的生态系统&#xff0c;获得了广大开发者的青睐。然而&#xff0c;每次修改 CI/C…

大模型本地部署与API服务教程

大模型本地部署与API服务教程 目标&#xff1a;在Ubuntu服务器部署本地大模型&#xff0c;并提供API服务&#xff0c;支持局域网下的Windows客户端调用。 支持两种部署方式&#xff1a;① 自建FastAPI服务&#xff08;高定制&#xff09; ② 使用Ollama&#xff08;极简快速&am…

亚马逊美加站点物流新规解读:库存处理逻辑重构与卖家应对策略

2025年9月&#xff0c;亚马逊美国与加拿大站点即将实施物流计划强制调整&#xff0c;批量清货与捐赠计划的规则迭代&#xff0c;标志着平台对库存生命周期管理的重视程度提升&#xff0c;此次新规以“可持续发展”为核心导向&#xff0c;通过强制与默认参与的双重机制&#xff…

SpringBoot Web 入门指南:从零搭建第一个SpringBoot程序

SpringBoot Web 入门指南&#xff1a;从零搭建第一个SpringBoot程序SpringBoot Web 入门指南&#xff1a;从零搭建第一个SpringBoot程序一、Web开发基础&#xff1a;静态/动态资源与B/S、C/S架构解析​资源类型系统架构二、Spring 与 Spring Boot 核心介绍1. Spring 框架2. Spr…

从图灵完备性到现实差距:为什么你的设备和你本人都潜力无限,却表现各异?

理论上的无限潜力&#xff0c;为何被困在现实的牢笼中&#xff1f;一、引言&#xff1a;一个反直觉的概念 在计算机科学中&#xff0c;图灵完备性&#xff08;Turing Completeness&#xff09; 是衡量一个系统计算能力的黄金标准。它得名于计算机科学之父艾伦图灵&#xff08;A…

Android系统打通HAL层到应用层 --- Framework框架搭建

本文是接续上文&#xff0c;针对于HAL层的接口封装Framework层的接口 HAL层框架搭建&#xff1a;https://blog.csdn.net/m0_50408097/article/details/151148637?spm1001.2014.3001.5502 在 Android 系统架构中&#xff0c;Framework 层&#xff08;框架层&#xff09; 位于 H…

LwIP入门实战 — 2 LwIP概述

目录 2.1 LwIP简介 2.2 LwIP文件架构分析 2.2.1 LwIP软件架构 2.2.2 主要模块划分 2.3 IPC通讯机制 2.4 LwIP的3种编程接口 2.4.1 RAW/Callback API 2.4.2 Netconn API 2.1 LwIP简介 LWIP&#xff08;Light Weight Internet Protocol&#xff0c;轻型网络协议栈&#…

微信小程序-day3

页面导航跳转声明式导航注意&#xff1a;url开头要有/1. 导航到 tabBar 页面2. 导航到非 tabBar 页面3. 后退导航编程式导航跳转传参参数可以在onLoad里用option获取下拉刷新事件可在onPullDownRefresh中定义下拉事件对应操作在其中加入这个函数wx.stopPullDownRefresh()&#…

关于ES中文分词器analysis-ik快速安装

ES中文分词器插件 安装快速安装手动安装 应用ik_max_word 与 ik_smart 的区别验证是否生效 官方地址&#xff1a;https://github.com/infinilabs/analysis-ik 安装 快速安装 插件安装&#xff08;将链接最后的版本号换成当前ES版本号&#xff09;&#xff1a; bin/elastics…

STM32G4 电流环闭环

目录一、STM32G4 电流环闭环1 电流环闭环PID控制2 电流环闭环建模附学习参考网址欢迎大家有问题评论交流 (* ^ ω ^)一、STM32G4 电流环闭环 1 电流环闭环 电流环框图 PID控制 时域和拉普拉斯域的传递函数 PID&#xff1a; P比例部分&#xff0c;I积分部分&#xff0c;D微分…

利用 Java 爬虫获取淘宝商品详情 API 接口

本文将详细介绍如何使用 Java 编写爬虫程序&#xff0c;通过淘宝开放平台的高级版 API 接口获取商品的详细信息。一、淘宝商品详情 API 接口概述淘宝开放平台提供了多个 API 接口用于获取商品的详细信息&#xff0c;其中 taobao.item.get 和 taobao.item.get_pro 是常用的接口。…

idea上传本地项目代码到Gitee仓库教程

前言&#xff1a;本地一个项目代码上传到Gitee仓库1.登录Gitee官网新建仓库&#xff08;命名跟项目同名&#xff09;2.idea添加Gitee插件&#xff08;需要Restart&#xff09;3.idea配置已安装git的路径4.idea添加Gitee账户5.给项目创建Git本地仓库Git仓库创建成功&#xff0c;…

往届生还有机会进入计算机这个行业吗?还能找见好工作吗

前言 最近有很多的往届生来咨询我&#xff0c;问我还能找见工作吗&#xff0c;还能进入这一行吗&#xff08;大多数都是一些24届&#xff0c;考研失败的同学&#xff09; 针对目前这种情况&#xff0c;还能不能进&#xff0c;只能说很难&#xff0c;非常难。 在这里&#xff0c…