【Linux】安全审计-audit
文章目录
- 一、audit简介
- 二、开启auditd服务
- 三、相关文件
- 四、审计规则
- 五、审计日志查询及分析
- 附录1:auditctl -h
- 附录2:systemcall 类型
参考文章:
1、安全-linux audit审计使用入门
2、audit详细使用配置
3、Linux-有哪些常见的System Call?
写在前面:
1.写博客,做日常工作记录,好记性不如烂笔头嘛;
2.内容非原创,参考的文章已上文列出;
3.如有错误,欢迎指正。
一、audit简介
audit是Linux内核提供的一种审计机制,由于audit是内核提供的,因此,在使用audit的过程中就包含内核空间和用户空间部分:
auditctl
:用户态程序,用于审计规则配置和配置变更
kaudit:内核空间程序,根据配置好的审计规则记录发生的事件
auditd:用户态程序,通过netlink获取审计日志
通常的使用流程
用户通过auditctl配置审计规则
内核的kauditd程序获取到审计规则后,记录对应的审计日志
用户态的auditd获取审计日志并写入日志文件
二、开启auditd服务
systemctl status auditd.service
systemctl start auditd.service
三、相关文件
# 1.应用配置文件
/etc/audit/auditd.conf
# 2.添加规则的文件
/etc/audit/rules.d/audit.rules
# 3.日志所在目录
/var/log/audit/
四、审计规则
- 控制规则:用于更改审计系统本身的配置和设置。
auditctl -b 8192 # 配置buffer大小为8M
auditctl -e 0
auditctl -f 2
auditctl -s
- 文件系统规则:审核对特定文件或目录的任何类型的访问(比较常见)
# 项太多了,举例一个,监控针对/etc/passwd文件的读、写、执行和属性改变,关键字为change_passwd
auditctl -w /etc/passwd -p rwxa -k change_passwd
# 如果要查询,
ausearch -i -k change_passwd
详见附录 auditctl -h
- 系统调用规则:用于监视由任何进程或特定用户进行的系统调用
# -S 设置要监控的系统调用名或者系统调用号,下述命令仅作举例
需要补充例子
同样:详见附录 auditctl -h
五、审计日志查询及分析
# 仅列举比较常用的方式,-k后面跟创建审计规则时设置的关键字
ausearch -i -k ***
审计日志类似:(各个系统可不同)
审计日志-字段分析
-
type:audit消息类型,消息类型有100多种(具体查看请点击:audit消息类型)
比较常见有SYSCALL:代表这条记录是向内核的系统调用触发产生的. -
msg:消息的ID, 它有两个部分组成, 分号之前的是Unix的时间戳,分号之后的是真正的event ID(同一个应用程序的相同system call拥有相同的event ID, 同一个应用的不同system call则不同。)
-
arch: 调用system call的CPU构架
-
syscall:system call的类型(可使用
ausyscall --dump
来显示所有的系统调用) -
success:system call是成功或者失败
-
comm: 出现在任务列表中,应用程序的名称。
-
exe: 二进制程序的解析路径。
-
ses: 用户登录的session ID.
-
auid: audit ID, 针对某一用户,一个进程会被分配一个audit ID, 该audit ID会被传递给子进程,尽管在系统中用户切换,该audit ID将始终保持一致。 这样我们可以针对对某一用户进行trace。
-
a0 to a3: 系统调用的前四个参数的数字化,可以通过ausearch解码查看
-
items: 传递到应用程序的字符串数量
-
ppid:父进程的PID
-
pid:该进程的PID
-
uid: user ID。
-
gid: group ID。
-
euid, suid, fsuid: Effective user ID, set user ID, and file system user ID.
-
egid, sgid, fsgid: Effective group ID, set group ID, and file system group ID.
-
tty: 应用程序开启的终端,这种情况下pseudo-terminal used in an SSH session.
附录1:auditctl -h
[auditadm@localhost ~]$ auditctl -h
usage: auditctl [options]-a <l,a> Append rule to end of <l>ist with <a>ction-A <l,a> Add rule at beginning of <l>ist with <a>ction-b <backlog> Set max number of outstanding audit buffersallowed Default=64-c Continue through errors in rules-C f=f Compare collected fields if available:Field name, operator(=,!=), field name-d <l,a> Delete rule from <l>ist with <a>ctionl=task,exit,user,excludea=never,always-D Delete all rules and watches-e [0..2] Set enabled flag-f [0..2] Set failure flag0=silent 1=printk 2=panic-F f=v Build rule: field name, operator(=,!=,<,>,<=,>=,&,&=) value-h Help-i Ignore errors when reading rules from file-k <key> Set filter key on audit rule-l List rules-m text Send a user-space message-p [r|w|x|a] Set permissions filter on watchr=read, w=write, x=execute, a=attribute-q <mount,subtree> make subtree part of mount point's dir watches-r <rate> Set limit in messages/sec (0=none)-R <file> read rules from file-s Report status-S syscall Build rule: syscall name or number--signal <signal> Send the specified signal to the daemon -t Trim directory watches-v Version-w <path> Insert watch at <path>-W <path> Remove watch at <path>--loginuid-immutable Make loginuids unchangeable once set--backlog_wait_time Set the kernel backlog_wait_time--reset-lost Reset the lost record counter
附录2:systemcall 类型
网上查询的,好多说是看这个文件https://github.com/torvalds/linux/blob/master/arch/sh/include/asm/unistd.h
# 不同系统间存在差距
# 下文只做简单举例,编号代表 类型值
$ ausyscall --dump
Using aarch64 syscall table:
0 io_setup
1 io_destroy
2 io_submit
3 io_cancel
4 io_getevents
5 setxattr
6 lsetxattr
7 fsetxattr
8 getxattr
9 lgetxattr
10 fgetxattr
11 listxattr
12 llistxattr
13 flistxattr
14 removexattr
15 lremovexattr
16 fremovexattr
17 getcwd
18 lookup_dcookie
19 eventfd2
20 epoll_create1
21 epoll_ctl
22 epoll_pwait
23 dup
24 dup3
25 fcntl
26 inotify_init1
27 inotify_add_watch
28 inotify_rm_watch
29 ioctl
30 ioprio_set
31 ioprio_get
32 flock
33 mknodat
34 mkdirat
35 unlinkat
36 symlinkat
37 linkat
38 renameat
39 umount2
40 mount
41 pivot_root
42 nfsservctl
43 statfs
44 fstatfs
45 truncate
46 ftruncate
47 fallocate
48 faccessat
49 chdir
50 fchdir
51 chroot
52 fchmod
53 fchmodat
54 fchownat
55 fchown
56 openat
57 close
58 vhangup
59 pipe2
60 quotactl
61 getdents
62 lseek
63 read
64 write
65 readv
66 writev
67 pread
68 pwrite
69 preadv
70 pwritev
71 sendfile
72 pselect6
73 ppoll
74 signalfd4
75 vmsplice
76 splice
77 tee
78 readlinkat
79 newfstatat
80 newfstat
81 sync
82 fsync
83 fdatasync
84 sync_file_range
85 timerfd_create
86 timerfd_settime
87 timerfd_gettime
88 utimensat
89 acct
90 capget
91 capset
92 personality
93 exit
94 exit_group
95 waitid
96 set_tid_address
97 unshare
98 futex
99 set_robust_list
100 get_robust_list
101 nanosleep
102 getitimer
103 setitimer
104 kexec_load
105 init_module
106 delete_module
107 timer_create
108 timer_gettime
109 timer_getoverrun
110 timer_settime
111 timer_delete
112 clock_settime
113 clock_gettime
114 clock_getres
115 clock_nanosleep
116 syslog
117 ptrace
118 sched_setparam
119 sched_setscheduler
120 sched_getscheduler
121 sched_getparam
122 sched_setaffinity
123 sched_getaffinity
124 sched_yield
125 sched_get_priority_max
126 sched_get_priority_min
127 sched_rr_get_interval
128 restart_syscall
129 kill
130 tkill
131 tgkill
132 sigaltstack
133 rt_sigsuspend
134 rt_sigaction
135 rt_sigprocmask
136 rt_sigpending
137 rt_sigtimedwait
138 rt_sigqueueinfo
139 rt_sigreturn
140 setpriority
141 getpriority
142 reboot
143 setregid
144 setgid
145 setreuid
146 setuid
147 setresuid
148 getresuid
149 setresgid
150 getresgid
151 setfsuid
152 setfsgid
153 times
154 setpgid
155 getpgid
156 getsid
157 setsid
158 getgroups
159 setgroups
160 uname
161 sethostname
162 setdomainname
163 getrlimit
164 setrlimit
165 getrusage
166 umask
167 prctl
168 getcpu
169 gettimeofday
170 settimeofday
171 adjtimex
172 getpid
173 getppid
174 getuid
175 geteuid
176 getgid
177 getegid
178 gettid
179 sysinfo
180 mq_open
181 mq_unlink
182 mq_timedsend
183 mq_timedreceive
184 mq_notify
185 mq_getsetattr
186 msgget
187 msgctl
188 msgrcv
189 msgsnd
190 semget
191 semctl
192 semtimedop
193 semop
194 shmget
195 shmctl
196 shmat
197 shmdt
198 socket
199 socketpair
200 bind
201 listen
202 accept
203 connect
204 getsockname
205 getpeername
206 sendto
207 recvfrom
208 setsockopt
209 getsockopt
210 shutdown
211 sendmsg
212 recvmsg
213 readahead
214 brk
215 munmap
216 mremap
217 add_key
218 request_key
219 keyctl
220 clone
221 execve
222 mmap
223 fadvise64
224 swapon
225 swapoff
226 mprotect
227 msync
228 mlock
229 munlock
230 mlockall
231 munlockall
232 mincore
233 madvise
234 remap_file_pages
235 mbind
236 get_mempolicy
237 set_mempolicy
238 migrate_pages
239 move_pages
240 rt_tgsigqueueinfo
241 perf_event_open
242 accept4
243 recvmmsg
260 wait4
261 prlimit64
262 fanotify_init
263 fanotify_mark
264 name_to_handle_at
265 open_by_handle_at
266 clock_adjtime
267 syncfs
268 setns
269 sendmmsg
270 process_vm_readv
271 process_vm_writev
272 kcmp
273 finit_module
274 sched_setattr
275 sched_getattr
276 renameat2
277 seccomp
278 getrandom
279 memfd_create
280 bpf
281 execveat
282 userfaultfd
283 membarrier
284 mlock2
285 copy_file_range
286 preadv2
287 pwritev2
288 pkey_mprotect
289 pkey_alloc
290 pkey_free
291 statx
292 io_pgetevents
293 rseq
294 kexec_file_load
424 pidfd_send_signal
425 io_uring_setup
426 io_uring_enter
427 io_uring_register
428 open_tree
429 move_mount
430 fsopen
431 fsconfig
432 fsmount
433 fspick
434 pidfd_open
435 clone3
1024 open
1025 link
1026 unlink
1027 mknod
1028 chmod
1029 chown
1030 mkdir
1031 rmdir
1032 lchown
1033 access
1034 rename
1035 readlink
1036 symlink
1037 utimes
1038 stat64
1039 lstat64
1040 pipe
1041 dup2
1042 epoll_create
1043 inotify_init
1044 eventfd
1045 signalfd
1049 newstat
1050 newlstat
1059 alarm
1060 getpgrp
1061 pause
1062 time
1063 utime
1064 creat
1066 futimesat
1067 select
1068 poll
1069 epoll_wait
1070 ustat
1071 vfork
1073 recv
1074 send
1075 bdflush
1076 oldumount
1077 uselib
1078 sysctl
1079 fork
相关文章:

【Linux】安全审计-audit
文章目录 一、audit简介二、开启auditd服务三、相关文件四、审计规则五、审计日志查询及分析附录1:auditctl -h附录2:systemcall 类型 参考文章: 1、安全-linux audit审计使用入门 2、audit详细使用配置 3、Linux-有哪些常见的System Call&a…...

Linux 之查看标准错误码工具
目录 1. Linux 之查看标准错误码工具 1. Linux 之查看标准错误码工具 $ sudo apt install moreutils$ errno -l EPERM 1 不允许的操作 ENOENT 2 没有那个文件或目录 ESRCH 3 没有那个进程 EINTR 4 被中断的系统调用 EIO 5 输入/输出错误 ENXIO 6 没有那个设备或地址 E2BIG 7 参…...

Git企业开发级讲解(五)
📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 文章目录 一、bug 分⽀二、删除临时分支三、小结 一、bug 分⽀ 假如我们现在正在 dev2 分⽀上进⾏开发…...

目录自动清洗
文章目录 前言一、需求分析二、操作步骤详解(标准章节)1. 提取文章目录2. 更改保存目录.txt3. 二级标题前面加4个空格4. 在章字和节字后面添加一个空格5. 在页码前面加上>符号6. 代码完全体 三、进阶一(有章无节小数二级标题)1…...

c++实现Any类,让一个类型指向其他任意类型
在c中,对于以上任务,容易想到的是一个基类类型指向其所有派生类。因此设计一个Any类,其里面有一个成员基类Base类,其派生类可以是数据date,但是你不知道date到底是什么东西,所以需要使用模版。所以其结构为…...

os.path.join函数用法
os.path.join()是Python中用于拼接文件路径的函数,它可以将多个字符串拼接成一个路径,并且会根据操作系统的规则自动使用合适的路径分隔符。 注:Linux用的是/分隔符,而Windows才用的是\。 该函数属于os.path模块,因此在…...

vscode Prettier配置
常用配置项: .prettierrc.json 是 Prettier 格式化工具的配置文件 {"printWidth": 200, // 指定行的最大长度"tabWidth": 2, // 指定缩进的空格数"useTabs": false, // 是否使用制表符进行缩进,默认为 false"singl…...

MLC-LLM 支持RWKV-5推理以及对RWKV-5的一些思考
自从2023年3月左右,chatgpt火热起来之后,我把关注的一些知乎帖子都记录到了这个markdown里面,:https://github.com/BBuf/how-to-optim-algorithm-in-cuda/tree/master/large-language-model-note ,从2023年3月左右到现…...

WPF中行为与触发器的概念及用法
完全来源于十月的寒流,感谢大佬讲解 一、行为 (Behaviors) behaviors的简单测试 <Window x:Class"Test_05.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winf…...

2023-2024华为ICT大赛-计算赛道-广东省省赛初赛-高职组-部分赛题分析【2023.11.18】
2023-2024华为ICT大赛 计算赛道 广东省 省赛 初赛 高职组 部分赛题 分析【2023.11.18】 文章目录 单选题tpcds模式中存在表customer,不能成功删除tpcds模式是( )以下哪个函数将圆转换成矩形( )下列哪个选项表示依赖该D…...

『 MySQL数据库 』数据库之表的约束
文章目录 前言 💻空属性约束(非空约束) 🔖default约束(默认值约束,缺省) 🔖列描述comment 🔖数字类型长度zerofill 🔖主键primary key 🔖📍 追加主键 📍📍 删除主键 &…...

flink 8081 web页面无法被局域网内其他机器访问
实现 http://localhost:8081/#/overview 可以被局域网其他机器访问...

零基础安装分布式数据服务注册系统
一、先安装VM虚拟机,安装最新的ubuntu22系统, 先安装mysql, sudo apt install mysql-server sudo mysql_secure_installation 根据自己需求选择 密码安全级别时,选择n 删除匿名用户?(按y|Y表示是&…...

2023最新最全【OpenMV】 入门教程
1. 什么是OpenMV OpenMV 是一个开源,低成本,功能强大的 机器视觉模块。 OpenMV上的机器视觉算法包括 寻找色块、人脸检测、眼球跟踪、边缘检测、标志跟踪 等。 以STM32F427CPU为核心,集成了OV7725摄像头芯片,在小巧的硬件模块上&a…...

【Java并发编程三】线程的基本使用一
基本使用一 将类继承Runnable,创建Thread,然后调用Thread的start方法启动: package myTest;public class myTest implements Runnable {public static void main(String[] args) throws InterruptedException {myTest test new myTest();Th…...

企业邮箱认证指南:安全与高效的邮箱认证方法
企业邮箱是专门为企业提供的电子邮件服务,安全性和专业性更高。在开始使用企业邮箱之前,很多人会有一些问题,比如企业邮箱需要认证吗、如何开通企业邮箱,以及哪款企业邮箱好。 1、企业邮箱在使用前需要认证吗? 答案是肯…...

Django(八、如何开启事务、介绍长见的字段类型和参数)
文章目录 ORM事务操作开启事务 常见的字段类型和参数ORM还支持用户自定义字段类型ORM常用字段参数外键相关参数 ORM事务操作 引入事务 1.事务的四大特性原子性、一致性、隔离性、持久性 2.相关SQL关键字start transaction;rollback;commit;savapoint; 3.相关重要概念脏读、幻…...

机器学习第5天:多项式回归与学习曲线
文章目录 多项式回归介绍 方法与代码 方法描述 分离多项式 学习曲线的作用 场景 学习曲线介绍 欠拟合曲线 示例 结论 过拟合曲线 示例 结论 多项式回归介绍 当数据不是线性时我们该如何处理呢,考虑如下数据 import matplotlib.pyplot as plt impo…...

MSYS2介绍及工具安装
0 Preface/Foreword 1 MSYS2 官网:MSYS2...

Swift开发中:非逃逸闭包、逃逸闭包、自动闭包的区别
1. 非逃逸闭包(Non-Escaping Closure) 定义:默认情况下,在 Swift 中闭包是非逃逸的。这意味着闭包在函数结束之前被调用并完成,它不会“逃逸”出函数的范围。内存管理:由于闭包在函数返回前被调用…...

栈结构应用-进制转换-辗转相除法
// 定义类class Stack{// #items [] 前边加#变为私有 外部不能随意修改 内部使用也要加#items []pop(){return this.items.pop()}push(data){this.items.push(data)}peek(){return this.items[this.items.length-1]}isEmpty(){return this.items.length 0}size(){return th…...

【Azure 架构师学习笔记】-Azure Storage Account(6)- File Layer
本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Storage Account】系列。 接上文 【Azure 架构师学习笔记】-Azure Storage Account(5)- Data Lake layers 前言 上一文介绍了存储帐户的概述,还有container的一些配置,在…...

idea 环境搭建及运行java后端源码
1、 idea 历史版本下载及安装 建议下载和我一样的版本,2020.3 https://www.jetbrains.com/idea/download/other.html,idea分为专业版本(Ultimate)和社区版本(Community),前期可以下载专业版本…...

掌握Shell:从新手到编程大师的Linux之旅
1 shell介绍 1.1 shell脚本的意义 1.记录命令执行的过程和执行逻辑,以便以后重复执行 2.脚本可以批量处理主机 3.脚本可以定时处理主机 1.2 脚本的创建 #!/bin/bash # 运行脚本时候执行的环境1.3 自动添加脚本说明信息 /etc/vimrc # vim主配置文件 ~/.vimrc # 该…...

有重复元素的快速排序
当涉及到处理重复元素的快速排序时,可以使用荷兰国旗问题的方法,也就是三路划分。下面是使用 Java 实现的示例代码: import java.util.Arrays;public class QuickSort {public static void quickSort(int[] arr, int low, int high) {if (lo…...

Bert浅谈
优点 首先,bert的创新点在于利用了双向transformer,这就跟openai的gpt有区别,gpt是采用单向的transformer,而作者认为双向transformer更能够融合上下文的信息。这里双向和单向的区别在于,单向只跟当前位置之前的tocke…...

产品运营的场景和运营策略
一、启动屏 1.概念 启动屏,特指 APP 产品启动时即显示的界面,这个界面一般会停留几秒钟时间,在这个时间内 APP 会在后台加载服务框架、启动各种服务 SDK 、获取用户地理位置、判断有无新版本、判断用户账户状态以及其他系统级别的…...

C#异常捕获try catch详细介绍
在C#中,异常处理是通过try、catch、finally和throw语句来实现的,它们提供了一种结构化和可预测的方法来处理运行时错误。 C#异常基本用法 try块 异常处理以try块开始,try块包含可能会引发异常的代码。如果在try块中的代码执行过程中发生了…...

切换阿里云ES方式及故障应急处理方案
一、阿里云es服务相关问题及答解 1.1 ES7.10扩容节点时间 增加节点数量需要节点拉起和数据Rebalance两步,拉起时间7.16及以上的新版本大概10分钟以内,7.16以前大概一小时,数据迁移的时间就看数据量了,一般整体在半小时以内 (需进行相关测试验证) 1.2 ES7.10扩容数据节点…...

CTFhub-RCE-过滤空格
1. 查看当前目录:127.0.0.1|ls 2. 查看 flag_890277429145.php 127.0.0.1|cat flag_890277429145.php 根据题目可以知道空格被过滤掉了 3.空格可以用以下字符代替: < 、>、<>、%20(space)、%09(tab)、$IFS$9、 ${IFS}、$IFS等 $IFS在li…...