当前位置: 首页 > news >正文

【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/

四、审计规则

  1. 控制规则:用于更改审计系统本身的配置和设置。
auditctl -b 8192	# 配置buffer大小为8M
auditctl -e 0
auditctl -f 2
auditctl -s
  1. 文件系统规则:审核对特定文件或目录的任何类型的访问(比较常见)
# 项太多了,举例一个,监控针对/etc/passwd文件的读、写、执行和属性改变,关键字为change_passwd
auditctl -w /etc/passwd -p rwxa -k change_passwd
# 如果要查询,
ausearch -i -k change_passwd

详见附录 auditctl -h

  1. 系统调用规则:用于监视由任何进程或特定用户进行的系统调用
# -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&#xff1a;auditctl -h附录2&#xff1a;systemcall 类型 参考文章&#xff1a; 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企业开发级讲解(五)

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、bug 分⽀二、删除临时分支三、小结 一、bug 分⽀ 假如我们现在正在 dev2 分⽀上进⾏开发…...

目录自动清洗

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

c++实现Any类,让一个类型指向其他任意类型

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

os.path.join函数用法

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

vscode Prettier配置

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

MLC-LLM 支持RWKV-5推理以及对RWKV-5的一些思考

自从2023年3月左右&#xff0c;chatgpt火热起来之后&#xff0c;我把关注的一些知乎帖子都记录到了这个markdown里面&#xff0c;&#xff1a;https://github.com/BBuf/how-to-optim-algorithm-in-cuda/tree/master/large-language-model-note &#xff0c;从2023年3月左右到现…...

WPF中行为与触发器的概念及用法

完全来源于十月的寒流&#xff0c;感谢大佬讲解 一、行为 (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&#xff0c;不能成功删除tpcds模式是&#xff08; &#xff09;以下哪个函数将圆转换成矩形&#xff08; &#xff09;下列哪个选项表示依赖该D…...

『 MySQL数据库 』数据库之表的约束

文章目录 前言 &#x1f4bb;空属性约束(非空约束) &#x1f516;default约束(默认值约束,缺省) &#x1f516;列描述comment &#x1f516;数字类型长度zerofill &#x1f516;主键primary key &#x1f516;&#x1f4cd; 追加主键 &#x1f4cd;&#x1f4cd; 删除主键 &…...

flink 8081 web页面无法被局域网内其他机器访问

实现 http://localhost:8081/#/overview 可以被局域网其他机器访问...

零基础安装分布式数据服务注册系统

一、先安装VM虚拟机&#xff0c;安装最新的ubuntu22系统&#xff0c; 先安装mysql&#xff0c; sudo apt install mysql-server sudo mysql_secure_installation 根据自己需求选择 密码安全级别时&#xff0c;选择n 删除匿名用户&#xff1f;&#xff08;按y|Y表示是&…...

2023最新最全【OpenMV】 入门教程

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

【Java并发编程三】线程的基本使用一

基本使用一 将类继承Runnable&#xff0c;创建Thread&#xff0c;然后调用Thread的start方法启动&#xff1a; package myTest;public class myTest implements Runnable {public static void main(String[] args) throws InterruptedException {myTest test new myTest();Th…...

企业邮箱认证指南:安全与高效的邮箱认证方法

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

Django(八、如何开启事务、介绍长见的字段类型和参数)

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

机器学习第5天:多项式回归与学习曲线

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

MSYS2介绍及工具安装

0 Preface/Foreword 1 MSYS2 官网&#xff1a;MSYS2...

Swift开发中:非逃逸闭包、逃逸闭包、自动闭包的区别

1. 非逃逸闭包&#xff08;Non-Escaping Closure&#xff09; 定义&#xff1a;默认情况下&#xff0c;在 Swift 中闭包是非逃逸的。这意味着闭包在函数结束之前被调用并完成&#xff0c;它不会“逃逸”出函数的范围。内存管理&#xff1a;由于闭包在函数返回前被调用&#xf…...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

RocketMQ延迟消息机制

两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数&#xff0c;对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后&#xf…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

uniapp中使用aixos 报错

问题&#xff1a; 在uniapp中使用aixos&#xff0c;运行后报如下错误&#xff1a; AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...