Linux日志审计入门教程:教你看懂auth.log与nginx.log

Linux日志审计入门教程:教你看懂auth.log与nginx.log

在服务器的世界里,如果你只看那些光鲜亮丽的Web界面和跳动的监控图表,那你看到的,只是“甲板”上的风景。而真正决定这艘“巨轮”命运的、那些最核心、最原始、也最真实的“航行日志”,都静静地躺在/var/log这个“船长室”的角落里,等待着被解读。

它们,就是我们今天要去解密的“天书”——Linux日志文件。特别是其中最重要的两本:《auth.log》和《nginx.log》。


Linux服务器日志审计入门:如何看懂auth.log和nginx.log里的“天书”?

你是否曾经有过这样的感觉?服务器出了问题,所有人都告诉你:“去看看日志”。

于是,你满怀希望地,用catless命令,打开了那些日志文件。然后,你的屏幕,瞬间被成千上万行、密密麻麻、仿佛来自外星文明的神秘字符所淹没。

你的热情,瞬间被浇灭。你感觉自己不像一个管理员,更像一个面对着甲骨文的文盲。

别怕。这种感觉,我们都经历过。日志之所以看起来像“天书”,只是因为你还没有拿到那本“密码本”。今天,我就把这本密码本,交到你的手里。你将学会,如何从这片字符的海洋中,精准地、优雅地,钓出那条决定性的“大鱼”。

第一章:“城堡”的门禁记录 —— 解读《auth.log

auth.log(在CentOS/RHEL上通常叫secure),是你的服务器最忠实的“门卫”写下的工作日记。它记录了所有关于“谁,在什么时候,试图以什么方式,进入你的城堡”的详细信息。

这是你进行安全审计的、最重要的信息来源。

  • 在哪里找到它? less /var/log/auth.log
  • “门卫日记”的解剖学: 我们来看一条最典型的、成功的SSH密钥登录记录:Aug 27 10:30:01 my-server sshd[12345]: Accepted publickey for myadmin from 123.45.67.89 port 54321 ssh2: RSA SHA256:xxxxxxxx我们来给它做一次“法医解剖”:
    • Aug 27 10:30:01: 案发时间,精确到秒。
    • my-server: 案发地点(你的服务器主机名)。
    • sshd[12345]: 记录员sshd服务)和他的工号(进程ID)。
    • Accepted publickey: 事件性质——“接受了一个公钥”,这是一次成功的密钥登录。
    • for myadmin: 当事人——myadmin这个用户。
    • from 123.45.67.89 port 54321: 来源——来自IP地址123.45.67.89,对方的出门端口是54321
    现在,我们再来看一条更危险的、失败的密码登录记录:Aug 27 10:35:10 my-server sshd[12388]: Failed password for invalid user guest from 98.76.54.32 port 12345 ssh2
    • Failed password: 事件性质——“密码错误”。
    • for invalid user guest: 当事人——一个不存在的、非法的用户guest
  • 作为“侦探”,你应该在这本日记里,重点寻找哪些“线索”?
    1. 线索一:寻找“疯狂的敲门声”——排查暴力破解 如果你在这本日志里,看到成百上千条来自不同IP的、针对root或其他用户的Failed password记录,那么恭喜你,你的服务器,正在被一个自动化的“破解工具”进行“地毯式”的密码爆破。 你的行动: 这时,你就应该立刻请出我们之前介绍过的Fail2ban这位“智能保安”,来自动封禁这些IP。
    2. 线索二:寻找“内部的越权操作”——审计sudo行为 当你用sudo命令,临时切换到root权限时,auth.log也会记录下这庄严的一刻。 Aug 27 11:00:00 my-server sudo: myadmin : TTY=pts/0 ; PWD=/home/myadmin ; USER=root ; COMMAND=/bin/bash 这条记录,清晰地告诉你:myadmin这个用户,在/home/myadmin目录下,以root的身份,执行了/bin/bash命令。 你的行动: 定期审查sudo的日志,是你作为管理员,确保“权力没有被滥用”的重要手段。

第二章:“餐厅”的迎宾台账 —— 解读《nginx.log

如果说auth.log是后台森严的“门禁记录”,那么Nginx的日志,就是前台热闹的“迎宾台账”。它分为两本:access.log(访客登记表)和error.log(意外事件报告)。

  • 在哪里找到它们? cd /var/log/nginx/

第一本台账:《access.log》—— 谁、在何时、看了什么?

这本台账,记录了每一次成功抵达你网站的“访客”信息。

  • “访客登记信息”的解剖学: 我们来看一条最标准的记录:11.22.33.44 - - [27/Aug/2025:12:00:00 +0800] "GET /posts/hello-world HTTP/1.1" 200 5678 "https://www.google.com/" "Mozilla/5.0 ..."我们来逐项“翻译”:
    • 11.22.33.44: 访客的IP地址
    • [27/Aug/2025:...]: 到访时间
    • "GET /posts/hello-world HTTP/1.1": 访客的“需求”。他用GET方法,请求了/posts/hello-world这个页面。
    • 200: 服务结果(状态码)200代表“服务成功”!如果是404,则代表“您要找的页面不存在”。
    • 5678: “外卖”的大小。本次请求,服务器一共向他发送了5678字节(Bytes)的数据。
    • "https://www.google.com/": 访客从哪里来? 这个叫Referer,告诉我们,这位访客,是从谷歌的搜索结果页,点击链接过来的。
    • "Mozilla/5.0 ...": 访客的“交通工具”。这个叫User-Agent,告诉我们,他用的是什么浏览器、什么操作系统。如果这里出现GooglebotBaiduspider,那就说明,“搜索引擎的星探(爬虫)”来视察了。
  • 作为“餐厅经理”,你应该在这本台账里,关注什么?
    1. 发现“不速之客”: 你可以用我们之前学的grepawk组合,去统计哪些IP的访问次数最多。如果某个IP,在短时间内,疯狂地请求你网站上各种不存在的页面(产生大量404),那它很可能是在用工具,扫描你网站的漏洞。
    2. 分析“热门菜品”: 统计哪些页面的访问量最高,可以帮你了解用户的喜好。
    3. 了解“客源渠道”: 分析Referer,能让你知道,你的流量,主要是来自搜索引擎,还是来自其他网站的推荐链接。

第二本台账:《error.log》—— 后厨的“事故报告”

这本台账,平时可能空空如也。但一旦你的网站出现500, 502, 504这类“服务器内部错误”时,它,就是你排查问题的“唯一希望”

  • “事故报告”的解剖学:2025/09/02 10:45:00 [error] 54321#54321: *123 connect() failed (111: Connection refused) while connecting to upstream, client: 11.22.33.44, server: yourdomain.com, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8080/"解读这份报告:
    • 2025/09/02 10:45:00: 事故时间
    • [error]: 事故等级——“错误”。
    • connect() failed (111: Connection refused) while connecting to upstream: 这是最核心的“事故原因描述”! 它在说:“我(Nginx)在尝试连接上游服务(upstream,也就是你后台的PHP或Node.js应用)时,连接被拒绝了!
    • 翻译成人话就是: “前台(Nginx)下了个单,结果发现后厨(后端应用)关门了或者电话打不通!”
    • 这条日志,立刻就能让你把排查的重点,从Nginx本身,转移到你后端的应用服务上。是不是php-fpm进程死掉了?是不是应用监听的端口搞错了?

你,已是能听懂服务器“心声”的人

所以,日志,不再是让你望而生畏的“天书”了。

它,是你服务器的“黑匣子”,是你网站历史的“独家记忆”,是你面对一切未知错误时,最可靠、最不会说谎的“第一目击证人”。

当你学会了如何去倾听它的“低语”,如何去解读它那些看似杂乱、实则充满逻辑的“密码”时,你,就不再是一个只能被动接受结果的“管理员”。

你成了一位能回溯时间、洞察因果、并从每一次微小的错误中,汲取智慧的“数字历史学家”和“首席故障调查官”。

知识库

iptables与firewalld使用教程:Linux防火墙进阶配置指南

2025-9-1 10:22:17

知识库

服务器压力测试教程:使用wrk与JMeter评估网站性能极限

2025-9-3 9:25:37

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧