当前位置: 首页 > news >正文

Linux日志分析入门:使用grep和awk发现服务器异常访问

更多云服务器知识,尽在hostol.com

你的Linux服务器,就像一座24小时不眠不休的、庞大而又复杂的“数字都市”。在这座城市里,每一秒钟,都有成千上万件事情在发生:访客(用户请求)从四面八方涌入,居民(系统进程)在各自的岗位上忙碌,货物(数据)在不同的区域间穿梭……

而这座城市里,也隐藏着无数的“秘密”和“罪案”。可能是一个“小偷”(黑客)正在挨家挨户地尝试撬锁;可能是一条关键的“主干道”(核心服务)因为一次“交通事故”(程序Bug)而陷入瘫堵;也可能是一群“破坏分子”(恶意爬虫),正在疯狂地消耗着城市的“公共资源”。

作为这座城市的“警长”(服务器管理员),你该如何洞察这一切?

答案,就藏在那份最不起眼,却也最诚实的“城市监控录像”里——服务器日志

这些日志文件,就像是安装在城市每一个角落的“监控探头”,它们用最朴素的、一行行的文本,忠实地记录下了发生过的一切。但问题是,这些“录像带”实在是太多、太长了,一天就能产生几十万、上百万行的记录。想用肉眼从这片“数据汪洋”里,找到一条有用的线索,简直是大海捞针。

别担心。每一个经验丰富的“老侦探”,都有两件从不离身的“吃饭家伙”。一个,是能瞬间从一堆杂物中,找出关键证物的**“高倍放大镜” (grep);另一个,是能对证物进行精准切割、分类、统计的“法医解剖刀” (awk)**。

今天,这篇“侦探入门指南”,就是要教会你,如何娴熟地运用这两件“上古神器”,让你也拥有一双能看透数据迷雾、直抵问题核心的“火眼金睛”。


第一章:“案发现场”在哪里?—— 认识你的“监控录像带”

在开始“查案”之前,你得先知道去哪里调取“监控录像”。在Linux这座“城市”里,最重要的几个“监控中心”,都位于/var/log这个目录下。

  • /var/log/auth.log (或在CentOS/RHEL上叫 secure)

    • 这是“大厦的门禁刷卡记录”。 任何试图登录你服务器的行为——无论是通过SSH、还是sudo切换用户,无论是成功还是失败——都会在这里,被一五一十地记录下来。这是我们排查“非法入侵”案件的首要证物

  • /var/log/nginx/access.log (或 apache2/access.log)

    • 这是你“店铺的迎宾日志”。 每一个访问你网站的HTTP请求,它的来源IP、访问时间、想看的页面、浏览器信息……所有细节,都会被记录在这里。这是我们分析网站流量、排查应用层攻击的“金矿”。

  • /var/log/syslog (或 messages)

    • 这是“城市的公共广播记录”。 系统内核、各种后台服务,在它们运行时发生的各种“碎碎念”,都会被记录在这里。虽然信息繁杂,但有时,系统崩溃前的最后一声“呻吟”,就藏在这里面。

第二章:“高倍放大镜”的艺术 —— 掌握 grep

grep,是你在日志海洋中,进行“关键词搜索”的最强武器。

  • 比喻: 它就像是搜索引擎里的“谷歌”,你给它一个关键词,它能在一秒钟内,把包含了这个关键词的所有“网页”(日志行),都给你捞出来。

侦查技巧一:大海捞针,精准定位

我们的第一个“案件”:“调查谁在暴力破解我的SSH密码?”

grep "Failed password" /var/log/auth.log

这句命令,就像你对你的“证据管理员”说:“去auth.log这份几万页的笔录里,把所有提到了‘密码错误’的句子,都给我找出来!” 瞬间,所有失败的登录尝试,都会被清晰地列在你的眼前。

侦查技巧二:排除干扰,反向查找 (-v)

假设你的访问日志里,充满了Google和Bing的爬虫记录,这些是“好人”,但它们太多了,干扰了你分析真实用户的行为。

grep -v "Googlebot" access.log | grep -v "Bingbot"

-v参数,是grep的“反转”开关。这句命令的意思是:“先把所有包含‘Googlebot’的行,都给我扔掉!然后在剩下的结果里,再把所有包含‘Bingbot’的行,也给我扔掉!” 剩下的,就是更纯粹的、来自真实用户或其他“未知生物”的访问记录了。

侦查技巧三:追根溯源,查看上下文 (-C)

你发现了一条可疑的错误日志,但你还想看看,在它发生前、后,系统还说了些什么,以便更好地理解“案情”。

grep "Error message" syslog -C 5

-C 5参数,是Context的意思。它不仅会显示那条匹配到的“错误”行,还会把它前后的5行,都一并展示给你。这对于理解错误的“前因后果”,极其有用。

第三章:“法医解剖刀”的精妙 —— 掌握 awk

如果说grep是帮你“找到”证物,那么awk,就是帮你“解剖”和“分析”证物的。

  • 比喻: awk是一位技艺精湛的“法医”。他能把一行看起来乱七八糟的日志(一具完整的尸体),按照固定的“关节”(分隔符,默认为空格),精准地切割成一个个独立的“器官”(字段),然后,你就可以对这些“器官”,进行单独的分析和统计。

awk的世界里,每一行的第一个“器官”(字段),叫$1,第二个叫$2,以此类推。

分析报告一:“列出今天来我店里的所有客人的IP地址”

Nginx的访问日志里,IP地址,通常是每一行的第一个字段。

awk '{print $1}' /var/log/nginx/access.log

这句命令,就像你对“法医”说:“把这份日志里的每一行,都给我切开,然后,只把第一个字段(IP地址),打印出来给我看。”

分析报告二:“给这些客人排个名,看看谁是来的最勤的‘铁粉’(或者‘骚扰者’)”

光有IP列表还不够,我们想统计每个IP都来了多少次。这时候,就需要一套“组合拳”了。这套“组合拳”,是每一个Linux管理员都必须刻在DNA里的“武林秘籍”:

awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -n 10

这串看似复杂的“咒语”,请允许我为你“翻译”一下,它就像一条优雅的“流水线”:

  1. awk '{print $1}' access.log: “法医”awk,先把所有日志里的IP地址,都提取出来,扔到传送带上。

  2. | sort: “分拣工”sort,把这些杂乱的IP地址,进行排序,让相同的IP都排在一起。

  3. | uniq -c: “计数员”uniq -c,对这些排好序的IP进行扫描,统计每一个IP连续出现了多少次,并在前面加上次数。

  4. | sort -nr: “排名官”sort -nr,按照前面的“出现次数”,从高到低,进行最终的排名。

  5. | head -n 10: “秘书”head -n 10,只把排名最高的前10个结果,呈报给你。

执行完这句命令,一份“今日访客TOP 10排行榜”,就完美地生成了!

分析报告三:“找出所有试图访问不存在页面的‘迷路者’ (404错误)”

awk '$9 == "404" {print $1, $7}' access.log

这展示了awk更强大的“编程”能力。它的意思是:“法医awk,请检查每一行。如果(if)第九个字段(状态码)等于404那么(then),就把第一个字段(IP地址)和第七个字段(访问的URL),打印出来。” 这样,你就能清晰地看到,是哪些人,在访问哪些不存在的页面。

第四章:“联合作战”—— grepawk 的天作之合

当“放大镜”和“解剖刀”联手时,我们就能进行更复杂的“专案调查”了。

“专案”:揪出那些正在暴力破解我WordPress后台的IP,并按攻击次数排名!

grep "POST /wp-login.php" access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -n 10

“案情”分析:

  1. 我们先用“放大镜”grep,从海量的访问日志中,把所有“犯罪特征”符合“尝试向wp-login.php页面提交数据(POST请求)”的记录,全部筛选出来。

  2. 然后,再把这些“高度嫌疑”的记录,交给awk和它的“流水线”伙伴们,去进行精准的“身份识别”(提取IP)和“作案次数统计”。

看到了吗?通过grep的“粗筛”和awk的“精加工”,我们像一个真正的“数据分析师”一样,从数百万行日志中,提炼出了最有价值的情报。


现在,你已经掌握了这两件“神兵利器”的基本用法。但请记住,工具,只是你思想的延伸。

日志分析,在技术层面,是grepawk的组合。但在哲学层面,它是一种**“好奇心”“怀疑精神”**。它要求你像一个真正的侦探一样,对任何“不正常”的数据,都保持警惕,并顺着线索,刨根问底。

当你发现一个可疑的IP时,下一步,就是去网上查查这个IP的“底细”,然后,用sudo ufw deny from ...把它送进“监狱”。当你发现大量的404错误时,下一步,就是去检查你的网站,是不是存在错误的链接。

日志,是你的服务器,写给你的一封最朴素、也最真诚的“信”。学会阅读它,你就能听到你的服务器的“心声”,感知它的“健康”,并提前预知那些潜伏在阴影中的“危险”。

现在,就去打开你的“监控录像”,开始你的第一次“探案”吧。

http://www.dtcms.com/a/414871.html

相关文章:

  • 435. 无重叠区间
  • 2025制造业研发流程提效指南:从审批卡顿到协同闭环,3类系统选型全解析
  • 文件夹随机分配 把文件夹随机分配到指定的文件夹中
  • 104.二叉树的最大深度(二叉树算法题)
  • 宿迁做网站的怎样制作h5
  • 电子商务网站建设结业论文seo教程seo官网优化详细方法
  • 使用 Three.js 和本地 Draco Loader 高效加载压缩 GLB 模型
  • Nginx-Proxy-Manager配置SSL泛域名证书教程
  • 图的遍历:从深度优先到广度优先
  • Java数据结构:ArrayList与顺序表1
  • C语言实战项目:贪吃蛇(1)
  • 鸿蒙应用开发之ArkTs集成AI大模型与Markdown流式渲染教程(API 20)
  • 网站建设服务器环境配置关于网站开发的网店计划书范文
  • LeetCode-hot100——将有序数组转换为二叉搜索树
  • 网站速度对seo的影响修改wordpress登录背景图片
  • Kimi 灰度测试 OK Computer,AI 从 “问答” 迈入 “执行” 新阶段​
  • 什么是 mmap?
  • 民宿客用网络升级方案:从传统到现代化的跃迁
  • 湖南省住房和城乡建设厅老网站做网站分为竞价和优化
  • 品牌创意网站建设韩国手机网站模板
  • 力扣3679. 使库存平衡的最少丢弃次数
  • LeetCode:75.前K个高频元素
  • MySQL 基础指令全解析:从入门到熟练操作
  • 南华 NHZ-03/10/13 型滚筒反力式制动检验台:传统制动检测的核心设备
  • 企业网站开发注册网站开发目录结构
  • 做网站哪个公司好 快选宁陵建站宝互联网行业简介
  • cloudfared 内网穿透通过docker方式遇到的问题
  • 利用汇出与汇入函式协助自动化程式开发
  • iis网站域名访问辽宁工程招标网信息平台
  • 网站开发模板系统myphoto wordpress 国外