auditd是监听目录下的文件操作

你可以通过auditd配置你要监听的目录,之后对这个目录下的操作会记录到autitd的日志中

这里先不讲如何去配置auditd,这里讲如何去分析auditd日志

auditd原理简介

  1. 首先我们创建文件也好,删除文件也好,都是由进程帮我们去执行的

  2. linux内核提供接口,可以查询进程对文件的操作

  3. autitd记录的就是文件操作时涉及到的数据记录下来

所以只要分析日志就可以判断出是谁对哪个文件进行了什么操作

本文只分享分析方法,这里就讲得粗糙些

怎么去分析

这里给出两个例子,一个是知道登录时的bash进程id,另一个是不知道

在这两种情况下如何去分析日志

为什么要知道bash进程id?

  • 因为登录服务器后,输入的命令都是通过这个bash进程传递linux去执行
  • 也就是说你登录服务器后所有运行的命令都是bash这个进程的子进程
  • 所以只要分析bash这个进程的子进程进行了什么样的操作就可以知道用户执行了什么操作

首先确认下配置

确认下auditd的配置,查以看出他监控了/opt/context/EPG目录

# 新建一个规则
auditctl -w /opt/context/EPG -p wa -k watchdata# 查看我们新建的规则
auditctl -l
-w /opt/context/EPG -p wa -k watchdata

没什么特殊配置,就是监听了/opt/context/EPG这个目录,并配置了key为watchdata(方便我们查看日志)

知道bash进程id

我们先登录服务器

可以看到日志/var/log/audit/audit.log中记录了以下信息

type=CRYPTO_KEY_USER msg=audit(1614316640.869:11712): pid=16275 uid=0 auid=0 ses=1249 msg='op=destroy kind=server fp=SHA256:f3:c7:dd:6e:c4:cf:6e:ac:b6:ab:ea:ad:c4:36:b8:26:a9:bd:b2:69:27:8d:44:8b:5c:9e:e8:ab:4d:e6:1e:da direction=? spid=16275 suid=0  exe="/usr/sbin/sshd" hostname=fcg-1 addr=? terminal=pts/3 res=success'UID="root" AUID="root" SUID="root"
type=CRYPTO_KEY_USER msg=audit(1614316640.869:11713): pid=16275 uid=0 auid=0 ses=1249 msg='op=destroy kind=server fp=SHA256:62:ed:84:c4:f5:a1:ac:cd:eb:fa:ca:68:81:87:21:9e:fe:e4:ff:92:e3:f5:fa:53:4f:3e:38:58:a2:74:a1:91 direction=? spid=16275 suid=0  exe="/usr/sbin/sshd" hostname=fcg-1 addr=? terminal=pts/3 res=success'UID="root" AUID="root" SUID="root"
type=CRYPTO_KEY_USER msg=audit(1614316640.869:11714): pid=16275 uid=0 auid=0 ses=1249 msg='op=destroy kind=server fp=SHA256:0d:30:33:d2:2d:9d:37:e3:19:45:71:e4:fa:5d:b9:59:89:a1:2b:61:68:c4:1f:88:89:51:53:a5:81:5f:a4:1f direction=? spid=16275 suid=0  exe="/usr/sbin/sshd" hostname=fcg-1 addr=? terminal=pts/3 res=success'UID="root" AUID="root" SUID="root"
type=USER_LOGIN msg=audit(1614316640.869:11715): pid=16275 uid=0 auid=0 ses=1249 msg='op=login id=0 exe="/usr/sbin/sshd" hostname=10.0.6.58 addr=10.0.6.58 terminal=/dev/pts/3 res=success'UID="root" AUID="root" ID="root"
type=USER_START msg=audit(1614316640.869:11716): pid=16275 uid=0 auid=0 ses=1249 msg='op=login id=0 exe="/usr/sbin/sshd" hostname=10.0.6.58 addr=10.0.6.58 terminal=/dev/pts/3 res=success'UID="root" AUID="root" ID="root"
type=CRED_REFR msg=audit(1614316640.870:11717): pid=16275 uid=0 auid=0 ses=1249 msg='op=PAM:setcred grantors=pam_unix acct="root" exe="/usr/sbin/sshd" hostname=10.0.6.58 addr=10.0.6.58 terminal=ssh res=success'UID="root" AUID="root"

可以看出我登录后分配给我们bash的pid为16275
也可以用ps -ef | fgrep bash命令确认

接着我们在/opt/context/EPG目录下创建一个文件

cd /opt/context/EPG
touch 1

由于我知道了我的bash的pid为16275

那么touch这个命令的ppid就应该为16275

再根据这个ppid去查看的日志

fgrep 'ppid=16275' auditd.logtype=SYSCALL msg=audit(1614316646.189:11718): arch=c000003e syscall=2 success=yes exit=3 a0=7fffe0a9a883 a1=941 a2=1b6 a3=7fffe0a982a0 items=2 ppid=16275 pid=16298 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts3 ses=1249 comm="touch" exe="/usr/bin/touch" key="watchdata"ARCH=x86_64 SYSCALL=open AUID="root" UID="root" GID="root" EUID="root" SUID="root" FSUID="root" EGID="root" SGID="root" FSGID="root"
type=CWD msg=audit(1614316646.189:11718):  cwd="/opt/context/EPG"
type=PATH msg=audit(1614316646.189:11718): item=0 name="/opt/context/EPG" inode=67221298 dev=fd:00 mode=040750 ouid=0 ogid=0 rdev=00:00 objtype=PARENT cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0OUID="root" OGID="root"
type=PATH msg=audit(1614316646.189:11718): item=1 name="1" inode=67222049 dev=fd:00 mode=0100640 ouid=0 ogid=0 rdev=00:00 objtype=CREATE cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0OUID="root" OGID="root"
type=PROCTITLE msg=audit(1614316646.189:11718): proctitle=746F7563680031

可以从日志中看关键字,从以下3个关键字中,我们可以推算出有人在/opt/context/EPG目录下,创建了一个文件1,再分析地细致一点,你可以发现是root用户创建了文件1

cwd="/opt/context/EPG"
name="1"
objtype=CREATE

不知道bash进程id

如何我们不知道bash进程id

那么思路就是先分析所有的命令,找出可疑的bash进程id,然后再根据bash进程id去分析日志

# 查看方法1,根据-f 文件
ausearch -f /opt/context/EPG | fgrep comm# 查看方法2,根据-k 关键字
# 我们在做监控的时候定义了关键字-k watchdata,所以可以
ausearch -k watchdata | fgrep comm# 找到可疑的记录(要用肉眼去找),比如下面这条
# 为什么我会认为他可疑,因为他执行了/usr/bin/touch这个命令
# 这里要结合实际情况去找了,要看经验了
type=SYSCALL msg=audit(1614316646.189:11718): arch=c000003e syscall=2 success=yes exit=3 a0=7fffe0a9a883 a1=941 a2=1b6 a3=7fffe0a982a0 items=2 ppid=16275 pid=16298 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts3 ses=1249 comm="touch" exe="/usr/bin/touch" key="watchdata"

上面显示audit的id为11718

根据id查看他的行为

ausearch -a 11718
----
time->Fri Feb 26 13:17:26 2021
type=PROCTITLE msg=audit(1614316646.189:11718): proctitle=746F7563680031
type=PATH msg=audit(1614316646.189:11718): item=1 name="1" inode=67222049 dev=fd:00 mode=0100640 ouid=0 ogid=0 rdev=00:00 objtype=CREATE cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0
type=PATH msg=audit(1614316646.189:11718): item=0 name="/opt/context/EPG" inode=67221298 dev=fd:00 mode=040750 ouid=0 ogid=0 rdev=00:00 objtype=PARENT cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0
type=CWD msg=audit(1614316646.189:11718):  cwd="/opt/context/EPG"
type=SYSCALL msg=audit(1614316646.189:11718): arch=c000003e syscall=2 success=yes exit=3 a0=7fffe0a9a883 a1=941 a2=1b6 a3=7fffe0a982a0 items=2 ppid=16275 pid=16298 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts3 ses=1249 comm="touch" exe="/usr/bin/touch" key="watchdata"

可以通过通过以下关键字判断出有人在/opt/context/EPG目录下通过touch命令新建了一个文件

name="1"
objtype=CREATE
cwd="/opt/context/EPG"
exe="/usr/bin/touch"

而那个人的命令所在的父进程ppid=16275

你也可以找到ses=1249这个字段,这个晚点解释

我们要去看看16275是哪个登录者的bash

fgrep ' pid=16275 ' /var/log/audit/audit.log | fgrep USER_LOGIN
type=USER_LOGIN msg=audit(1614316640.869:11715): pid=16275 uid=0 auid=0 ses=1249 msg='op=login id=0 exe="/usr/sbin/sshd" hostname=10.0.6.58 addr=10.0.6.58 terminal=/dev/pts/3 res=success'UID="root" AUID="root" ID="root"

我们可以看现登录者的ip是10.0.6.58

这样我们就知道了有人从10.0.6.58登录了服务器并在/opt/context/EPG目录下通过touch命令新建了一个文件1

进阶一点的方法

上述为比较原始的方法,查看的是原始日志,比较适合新手

接下来稍微介绍一点进阶的统计方法

因为我们之前定义了watchdata这个关键字,因此我们可以用关键字去查找

ausearch -k watchdata | aureport -x
99. 02/26/2021 13:17:26 /usr/bin/touch pts3 ? 0 11718

是不是比之前稍微直观一点,同样找到11718
我们的目标是找ses,aureport没有可以帮我们提取ses的接口
这里我们目测提炼

ausearch -a 11718
# 找到ses=1249,去分析下这个用户的行为
# 所有用户的行为全部都罗列了出来
fgrep ses=1249 /var/log/audit/audit.log | aureport -xExecutable Report
====================================
# date time exe term host auid event
====================================
1. 02/26/2021 13:16:36 /usr/sbin/sshd ssh 10.0.6.58 0 11705
2. 02/26/2021 13:16:36 /usr/sbin/sshd pts/2 fcg-1 0 11706
3. 02/26/2021 13:16:36 /usr/sbin/sshd pts/2 fcg-1 0 11707
4. 02/26/2021 13:16:36 /usr/sbin/sshd pts/2 fcg-1 0 11708
5. 02/26/2021 13:16:36 /usr/sbin/sshd /dev/pts/2 10.0.6.58 0 11709
6. 02/26/2021 13:16:36 /usr/sbin/sshd /dev/pts/2 10.0.6.58 0 11710
7. 02/26/2021 13:16:36 /usr/sbin/sshd ssh 10.0.6.58 0 11711
8. 02/26/2021 13:17:20 /usr/sbin/sshd pts/3 fcg-1 0 11712
9. 02/26/2021 13:17:20 /usr/sbin/sshd pts/3 fcg-1 0 11713
10. 02/26/2021 13:17:20 /usr/sbin/sshd pts/3 fcg-1 0 11714
11. 02/26/2021 13:17:20 /usr/sbin/sshd /dev/pts/3 10.0.6.58 0 11715
12. 02/26/2021 13:17:20 /usr/sbin/sshd /dev/pts/3 10.0.6.58 0 11716
13. 02/26/2021 13:17:20 /usr/sbin/sshd ssh 10.0.6.58 0 11717
14. 02/26/2021 13:17:26 /usr/bin/touch pts3 ? 0 11718

看第一条,我们知道了这个用户(10.0.6.58)

看最后一行,我们知道了这个用户执行了/usr/bin/touch

是不是更直观更快

auditd日志分析方法相关推荐

  1. linux日志.pdf,一种用于LINUX的AUDIT日志分析方法.pdf

    一种用于Linux的audit日志分析方法 技术领域 本发明涉及服务器技术领域,具体的说是一种用于Linux的audit日志分析方法. 背景技术 Linux内核有用日志记录事件的能力,比如记录系统调用 ...

  2. IIS日志分析方法及工具

    出处: http://xugang.cnblogs.com 日志的重要性已经越来越受到程序员的重视,IIS的日志更是不言而喻. IIS日志建议使用W3C扩充日志文件格式,这也是IIS 5.0已上默认的 ...

  3. ide 日志 乱码_IDE日志分析方法pt。 1个

    ide 日志 乱码 介绍 我认为大多数软件工程师都了解日志的重要性. 它们已成为软件开发的一部分. 如果无法解决问题,我们尝试在日志中查找原因. 对于一些简单的情况,当错误阻止应用程序打开窗口时,这可 ...

  4. IDE日志分析方法pt。 1个

    介绍 我认为大多数软件工程师都了解日志的重要性. 它们已成为软件开发的一部分. 如果无法解决问题,我们尝试在日志中查找原因. 对于一些简单的情况,当错误阻止应用程序打开窗口时,这可能就足够了. 您可以 ...

  5. IDE日志分析方法pt。 2

    介绍 在第一部分中,我解释了日志分析的理论方法,我认为这对维持工程师是最合适的. 这位工程师不需要在日志出现时立即对其进行分析,而是专注于对复杂问题的深入分析. 在第二部分中,我将展示一个复杂的模板可 ...

  6. 关于fi dd ler 手机抓包 网卡地址地址_终端抓包与日志分析方法

    作为工程师,检测应用是否有收发包常见的方法就是抓包.linux平台下可以通过tcpdump命令进行抓包,windows 和Mac 平台也有Wireshark工具,对于终端如何进行抓包与日志分析. 终端 ...

  7. ide 日志 乱码_IDE日志分析方法pt。 2

    ide 日志 乱码 介绍 在第一部分中,我解释了测井分析的理论方法,我认为这对维持工程师是最好的. 该工程师不需要在日志出现时立即对其进行分析,而是专注于对复杂问题的深入分析. 在第二部分中,我将展示 ...

  8. SELinux系列(十五)—auditd日志使用方法详解

    auditd 会把 SELinux 的信息都记录在 /var/log/auditd/auditd.log 中. 这个文件中记录的信息会非常多,如果手工查看, 则效率将非常低下.比如笔者的 Linux ...

  9. 服务器缺少storportSYS文件,Windows操作系统蓝屏日志分析方法

    或许你可以先检测下机器硬件健康状况,详情点击查看检测教程 工具:X64 Debuggers And Tools-x64_en-us 下载地址:链接:http://pan.baidu.com/s/1cA ...

最新文章

  1. baidumaptrace.php,鹰眼Web API v2.0 | 百度地图API SDK
  2. 青岛大学计算机系住哪个校区,青岛大学有几个校区及校区地址
  3. Python做web开发,推荐几个能立马上手的小项目
  4. altium designer无法创建工程_前端工程化之开发脚手架及封装自动化构建
  5. 如果–否则为编码风格最佳实践
  6. 它来了,带着曝光图又来了!疑似小米MIX4谍照流出
  7. c++ opencv 识别车牌_python利用百度云接口实现车牌识别
  8. hiho1095(二分)
  9. Audio播放流程(二)---NuPlayer流程之setDataSource
  10. IE下图片切换的时候,图片总是切换不成功---根本问题是IE缓存图片
  11. 添加控件并处理事件(纯手写)
  12. java match详解_Match类解析
  13. 外网访问计算机远程桌面掉线,[转载]远程桌面一连就经常掉线的解决方法
  14. wuc-tab标签点击不了_微信公众号新增标签功能,格力被中国移动取消竞标资格,全国电子无偿献血证上线,QQ新增辣椒酱表情,这就是今天的其他大新闻!...
  15. 数据与广告系列三十二:重排ReRank,广告推荐算法链路上的背叛者,生态系统格局的重塑者...
  16. 深入浅出FPGA-4-数字电路设计基础
  17. 如果太阳突然爆炸 地球会发生什么?| 1分钟了解广义相对论
  18. python 常数怎么表达_Python的常数类
  19. matlab绘制四棱台,几何画板绘制正四棱台的图文教程
  20. ADIS16400/ADIS16405带磁力计的三轴惯性传感器(1)

热门文章

  1. linux虚拟机 虚拟化软件有哪些,六大Linux虚拟化技术全面讲解
  2. centos中安装配置tftp服务器
  3. linux基于Python3的flask服务器配置
  4. php字段验证规则,ThinkPHP 自动验证及验证规则详解
  5. 天气微信小程序相关代码
  6. 软考高项论文评分标准参考
  7. Android SDK开发艺术探索(五)安全与校验
  8. 计算机主机一直响,电脑开机主机一直响怎么办
  9. 【数据结构】八大排序算法
  10. Linux kernel编译、安装及指定默认内核版本启动