首页 > 系统相关 >linux检索日志文件技巧

linux检索日志文件技巧

时间:2023-12-08 16:44:55浏览次数:34  
标签:检索 10 15 25 linux 537.36 2023 日志 com

linux检索日志文件技巧

日志文件格式

[2023/10/25:16:17:14] 10.10.140.96 storage.live.com:443 GET / 400 630 "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"
Position位置 名称 示例
1 时间戳 [2023/10/25:16:17:14]
2 源ip 10.10.140.9
3 域名和端口 storage.live.com:443
4 请求方法 GET
5 HTTP URI /
6 状态码 400
7 响应大小 630
8 用户代理 "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"

命令

cat

查看文件命令

cat xxx.log
[2023/10/25:15:42:02] 10.10.120.75 sway.com:443 CONNECT - 200 0 "-"
[2023/10/25:15:42:02] 10.10.120.75 sway.com:443 GET / 301 492 "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"
--- REDACTED FOR BREVITY ---

您可能对代理日志的内容感到不知所措。这是因为 cat 命令会转储所有内容,并且仅在渲染完文件末尾后才停止。但别担心,我们将在以下部分中学习更多优化命令输出的技巧。

less

一次一页的查看文件的内容

less xxx.log

使用 less 打开文件后,按 Up/Down 按钮一次移动一行,按 Page Up (b)/Page Down (space) 按钮一次移动一页。然后,您可以通过按 q 按钮退出视图。

head命令可以让你查看文件顶部的内容,默认显示前10条内容,如果指定显示需要使用-n选项和行数。

head -n 1 xxx.log
[2023/10/25:15:42:02] 10.10.120.75 sway.com:443 CONNECT - 200 0 "-"

tail

类似于head命令,只是它默认显示文件最后10条内容,如果指定显示需要使用-n选项和行数。

tail -n 1 xxx.log
[2023/10/25:16:17:14] 10.10.140.96 storage.live.com:443 GET / 400       630 "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36       (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"

wc

wc 命令代表字数统计。它是一个命令行工具,可以计算文本文件中的行数、单词数和字符数。

对于日志文件,我们主要使用-l命令查看行数

wc -l xxx.log
49881 xxx.log

nl

nl 命令代表数轴。它以编号行格式呈现文件的内容。

nl xxx.log
     1	[2023/10/25:15:42:02] 10.10.120.75 sway.com:443 CONNECT - 200 0 "-"
     2	[2023/10/25:15:42:02] 10.10.120.75 sway.com:443 GET / 301 492 "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"
     3	[2023/10/25:15:42:02] 10.10.120.75 sway.office.com:443 CONNECT - 200 0 "-"
--- REDACTED FOR BREVITY ---

如果在 head 或 tail 命令之前使用该命令非常有用,因为行号可以用作修剪输出的参考。了解日志条目的行号可以管理呈现为输出的值。

cut

可用于分割文件内容,-d(分割符),-f (分割位置)

cut -d ' ' -f1 xxx.log
[2023/10/25:15:42:02]
[2023/10/25:15:42:02]
--- REDACTED FOR BREVITY ---
文件格式:[2023/10/25:16:17:14] 10.10.140.96 storage.live.com:443 GET / 400 630 "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"

使用空格作为分割的位置,取第一位

cut -d ' ' -f1,3,6 xxx.log
[2023/10/25:15:42:02] sway.com:443 200
[2023/10/25:15:42:02] sway.com:443 301
[2023/10/25:15:42:02] sway.office.com:443 200
--- REDACTED FOR BREVITY ---

使用空格作为分割的位置,取第一位,第三位,第六位。

假设要获取用户代理列,则空格分隔符将不起作用,因为它的值可能包含空格,就像示例日志中一样:

"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"

因此需要更改分隔符并选择第 2 列,因为用户代理用双引号引起来。

cut -d '"' -f2 access.log
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36

在上面的示例中,我们使用了第 2 列,因为第 1 列将提供第一次使用双引号 (") 之前的内容。

管道命令:|

在 Linux 或类 Unix 操作系统中,管道(或“|”字符)是连接两个或多个命令以使它们无缝协同工作的一种方式。它可以获取一个命令的输出并将其用作另一命令的输入。

grep:是 Linux 中的一个命令,用于在文件或输入流中搜索文本。

1.获取 10.10.140.96 建立的前五个连接。

grep 10.10.140.96 xxx.log | head -n 5
[2023/10/25:15:46:20] 10.10.140.96 flow.microsoft.com:443 CONNECT - 200 0 "-"
[2023/10/25:15:46:20] 10.10.140.96 flow.microsoft.com:443 GET / 307 488 "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"
[2023/10/25:15:46:20] 10.10.140.96 make.powerautomate.com:443 CONNECT - 200 0 "-"
[2023/10/25:15:46:20] 10.10.140.96 make.powerautomate.com:443 GET / 200 3870 "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"
[2023/10/25:15:46:21] 10.10.140.96 o15.officeredir.microsoft.com:443 CONNECT - 200 0 "-"

解释:在文件中查找源ip为10.10.140.96的内容,并显示前5个。

2.获取所有工作站访问的唯一域的列表。

为此,我们将 sort 和 uniq 命令与 cut 命令结合起来。

Sort: 是一个 Linux 命令,用于按升序或降序对文本文件或输入流的行进行排序。

uniq :命令允许您从排序的文件或输入流中过滤并显示唯一的行。

如
111111
222222
333333
使用uniq筛选
123

注意:uniq 命令需要排序列表才有效,因为它只比较相邻行。

cut -d ' ' -f3 xxx.log | cut -d ':' -f1 | sort | uniq
account.activedirectory.windowsazure.com
activity.windows.com
admin.microsoft.com
--- REDACTED FOR BREVITY ---
文件格式:[2023/10/25:15:46:20] 10.10.140.96 make.powerautomate.com:443 GET / 200 3870 "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"
[2023/10/25:15:46:21] 10.10.140.96 o15.officeredir.microsoft.com:443 CONNECT - 200 0 "-"

解释:使用空格作为分割符获取第三位的内容及域名和端口,再使用:作为分割符获取第一位内容及域名信息,接着使用sort排序,并用uniq进行筛选。

cut -d ' ' -f3 access.log | cut -d ':' -f1 | sort | uniq -c | sort -n
78 partnerservices.getmicrosoftkey.com
113 malicious.com
118 ocsp.digicert.com
123 officeclient.microsoft.com
--- REDACTED FOR BREVITY ---
cut -d ' ' -f3 access.log | cut -d ':' -f1 | sort | uniq -c | sort -r
4992 www.office.com
4695 login.microsoftonline.com
860 www.globalsign.com
1581 malicious.com
1554 learn.microsoft.com
--- REDACTED FOR BREVITY ---

解释:添加uniq -c可对筛选的域名进行计数,snort -n 再次排序(顺序), snort -r降序显示。(snort -nr合并使用依然为降序)

案例

寻找可疑流量

cut -d ' ' -f3 access.log | cut -d ':' -f1 | sort | uniq -c | sort -n | tail -n 10
    606 docs.microsoft.com
    622 smtp.office365.com
    680 admin.microsoft.com
    850 c.bing.com
    878 outlook.office365.com
   1554 learn.microsoft.com
   1581 malicious.com
   1860 www.globalsign.com
   4695 login.microsoftonline.com
   4992 www.office.com

解释:通过空格分割,获取第三位;再通过:分割,获取域名信息;进行排序,使用uniq进行筛选,并使用-c参数统计数量;使用snort -n参数按照顺序排列,最后使用tail -n 10显示最后10行数据,及统计数量最高的域名。

可以发现大部分都是 Microsoft的域,其中有一个不太正常为malicious.com,使用grephead来检索与其建立的前10个连接。

grep malicious.com access.log | head -n 5 [2023/10/25:15:56:29] REDACTED_IP malicious.com:80 GET /storage.php?goodies=aWQscmVjaXBpZW50LGdp 200 362 "Go-http-client/1.1"
[2023/10/25:15:56:29] REDACTED_IP malicious.com:80 GET /storage.php?goodies=ZnQKZGRiZTlmMDI1OGE4 200 362 "Go-http-client/1.1"
[2023/10/25:15:56:29] REDACTED_IP malicious.com:80 GET /storage.php?goodies=MDRjOGExNWNmNTI0ZTMy 200 362 "Go-http-client/1.1"
[2023/10/25:15:56:30] REDACTED_IP malicious.com:80 GET /storage.php?goodies=ZTE3ODUsTm9haCxQbGF5 200 362 "Go-http-client/1.1"
[2023/10/25:15:56:30] REDACTED_IP malicious.com:80 GET /storage.php?goodies=IENhc2ggUmVnaXN0ZXIK 200 362 "Go-http-client/1.1"

检查请求列表,发现goodies 参数的字符串存在异常情况。尝试通过使用等号 (=) 作为分隔符来剪切请求 URI 来检索数据。

grep malicious.com access.log | cut -d ' ' -f5 | cut -d '=' -f2
aWQscmVjaXBpZW50LGdp
ZnQKZGRiZTlmMDI1OGE4
MDRjOGExNWNmNTI0ZTMy
ZTE3ODUsTm9haCxQbGF5
--- REDACTED FOR BREVITY ---

从格式来看,发送的数据似乎是用 Base64 编码的。使用这个理论,我们可以尝试通过将输出传输到 base64 命令来解码字符串。

grep malicious.com access.log | cut -d ' ' -f5 | cut -d '=' -f2 | base64 -d
id,recipient,gift
ddbe9f0258a804c8a15cf524e32e1785,Noah,Play Cash Register
cb597d69d83f24c75b2a2d7298705ed7,William,Toy Pirate Hat
4824fb68fe63146aabc3587f8e12fb90,Charlotte,Play-Doh Bakery Set
f619a90e1fdedc23e515c7d6804a0811,Benjamin,Soccer Ball
ce6b67dee0f69a384076e74b922cd46b,Isabella,DIY Jewelry Kit
939481085d8ac019f79d5bd7307ab008,Lucas,Building Construction Blocks
f706a56dd55c1f2d1d24fbebf3990905,Amelia,Play-Doh Kitchen
2e43ccd9aa080cbc807f30938e244091,Ava,Toy Pirate Map
--- REDACTED FOR BREVITY --- 

解码数据就是恶意传输的敏感数据。

标签:检索,10,15,25,linux,537.36,2023,日志,com
From: https://www.cnblogs.com/zero-4046/p/17888474.html

相关文章

  • Linux_1 常用文件管理命令
    1常用命令介绍ctrlc:取消命令,并且换行,关掉当前进程ctrlu:清空本行命令tab键:可以补全命令和文件名,如果补全不了快速按两下tab键,可以显示备选选项ls:列出当前目录下所有文件,蓝色的是文件夹,白色的是普通文件,绿色的是可执行文件|ls-xxx|输出内容||:-......
  • 阿里云日志系统介绍及应用
    前言传统IDC的建设,需要投入大量的人力、物力和财力,而公有云几乎拥有一站式的建设、部署方案和完整的云生态,并且可以根据业务随时随地的弹性扩展,特别是一些中小型的公司,越来越多的选择将业务落地到公有云。而对于所有公司、所有业务来讲,日志是一个无法绕开的话题,如何建设一个稳健和......
  • Linux: CPU C-states
    0.OverviewTherearevariouspowermodesoftheCPUwhicharedeterminedbasedontheircurrentusageandarecollectivelycalled“C-states”or“C-modes.”WithCPUC-states,theCPUcanentertheidlestatustooptimizeenergyconsumption.TheCPUhas......
  • linux上如何删除文件名乱码的文件
    服务器上发现乱码文件,使用rm命令无法删除 解决方案:使用ls-i命令,显示文件的数字节点号 再执行命令,就可以删除乱码文件了find-inum节点号-delete ......
  • Linux小技巧
    使用=使代码自动对齐快捷键功能描述Ctrl+A光标快速跳至行首。Ctrl+E光标快速跳至行尾。Ctrl+U删除光标至行首的所有内容。Ctrl+K删除光标至行尾的所有内容。Ctrl+W删除光标前的一个单词。Ctrl+L清空整个终端屏幕。Ctrl+C停止正......
  • JetBrains DataSpell 2023.3 (macOS, Linux, Windows) - 专业数据科学家的 IDE
    JetBrainsDataSpell2023.3(macOS,Linux,Windows)-专业数据科学家的IDE请访问原文链接:https://sysin.org/blog/jb-dataspell-2023/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgJetBrainsDataSpell-专业数据科学家的IDE智能JupyterNotebook专为高交......
  • JetBrains DataGrip 2023.3 (macOS, Linux, Windows) - 数据库和 SQL 跨平台 IDE
    JetBrainsDataGrip2023.3(macOS,Linux,Windows)-数据库和SQL跨平台IDE请访问原文链接:https://sysin.org/blog/jb-datagrip-2023/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgJetBrainsDataGrip-多种数据库,一个工具为什么选择DataGrip轻松处理数据......
  • JetBrains GoLand 2023.3 (macOS, Linux, Windows) - Go Full Stack
    JetBrainsGoLand2023.3(macOS,Linux,Windows)-GoFullStack请访问原文链接:https://sysin.org/blog/jb-goland-2023/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgJetBrainsGoLand-GoFullStackGo语言全栈IDE,对JavaScript、TypeScript和数据库提供......
  • linux Docker容器日志查看与清理2
    问题:docker容器日志随着时间变得越来越大。本来分的200G磁盘空间迅速不太够用。 日志查找:docker安装目录一般在/var/lib/docker下:执行以下命令,可查看各文件夹空间占用情况:du-h-x--max-depth=1我们可以看到containers目录占用了181G的空间:进入到containers容器目录,......
  • JetBrains PyCharm 2023.3 (macOS, Linux, Windows) - 面向专业开发者的 Python IDE
    JetBrainsPyCharm2023.3(macOS,Linux,Windows)-面向专业开发者的PythonIDE请访问原文链接:https://sysin.org/blog/jb-pycharm-2023/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgJetBrainsPyCharm-面向专业开发者的PythonIDE为什么选择PyCharm在一......