【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 buffers
                                      allowed 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>ction
                                      l=task,exit,user,exclude
                                      a=never,always
    -D                                Delete all rules and watches
    -e [0..2]                         Set enabled flag
    -f [0..2]                         Set failure flag
                                      0=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 watch
                                      r=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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

redis实战篇(2)

优惠卷秒杀 通过本章节&#xff0c;我们可以学会Redis的计数器功能&#xff0c; 结合Lua完成高性能的redis操作&#xff0c;同时学会Redis分布式锁的原理&#xff0c;包括Redis的三种消息队列 3、优惠卷秒杀 3.1 -全局唯一ID 每个店铺都可以发布优惠券&#xff1a; 当用户抢…

卷积神经网络(CNN)鲜花的识别

文章目录 前期工作1. 设置GPU&#xff08;如果使用的是CPU可以忽略这步&#xff09;我的环境&#xff1a; 2. 导入数据3. 检查数据 二、数据预处理1. 加载数据2. 可视化数据3. 再次检查数据4. 配置数据集 三、构建CNN网络四、编译五、训练模型六、模型评估 前期工作 1. 设置GP…

IP池大小重要吗?

我们在寻找靠谱的IP代理时也经常遇到一个问题&#xff0c;IP代理池是什么&#xff1f;大小有何影响。今天就来跟大家普及一下&#xff0c;IP代理池大小的是否重要&#xff1f; 一、IP代理池是什么&#xff1f; I\P代理池是一个存储大量代理服务器IP地址的集合。它是一个由多个…

【MMC/SD/SDIO】读写操作

SD 总线是基于命令和数据流&#xff0c;它们由一个开始 Bit 发起&#xff0c;由一个停止 Bit 结束。 Command&#xff1a;命令开始一个操作。命令由 Host 驱动&#xff0c;或者给单卡&#xff08;寻址命令&#xff09;&#xff0c;或者给所有连接的卡&#xff08;广播命令&…

【操作系统】虚拟内存浅析

文章目录 虚拟内存的概念虚拟内存的实现请求分页存储管理缺页中断机构地址变换机构页面置换算法页面分配策略调入页面的时机 虚拟内存的概念 所谓的虚拟内存&#xff0c;是具有请求调入和置换功能&#xff0c;从逻辑上对内存容量加以扩充的一种存储器系统。他的组成如下&#…

微软 Gradle 强强联手,Gradle 构建服务器正式开源!

作者&#xff1a;Nick Zhu - Senior Program Manager, Developer Division At Microsoft 排版&#xff1a;Alan Wang Gradle 构建服务器 (Build Server for Gradle) 在九月份&#xff0c;我们宣布 Microsoft 和 Gradle 联手探索了一种基于 Build Server Protocol&#xff08;B…

【SpringMvc】SpringMvc +MyBatis整理

&#x1f384;欢迎来到边境矢梦的csdn博文&#x1f384; &#x1f384;本文主要梳理 Java 框架 中 SpringMVC的知识点和值得注意的地方 &#x1f384; &#x1f308;我是边境矢梦&#xff0c;一个正在为秋招和算法竞赛做准备的学生&#x1f308; &#x1f386;喜欢的朋友可以关…

为什么Go是后端开发的未来

近年来&#xff0c;Go 编程语言的流行度迅速增加。Go 最初由 Google 开发&#xff0c;迅速成为后端开发中最受欢迎的语言之一&#xff0c;特别是在分布式系统和微服务的开发中。本文将讨论为什么 Go 是后端开发的未来。 Go 简介 Go&#xff0c;又称为 Golang&#xff0c;是由…

【图数据库实战】HugeGraph架构

一、概述 作为一款通用的图数据库产品&#xff0c;HugeGraph需具备图数据的基本功能&#xff0c;如下图所示。HugeGraph包括三个层次的功能&#xff0c;分别是存储层、计算层和用户接口层。 HugeGraph支持OLTP和OLAP两种图计算类型&#xff0c;其中OLTP实现了Apache TinkerPop3…

如何从Android手机恢复已删除的联系人

联系人应该是最重要的信息之一。 如果您不小心从Android手机中删除了联系人&#xff0c;该怎么办&#xff1f; 如果不容易找回丢失的联系人&#xff0c;您可以使用奇客数据恢复安卓版。 从Android的手机中恢复已删除的联系人 只需删除Android联系人&#xff0c;然后您就可以通…

【Java 进阶篇】揭秘 JQuery 广告显示与隐藏:打造令人惊艳的用户体验

在当今互联网时代&#xff0c;广告已经成为网页中不可忽视的一部分。然而&#xff0c;如何通过巧妙的交互设计&#xff0c;使广告既能吸引用户的眼球&#xff0c;又不会给用户带来干扰&#xff0c;成为了许多前端开发者需要思考的问题之一。在这篇博客中&#xff0c;我们将深入…

Pytorch1.7复现PointNet++点云分割(含Open3D可视化)(文末有一个自己做的书缝识别项目代码)

毕设需要&#xff0c;复现一下PointNet的对象分类、零件分割和场景分割&#xff0c;找点灵感和思路&#xff0c;做个踩坑记录。 下载代码 https://github.com/yanx27/Pointnet_Pointnet2_pytorch   我的运行环境是pytorch1.7cuda11.0。 训练 PointNet代码能实现3D对象分类、…

centos7中安装Nginx和使用Nginx详细操作

环境&#xff1a; 准备了三台centos7虚拟机:192.168.213.4、192.168.213.5、192.168.213.6。 一、安装 三台虚拟机都安装下面的步骤执行&#xff0c;安装Nginx&#xff0c;为后面的使用演示使用。 1、安装必备组件: sudo yum install yum-utils2、配置yum源 在下面的文件目录…

详解自动化测试之 Selenium

目录 1. 什么是自动化 2.自动化测试的分类 3. selenium&#xff08;web 自动化测试工具&#xff09; 1&#xff09;选择 selenium 的原因 2&#xff09;环境部署 3&#xff09;什么是驱动&#xff1f; 4. 一个简单的自动化例子 5.selenium 常用方法 5.1 查找页面元素&…

如何合理估算 Java 线程池大小

前 言 Java 中的线程创建会产生显著的成本。创建线程会消耗时间&#xff0c;增加请求处理的延迟&#xff0c;并且涉及 JVM 和操作系统的大量工作。为了减轻这些开销&#xff0c;线程池发挥了作用。 在本文中&#xff0c;我们将深入研究确定理想线程池大小的艺术。经过微调的线…

【C++】模版-初阶

目录 泛型编程--模版 函数模版 类模版 泛型编程--模版 函数模版 如何实现一个通用的交换函数呢?void Swap(int& left, int& right){int temp left;left right;right temp;}void Swap(double& left, double& right){double temp left;left right;righ…

基于ssm+vue交通事故档案系统

摘要 摘要是对文章、论文或其他文本的主要观点、结论和关键信息的简洁概括。由于你没有提供具体的文章或主题&#xff0c;我将为你创建一个通用的摘要。 本文介绍了一种基于SSM&#xff08;Spring Spring MVC MyBatis&#xff09;和Vue.js的交通事故档案管理系统的设计与实现…

设计模式-备忘录模式-笔记

动机&#xff08;Motivation&#xff09; 在软件构建过程中&#xff0c;某些对象的状态在转换过程中&#xff0c;可能由于某种需要&#xff0c;要求程序能够回溯到对象之前处于某个点时的状态。如果使用一些公有接口来让其他对象得到对象的状态&#xff0c;便会暴露对象的细节…

ROS服务(Service)通信:通信模型、Hello World与拓展

服务通讯是基于请求响应模式的&#xff0c;是一种应答机制。 用于偶然的、对时时性有要求、有一定逻辑处理需求的数据传输场景。 一、服务通讯模型 服务是一种双向通讯方式&#xff0c;它通过请求和应答的方式传递消息&#xff0c;该模型涉及到三个角色&#xff1a; Master…

USART(1)

什么是USART 单片机上有的许多的外设 单片机通过这些外设实现特殊的功能 如果单片机想要和蓝牙模块实现数据的传输那么就也需要单片机有串口模块来和蓝牙模块的串口进行连接 相互传输数据 在单片机上的串口就叫USART USART就是单片机上的外设 来实现串口之间的通信功能 USART名…