Linux基础日志分析

news/2024/11/14 14:07:44/文章来源:https://www.cnblogs.com/xuruizhao/p/18540758

四、日志分析

【1】、what is 日志

  • 日志log
  • 分析,检查系统,服务是否正常运行,一般都要看日志。 后面学习的一些服务软件,遇到故障就要查看日志。
  • Linux日志一般存放在/var/log/目录。

【2】、核心日志

ip,root,密码,22(端口)

Linux默认核心日志 说明
/var/log/secure(麒麟,红帽系统) /var/log/auth.log (debian,ubt) 用户登录情况,分析错误,分析正确
/var/log/messages(麒麟,红帽系统) /var/log/syslog(debian,ubt) 通用日志(服务) 服务如果没有单独的日志,一般就会记录到这里面。
......
root@xu-ubuntu:~# ll /var/log/auth.log 
-rw-r----- 1 syslog adm 6303 Nov  4 08:05 /var/log/auth.log
[root@kylin-xu ~]# ll /var/log/secure 
-rw------- 1 root root 6269 nov  4 00:31 /var/log/secureroot@xu-ubuntu:~# ll /var/log/syslog 
-rw-r----- 1 syslog adm 230481 Nov  4 07:29 /var/log/syslog
[root@kylin-xu ~]# ll /var/log/messages 
-rw------- 1 root root 2199907 nov  4 05:06 /var/log/messages

分析secure (auth.log)日志:

  • failure
  • failed ( Failed password)

kylin错误登录分析

image-20241104161616677

Ubuntu错误登录分析

image-20241104162158128

【3】、故障案例:某开发人员vim编辑2g日志导致系统内存不足。

背景: 突然发现测试环境某个机器,提示内存不足。我们去查看。

步骤:定位出是vim命令占用的。发现vim编辑日志。

解决:结束进程

预防:

  • 发现开发人员操作,查看日志,vim查看。

  • 培训开发人员使用tail,head,less,more,grep查看不要用cat,vim.

【4】、查看内存指令

tail,head,less,more,grep

1、tail

  • 文件结尾的数据。默认查看文件末尾10行。

查看文件最后的20行 -20 -n20

[root@kylin-xu ~]# tail -20 /var/log/secure  
Nov  3 23:40:10 kylin-xu polkitd[768]: Loading rules from directory /etc/polkit-1/rules.d
Nov  3 23:40:10 kylin-xu polkitd[768]: Loading rules from directory /usr/share/polkit-1/rules.d
Nov  3 23:40:10 kylin-xu polkitd[768]: Finished loading, compiling and executing 5 rules
Nov  3 23:40:10 kylin-xu polkitd[768]: Acquired the name org.freedesktop.PolicyKit1 on the system bus
Nov  3 23:40:17 kylin-xu systemd[1105]: pam_unix(systemd-user:session): session opened for user root(uid=0) by (uid=0)
Nov  3 23:40:18 kylin-xu sshd[1029]: pam_unix(sshd:session): session opened for user root(uid=0) by (uid=0)
Nov  3 23:41:17 kylin-xu polkitd[752]: Loading rules from directory /etc/polkit-1/rules.d
Nov  3 23:41:17 kylin-xu polkitd[752]: Loading rules from directory /usr/share/polkit-1/rules.d
Nov  3 23:41:17 kylin-xu polkitd[752]: Finished loading, compiling and executing 5 rules
Nov  3 23:41:17 kylin-xu polkitd[752]: Acquired the name org.freedesktop.PolicyKit1 on the system bus
Nov  3 23:42:59 kylin-xu systemd[1437]: pam_unix(systemd-user:session): session opened for user root(uid=0) by (uid=0)
Nov  3 23:42:59 kylin-xu sshd[1427]: pam_unix(sshd:session): session opened for user root(uid=0) by (uid=0)
Nov  3 23:52:47 kylin-xu sshd[1427]: pam_unix(sshd:session): session closed for user root
Nov  3 23:52:48 kylin-xu sshd[3968]: pam_unix(sshd:session): session opened for user root(uid=0) by (uid=0)
Nov  4 00:31:07 kylin-xu sshd[3968]: pam_unix(sshd:session): session closed for user root
Nov  4 00:31:08 kylin-xu sshd[66374]: pam_unix(sshd:session): session opened for user root(uid=0) by (uid=0)
Nov  4 05:14:54 kylin-xu sshd[135641]: pam_unix(sshd:session): session opened for user root(uid=0) by (uid=0)
Nov  4 05:15:02 kylin-xu sshd[135641]: pam_unix(sshd:session): session closed for user root
Nov  4 05:15:17 kylin-xu login[902]: pam_unix(login:auth): authentication failure; logname=LOGIN uid=0 euid=0 tty=tty1 ruser= rhost=  user=root
Nov  4 05:15:20 kylin-xu login[902]: FAILED LOGIN SESSION FROM tty1 FOR root, Permission denied
[root@kylin-xu ~]# tail -20 /var/log/secure  | wc -l
20
  • 查看文件末尾的实时更新
[root@kylin-xu ~]# tail -f /var/log/secure

2、head

查看文件开头的内容,默认显示10行。

head /var/log/secure# 显示第一行
head -1 /var/log/secure

3、less、more

  • less /etc/serivces
下一页: 空格或ctrl + f 
上一页:      ctrl + b
第1行:       g
最后一行:     G
某一行:      100回车
/搜索  
q 退出 

more 快捷键没有那么多,到文件末尾自动退出。

4、过滤 在文件中查找内容

四剑客 find,grep,sed,awk

  • grep
grep选项
--color 加颜色
-i 不区分大小写
-n 显示行号
-v 取反,排除
  • 在/etc/passwd文件中过滤出root的行
grep --color 'root'     /etc/passwd
  • 在/var/log/secure文件中过滤出failure行。
grep --color  'failure'  /var/log/secure
  • /var/log/auth.log中过滤出failed password
grep -i 'failed password'  /var/log/auth.log
  • 不区分大小写过滤出 /etc/ssh/sshd_config 文件中包含port 22的行并输出行号
grep  --color  -i -n  'port 22'   /etc/ssh/sshd_config 
  • 排除(取反)/etc/ssh/sshd_config文件中的#(井号)
grep -v '#'  /etc/ssh/sshd_config

5、wc

  • 统计文件行数
xu@xu-ubuntu:~$ wc -l /etc/services
361 /etc/services
  • wc一般搭配管道使用,其他命令使用。
  • 初步统计功能。

【5】、日志统计

1、管道

管道: 符号 | ,前1个命令执行后输出,通过管道符号,传递给下一个命令使用。

  • 过滤/etc/passwd中包含/bin/bash的行,行数。
[root@kylin-xu ~]# grep /bin/bash /etc/passwd 
root:x:0:0:root:/root:/bin/bash
[root@kylin-xu ~]# grep /bin/bash /etc/passwd | wc -l
1
  • ps -ef 显示linux进程的命令,linux进程数量
[root@kylin-xu ~]# ps -ef | wc -l
151
  • ps -ef 显示linux进程的命令,统计/sbin/sshd进程数量(远程连接服务的进程)
[root@kylin-xu ~]# ps -ef | grep /sbin/sshd 
root         872       1  0 nov03 ?        00:00:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
root      143510   66389  0 05:46 pts/0    00:00:00 grep /sbin/sshd
[root@kylin-xu ~]# ps -ef | grep /sbin/sshd  | wc -l
2

2、日志

  • 上传文件到linux
安装lrzsz   
yum install -y  lrzsz  #麒麟#ubt,debian 使用root用户
sudo su - 
apt update 
apt install -y lrzsz #命令说明
rz 上传  rz回车即可或拖拽
sz 下载  sz /etc/hostname  下载指定的文件。
  • 解压缩
unzip secure-20161219.zip  #解压到当前目录。
#如果提示命令找不到 command not found检查:
[root@oldboyedu ~]# ll -h secure-20161219
-rw-r--r-- 1 root root 49M  2月 15  2017 secure-20161219
#字节,
#KB
#MB
#GT
#GB
#TB
#PB
#EB
  • 分析

3、复现故障案例

cat  secure-20161219 secure-20161219  secure-20161219 secure-20161219 secure-20161219 secure-20161219 secure-20161219 secure-20161219 secure-20161219 secure-20161219 secure-20161219 secure-20161219 secure-20161219 secure-20161219 secure-20161219 secure-20161219     secure-20161219 secure-20161219 secure-20161219 secure-20161219  > secure-big[root@kylin-xu ~]# ll -h secure-big 
-rw-r--r-- 1 root root 974M 11月  4 07:11 secure-big
  • 检查内存: free -h

  • vim编辑文件

  • 开个窗口 查看内存

4、日志分析搭档sort,uniq

  • sort 排序
  • uniq unique独一无二的,去重。

(1)、sort

sort选项
-r 逆序排序
-n 按照数字形式排序
-k -k指定列,
[root@kylin-xu ~]# sort num.txt 
# 默认是按照数字的第一个数字排序
0
1
131
154
161
26
3
31
4164
46
74
749
99[root@kylin-xu ~]# sort num.txt  -n
0
1
3
26
31
46
74
99
131
154
161
749
4164[root@kylin-xu ~]# sort num.txt  -nr
4164
749
161
154
131
99
74
46
31
26
3
1
0[root@kylin-xu ~]# sort num.txt  -nr -k 2
aasc 4164
xixi 749
haha 161
dtgfhdsgf 154
aaa 131
safdg 99
ewsrf 74
bb 46
qawq 31
sadg 26
bsadfg 3 
ss 1
afa 0

ps aux 第4列是内存使用率,对这列排序,取出前5个

root@xu-ubuntu:~# ps aux | sort -nr -k 4 | head -5
root        4855  0.5  0.8 1393992 31980 ?       Ssl  10:39   0:21 /usr/lib/snapd/snapd
root         548  0.0  0.6 354888 27232 ?        SLsl 03:51   0:06 /sbin/multipathd -d -s
root         899  0.0  0.5 107120 21528 ?        Ssl  03:51   0:00 /usr/bin/python3 /usr/share/unattended-upgrades/unattended-upgrade-shutdown --wait-for-signal
root         835  0.0  0.4  30104 18920 ?        Ss   03:51   0:00 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers
root         510  0.0  0.4  47884 16904 ?        S<s  03:51   0:01 /lib/systemd/systemd-journald

(2)、uniq

  • 去重,一般要与sort搭配。
[root@oldboyedu ~]# cat uniq.txt 
lidao
oldboy
lidao
lidao
lidao
lidao
lidao
lidao
lidao
lidao
lidao
oldboy
oldboy
oldboy
oldboy
oldboy
[root@oldboyedu ~]# sort uniq.txt |uniq -c 10 lidao6 oldboy

(3)、awk

  • 取列

  • awk 取列 NF表示最后一列

[root@kylin-xu ~]# cat num.txt 
haha 161 192.168.121.11
xixi 749 192.168.121.111
aaa 131  192.168.121.116
aasc 4164 192.178.121.11
dtgfhdsgf 154 192.178.121.180
qawq 31 192.178.31.11[root@kylin-xu ~]# awk '{print $3}' num.txt 
192.168.121.11
192.168.121.111
192.168.121.116
192.178.121.11
192.178.121.180
192.178.31.11
[root@kylin-xu ~]# awk '{print $NF}' num.txt 
192.168.121.11
192.168.121.111
192.168.121.116
192.178.121.11
192.178.121.180
192.178.31.11

【6】、日志分析实战

1、secure日志分析

  • 1️⃣过滤出failed password,失败登录。 取行
  • 2️⃣ 提取出这行中的ip的列。 取列
  • 3️⃣ 对ip进行排序。 相同的ip在一起。
  • 4️⃣ 去掉重复,统计次数。 去重并统计次数。uniq -c
  • 5️⃣ 对次数排序并取出前20个

NF-3:取出倒数第四列。

因为从正向数,是不规律的,因此只能倒序数

image-20241104202812047

[root@kylin-xu ~]# grep -i "failed password" secure-20161219 |  awk '{print $(NF-3)}' | sort | uniq -c | sort -rn | head -2068652 218.65.30.2534326 218.65.30.5321201 218.87.109.15418065 112.85.42.10317164 112.85.42.9917163 218.87.109.15117163 218.87.109.15017163 218.65.30.6117163 218.65.30.12617163 218.65.30.12417163 218.65.30.12317163 218.65.30.12217163 182.100.67.12017163 182.100.67.11917163 112.85.42.12417163 112.85.42.1073289 222.186.50.2063265 219.133.29.163206 111.73.46.1562479 117.21.226.189

2、access日志分析

  • 2️⃣ 提取出这行中的ip的列。 取列
  • 3️⃣ 对ip进行排序。 相同的ip在一起。
  • 4️⃣ 去掉重复,统计次数。 去重并统计次数。uniq -c
  • 5️⃣ 对次数排序并取出前20个
[root@kylin-xu ~]# awk '{print $1}' access.log  | sort | uniq -c | sort -rn  | head -2012049 58.220.223.6210856 112.64.171.981982 114.83.184.1391662 117.136.66.101318 115.29.245.13961 223.104.5.197957 116.216.0.60939 180.111.48.14871 223.104.5.202869 223.104.4.139799 124.160.208.186792 121.235.250.231774 116.226.186.208753 114.111.166.22752 122.234.234.124751 61.148.243.193733 58.33.166.73733 222.67.7.159717 140.206.89.233706 101.226.125.113

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

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

相关文章

reverse2

题目链接:reverse2。 下载附件后,使用 IDA 进行反编译,定位到 main 函数,如下。main 函数中主要需要分析的地方如下。for ( i = 0; i <= strlen(&flag); ++i ){if ( *(&flag + i) == i || *(&flag + i) == r )*(&flag + i) = 1;}printf("input the…

新年快乐

题目链接:新年快乐。 下载附件后,发现 IDA 反编译出来的结果跟一般的程序反编译出来的结果不相似,因此使用 DIE 工具看看是否该程序加了壳。发现确实存在 UPX 壳,因此直接在 Linux 中使用后 upx 命令脱壳。 upx -d <filename>脱壳后,使用 IDA 进行反编译,定位到 ma…

深度学习(VAE)

变分自编码器(VAE,Variational Auto-Encoder)是一种生成模型,它通过学习数据的潜在表示来生成新的样本。 在学习潜空间时,需要保持生成样本与真实数据的相似性,并尽量让潜变量的分布接近标准正态分布。 VAE的基本结构: 1. 编码器(Encoder):将输入数据转换为潜在空间的…

基于 dp 凸性的优化策略(待修缮)

斜率优化 \(y=kx+b\) 形式维护队列,询问不单调则二分决策点。 Slope Trick 如果决策函数满足以下条件:连续 凸包,每一段斜率为整数 凸包上断点之间的一次函数斜率总和为 \(\mathcal O(n)\) 级别则称这个函数满足性质 \(T\),且如果 \(f,h\) 都满足性质 \(T\),则 \(f+h\) 也…

warmup_csaw_2016

题目链接:warmup_csaw_2016。 下载附件后,使用 IDA 反编译,定位到 main 函数,如下。 __int64 __fastcall main(int a1, char **a2, char **a3) {char s[64]; // [rsp+0h] [rbp-80h] BYREFchar v5[64]; // [rsp+40h] [rbp-40h] BYREFwrite(1, "-Warm Up-\n", 0xAu…

System

System 类常见的成员方法:图1System 是一个工具类, 提供了一些与系统相关的方法. public static void exit(int status) // 终止当前运行的 Java 虚拟机status 是一个状态码, 有两种情况, 第一种情况是等于 0, 表示当前虚拟机是正常停止的. 第二种情况是非零, 一般是写 1, 表示…

Java中的 Exception 和 Error 有什么区别

Java中的 Exception 和 Error 有什么区别Exception 和 Error 都是 Throwable 类的子类(在Java代码中只有继承了 Throwable 类的实例才可以被 throw 或者被 catch)它们表示在程序运行时发生的异常或错误情况。 总结来看: Exception 表示可以被处理的程序异常,Error 表示系统…

数据采集与融合技术实验课程作业三

数据采集与融合技术实验课程作业三作业所属课程 https://edu.cnblogs.com/campus/fzu/2024DataCollectionandFusiontechnology作业链接 https://edu.cnblogs.com/campus/fzu/2024DataCollectionandFusiontechnology/homework/13287gitee码云代码位置 https://gitee.com/wang-qi…

HTTPS ppt素材

本来的主题是介绍一下我之前做的搜索与推荐的业务,但9月份开始我主要开始承担一些医那块的业务测试,就想做点别的分享,但换成医的业务介绍,想了想我目前对医的了解程度,实在没勇气拿出来分享,所以就换了这个主题。 这个主题其实也是早有预谋,一个初衷是想对某一个通用性…

jvm 堆内存

堆、方法区、直接内存,多个线程之间是共享的。 ------------ 堆内存是会溢出的。 堆内存默认最大是7G

CdnCheck工具

前言:CdnCheck工具实现,记录下我这边实现的几个点 参考文章:https://github.com/projectdiscovery/cdncheck 参考文章:https://github.com/YouChenJun/CheckCdn 参考文章:https://github.com/zu1k/nali 参考文章:https://github.com/u9sky/cdn-cname-domain/blob/main/cd…

考研打卡(14)

开局(14) 开始时间 2024-11-11 20:21:43 结束时间 2024-11-11 22:00:55今天考研数学的资料到了数据结构设一组初始记录关键字序列为(50,40,95,20,15,70,60,45), 则以增量d=4的一趟希尔排序结束后前4条记录关键字为_____(中国地质大学2017年) A 40,50,20,95 B 15,40,6…