Linux开启审计

  1. Linux 用户空间审计系统由 auditd、audispd、auditctl、autrace、ausearch 和 aureport 等应用程序组成。下面依次说明:
    1. auditctl : 即时控制审计守护进程的行为的工具,如添加规则等。
    2. auditd :audit 守护进程负责把内核产生的信息写入到硬盘上,这些信息由应用程序和系统活动触发产生。用户空间审计系统通过 auditd 后台进程接收内核审计系统传送来的审计信息,将信息写入到 /var/log/audit/audit.log。
    3. aureport : 查看和生成审计报告的工具。
    4. ausearch : 查找审计事件的工具
    5. auditspd : 转发事件通知给其他应用程序,而不是写入到审计日志文件中。
    6. autrace : 一个用于跟踪进程的命令。类似于 strace,跟踪某一个进程,并将跟踪的结果写入日志文件之中。
  2. 安装
    yum install audit.
  3. audit配置文件
	1) etc/audit/auditd.conf 是守护程序的默认配置文件
	local_events = yes
	write_logs = yes
	log_file = /var/log/audit/audit.log   #审计日志的位置
	log_group = root
	log_format = ENRICHED   #审计日志格式,当设置为RAW时,数据会以从内核中检索到的格式写到日志文件中。当设置为NOLOG时,数据不会写到日志文件中,但是如果用dispatcher选项指定了一个,则数据仍然会发送到审计事件调度程序中。
	
	flush = INCREMENTAL_ASYNC   #多长时间向日志文件中写一次数据。值可以是NONE、INCREMENTAL、DATA和SYNC之一。如果设置为NONE,则不需要做特殊努力来将数据 刷新到日志文件中。如果设置为INCREMENTAL,则用freq选项的值确定多长时间发生一次向磁盘的刷新。如果设置为DATA,则审计数据和日志文件一直是同步的。如果设置为SYNC,则每次写到日志文件时,数据和元数据是同步的。
	
	freq = 50  #如果flush设置为INCREMETNAL,审计守护进程在写到日志文件中前从内核中接收的记录数。
	max_log_file = 8 #设置日志文件大小,以兆字节表示的最大日志文件容量。当达到这个容量时,会执行 max_log_file_action 指定的动作
	
	num_logs = 5  #设置日志文件轮询的数目,它是 0~99 之间的数。如果设置为小于 2,则不会循环日志。如果没有设置 num_logs 值,它就默认为 0,意味着从来不循环日志文件 
	
	priority_boost = 4    #审计应采用多少优先级推进守护进程。必须是非负数。0表示没有变化。
	name_format = NONE
	##name = mydomain
	max_log_file_action = ROTATE  #日志达到指定的max_log_file大小之后开始轮转
	space_left = 75  #以兆字节表示的磁盘空间数量。当达到这个水平时,会采取space_left_action参数中的动作。
	
	space_left_action = SYSLOG   #当磁盘空间量达到space_left中的值时,采取这个动作。有效值为IGNORE、SYSLOG、EMAIL、SUSPEND、SINGLE和 HALT。如果设置为IGNORE,则不采取动作。如果设置为SYSLOG,则向系统日志/var/log/messages写一条警告消息。如果设置为 EMAIL,则从action_mail_acct向这个地址发送一封电子邮件,并向/var/log/messages中写一条警告消息。如果设置为 SUSPEND,则不再向审计日志文件中写警告消息。如果设置为SINGLE,则系统将在单用户模式下。如果设置为HALT,则系统会关闭。
	
	verify_email = yes
	
	action_mail_acct = root   #负责维护审计守护进程和日志的管理员的电子邮件地址。如果地址没有主机名,则假定主机名为本地地址,比如root。必须安装sendmail并配置为向指定电子邮件地址发送电子邮件。
	
	admin_space_left = 50  #以兆字节表示的磁盘空间数量。用这个选项设置比space_left_action更多的主动性动作,以防万一space_left_action没有让 管理员释放任何磁盘空间。这个值应小于space_left_action。如果达到这个水平,则会采取admin_space_left_ action所指定的动作。
	
	admin_space_left_action = SUSPEND  #当自由磁盘空间量达到admin_space_left指定的值时,则采取动作。有效值为IGNORE、SYSLOG、EMAIL、SUSPEND、SINGLE和HALT。与这些值关联的动作与space_left_action中的相同。
	
	disk_full_action = SUSPEND   #如果含有这个审计文件的分区已满,则采取这个动作。可能值为IGNORE、SYSLOG、SUSPEND、SINGLE和HALT。与这些值关联的动作与space_left _action中的相同
	
	disk_error_action = SUSPEND   #如果在写审计日志或循环日志文件时检测到错误时采取的动作。值必须是IGNORE、SYSLOG、SUSPEND、SINGLE和HALT之一。与这些值关的动作与space_left_action中的相同。
	
	use_libwrap = yes
	##tcp_listen_port = 60   #审计服务的监听端口,作为审计服务器使用的时候可以开启
	tcp_listen_queue = 5
	tcp_max_per_addr = 1
	##tcp_client_ports = 1024-65535
	tcp_client_max_idle = 0
	transport = TCP
	krb5_principal = auditd
	##krb5_key_file = /etc/audit/audit.key
	distribute_network = no
	q_depth = 1200
	overflow_action = SYSLOG
	max_restarts = 10
	plugin_dir = /etc/audit/plugins.d
	end_of_event_timeout = 2
	2) /etc/audit/audit.rules 是记录审计规则的文件。首次安装 audit 后, 审计规则文件是空的
	3) /etc/audit/audit.rules     # 根据/etc/audit/rules.d/audit.rules自动生成
  1. 审计服务
    systemctl status auditd.service
  2. 审计日志
    /var/log/audit/audit.log
  3. 审计规则
    vi /etc/audit/rules.d/audit.rules
  4. audit审计规则
	1) audit 审计规则分成三个部分:
		a. 控制规则:这些规则用于更改审计系统本身的配置和设置。
		b. 文件系统规则:这些是文件或目录监视。 使用这些规则,我们可以审核对特定文件或目录的任何类型的访问。
		c. 系统调用规则:这些规则用于监视由任何进程或特定用户进行的系统调用。
	2) 控制规则
	控制规则可以在/etc/audit/audit.rules 中设置。主要包括:
	
	-D #删除所有当前装载的审核规则#
	-b 8192 #在内核中设定最大数量的已存在的审核缓冲区为8Mb
	-e 2 #设置使能标志,设置为0,为关闭了audit,设置为1,则开启audit;当设置为2时,表示锁定,一般在设置完其他规则后最后设置,防止其他人修改规则;任何修改规则的行为都会被拒绝,并且记录审计日志,只有当重启系统后,这个使能标志才可以被修改
	-f 1 #这个选项来决定内核如何处理critical erros:0=silent 1=print  2=panic.默认值为1。设置failure mode to syslog
	3) 文件系统规则
	可以通过 auditctl 命令设置。监控文件系统行为(依靠文件、目录的权限属性来识别)
	
	auditctl -w path -p permissions -k key_name
	-w : 目录或者文件路径
	-p: 描述文件系统监视将触发的权限访问类型,r=读取,w=写入,x=执行,a=属性更改。
	-k:  设置审核规则的筛选关键字
	
	要监控/etc/passwd 文件的修改行为,可以使用这个命令: 
	#auditctl -w /etc/passwd -p wa
	
	审核规则记录了每次读取或者修改/etc/hosts 文件的尝试
	#auditctl -w /etc/hosts -p wa -k hosts_change
	4) 系统调用规则
	监控系统调用可能会引起高负荷的日志活动,这会让内核承受更大的负荷。所以要慎重衡量哪些系统调用需要放到 audit.rules 中。如果审计的是目录的话,只能对该目录本身的属性进行审计。如果想审计下面的文件,需要一一列出。
	auditctl -a [list,action|action,list] -S [Syscall name or number|all] -F field=value -k key_name
	-a: action和list 明确一个事件被记录。action可以为always或者never,list明确出对应的匹配过滤,list可以为:task,exit,user,exclude,filesystem。
	-S: system_call 明确出系统调用的名字,几个系统调用可以写在一个规则里,如-S xxx -S xxx。系统调用的名字可以通过cat /proc/kallsyms | grep sys_  (sys_开头的都表示一个调用)
	-F:  field=value 作为附加选项,修改规则以匹配特定架构、GroupID,ProcessID等的事件。
	
	常见的linux调用可以参考:https://www.shuzhiduo.com/A/QV5ZQLGyJy/
	
	定义记录有哪些文件,特定用户(UID 为 10001)访问和标签的日志条目的规则
	# auditctl -a always,exit -F arch=b64 -F auid=10001 -S open -k userfile 
	说明:userfile 是用户自己设置的一个规则名字,以上的都设置完毕了,就可以生成各种报告了。
  1. 注意事项
    通过 auditctl 命令添加的规则不是永久有效的。 为了让他们在重新启动后有效的,可以将其添加到文件/etc/audit/rules.d/audit.rules 中。
posted @ 2024-06-25 11:14  DBer_ablewang  阅读(2)  评论(0编辑  收藏  举报