【Linux】安全审计-audit

这篇具有很好参考价值的文章主要介绍了【Linux】安全审计-audit。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

参考文章:

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

linux 关闭audit,Linux学习,操作系统,linux,安全,运维

三、相关文件

# 1.应用配置文件
/etc/audit/auditd.conf
# 2.添加规则的文件
/etc/audit/rules.d/audit.rules
# 3.日志所在目录
/var/log/audit/

3.1应用配置文件

举例:
linux 关闭audit,Linux学习,操作系统,linux,安全,运维

# 配置项解析,只列举了一部分
1.log_file:审计日志文件的完整路径;
2.log_format:写日志时使用的格式;
3.flush:多长时间向日志文件中写一次数据。(值可以是NONE、INCREMENTAL、DATA和SYNC之一。如果设置为NONE,则不需要做特殊努力来将数据刷新到日志文件中。如果设置为INCREMENTAL,则用freq选项的值确定多长时间发生一次向磁盘的刷新。如果设置为DATA,则审计数据和日志文件一直是同步的。如果设置为SYNC,则每次写到日志文件时,数据和元数据是同步的。)
4.freq:如果flush设置为INCREMETNAL,审计守护进程在写到日志文件中前 从内核中接收的记录数。
5.num_logs:max_log_file_action:如果没有设置num_logs值,它就默认为0,意味着从来不循环日志文件。设置为ROTATE时要保存的日志文件数目。必须是0~99之间的数。如果设置为小于2,则不会循环日志。如果递增了日志文件的数目,就可能有必要递增/etc/audit/audit.rules中的内核backlog设置值,以便留出日志循环的时间。
6.space_left:以兆字节表示的磁盘空间数量。当达到这个水平时,会采取space_left_action参数中的动作。
7.space_left_action:当磁盘空间量达到space_left中的值时,采取这个动作。有效值为IGNORE、SYSLOG、EMAIL、SUSPEND、SINGLE和 HALT。
	7.1如果设置为IGNORE,则不采取动作。
	7.2如果设置为SYSLOG,则向系统日志/var/log/messages写一条警告消息。
	7.3如果设置为 EMAIL,则从action_mail_acct向这个地址发送一封电子邮件,并向/var/log/messages中写一条警告消息。
	7.4如果设置为 SUSPEND,则不再向审计日志文件中写警告消息。
	7.5如果设置为SINGLE,则系统将在单用户模式下。如果设置为SALT,则系统会关闭。
8.action_mail_acct:负责维护审计守护进程和日志的管理员的电子邮件地址。如果地址没有主机名,则假定主机名为本地地址,比如root。必须安装sendmail并配置为向指定电子邮件地址发送电子邮件。
9.admin_space_left:以兆字节表示的磁盘空间数量。这个值应小于space_left。如果达到这个水平,则会采取admin_space_left_ action所指定的动作。(用这个选项设置比space_left更多的主动性动作,以防万一space_left_action没有让管理员释放任何磁盘空间。)
10.admin_space_left_action:当自由磁盘空间量达到admin_space_left指定的值时,则采取动作。有效值为IGNORE、SYSLOG、EMAIL、SUSPEND、SINGLE和HALT。与这些值关联的动作与space_left_action中的相同。
11.disk_full_action:如果含有审计文件的分区已满,则采取这个动作。可能值为IGNORE、SYSLOG、SUSPEND、SINGLE和HALT。与这些值关联的动作与space_left _action中的相同。(提示:如果不循环审计日志文件,则含有/var/log/audit/的分区可能变满并引起系统错误。因此,建议让/var/log/audit/位于一个单独的专用分区。)
12.disk_error_action:如果在写审计日志或循环日志文件时检测到错误时采取的动作。值必须是IGNORE、SYSLOG、SUSPEND、SINGLE和HALT之一。与这些值关的动作与space_left_action中的相同。

四、审计规则

  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 ***

审计日志类似:(各个系统可不同)
linux 关闭audit,Linux学习,操作系统,linux,安全,运维
审计日志-字段分析

  • 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文章来源地址https://www.toymoban.com/news/detail-766132.html

# 不同系统间存在差距
# 下文只做简单举例,编号代表 类型值 
$ 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的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Oracle】设置FGA(Fine-Grained Audit)细粒度审计

    【声明】文章仅供学习交流,观点代表个人,与任何公司无关。 编辑|SQL和数据库技术(ID:SQLplusDB) 收集Oracle数据库内存相关的信息 【Oracle】ORA-32017和ORA-00384错误处理 FGA(Fine-Grained Audit)细粒度审计是Oracle提供的一种数据库审计方法,用于创建定制的审计设置。 可以通过调用Or

    2024年01月24日
    浏览(31)
  • 解决Hadoop审计日志hdfs-audit.log过大的问题

    新搭建的Hadoop环境没怎么用,就一个环境天天空跑,结果今天运维告诉我说有一台服务器磁盘超过80%了,真是太奇怪了,平台上就跑了几个spark测试程序,哪来的数据呢? 既然是磁盘写满了,那首先就要找到具体是什么数据写满的磁盘。 用df查看,是根目录,还不是数据盘;

    2024年02月14日
    浏览(60)
  • 从零学习Linux操作系统 第二十二部分 企业域名解析服务的部署及安全优化

    关于dns的名词解释:dns: domain name service(域名解析服务) 关于客户端: /etc/resolv.conf dns指向文件 A记录 ##ip地址叫做域名的Address 记录 SOA ##授权起始主机 关于服务端 bind 安装包 named 服务名称 /etc/named.conf 主配置文件 /var/named 数据目录 端口 53 关于报错信息: 1.no servers could be reach

    2024年02月22日
    浏览(35)
  • Linux安全之auditd审计工具使用说明

      audited是Linux审核系统的用户空间组件。它负责将审核记录写入磁盘。查看日志是通过ausearch或aureport实用程序完成的。审核系统或加载规则的配置是使用auditctl实用程序完成的。在启动过程中,/etc/audit/audit.rules中的规则由auditctl读取并加载到内核中。另外,还有一个augenr

    2024年02月04日
    浏览(36)
  • Linux(Ubuntu)系统临时IP以及静态IP配置(关闭、启动网卡等操作)

    前提是Linux下的网络桥接不能用,不能通过识别网卡来添加IP地址,只能通过静态写死的方式去设置IP 对于CentOS版本下的静态IP的配置可以参考这篇 Linux系统静态IP配置(CentOS) Linux终端输入: sudo ifconfig 192.168.XXX.XXX 或者 su root 进入root用户下( su ubuntu ,ubuntu是用户名再退回来

    2024年02月13日
    浏览(33)
  • 【Linux&网络安全】Linux操作系统安全配置(超全超详细)

    查看账号 在我们Linux系统当中,默认的情况下,所有的系统上的帐号与一般身份使用者,还有root的相关信息, 都是记录在/etc/passwd这个文件内的。至于个人的密码则是记录在/etc/shadow这个文件下。 此外,Linux所有的群组名称都纪录在/etc/group内!这三个文件可以说是Linux系统里

    2024年02月01日
    浏览(29)
  • Linux操作系统安全配置

    一、服务相关命令 systemctl enable 服务名 #开机自启动 systemctl disable 服务名 #禁用开机自启动 systemctl stop 服务名 #停止服务 systemctl start 服务名 #启动服务 systemctl restart 服务名 #重启服务 systemctl status 服务名 #查看服务状态 service 服务名 start|stop|restart #启动/停止/重启 服务 chkcon

    2023年04月26日
    浏览(36)
  • 【网络安全】-Linux操作系统—操作系统发展历史与Linux

    操作系统(Operating System,简称OS)是管理计算机硬件与软件资源的系统软件,它是计算机系统的核心与基石。操作系统的发展历史可以追溯到20世纪50年代。 初期的操作系统 在计算机技术的早期,操作系统并不存在。那时,计算机使用一种叫做批处理系统的方式来运行程序。

    2024年02月03日
    浏览(49)
  • Linux操作系统安全加固指导

    适用版本 redhat5.x,6.x,7.x centos5.x,6.x,7.x suse9、10、11、12 加固要求 检查口令生存周 加固方法 在文件/etc/login.defs中设置 PASS_MAX_DAYS 不大于标准值,PASS_MAX_DAYS   90,如果该文件不存在,则创建并按照要求进行编辑。 检查方法 使用命令: cat /etc/login.defs |grep PASS_MAX_DAYS 结果中

    2023年04月21日
    浏览(38)
  • Linux操作系统的安全相关介绍

            Linux操作系统的安全模型、访问控制、安全策略和加密机制是确保系统安全的重要组成部分。下面将详细介绍这些方面。          安全模型         Linux操作系统的安全模型基于传统的Unix安全模型,主要包括以下核心概念: 1. **用户和组**:Linux系统中的每

    2024年04月16日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包