Linux系统安全–安全审计audit

  • Post author:
  • Post category:linux


1、audit

The Linux Audit Subsystem is a system to Collect information regarding events occurring on the system(s) ,Kernel events (syscall events), User events (audit-enabled programs)。syslog记录的信息有限,主要目的是软件调试,跟踪和打印软件的运行状态,而audit的目的则不同,它是linux安全体系的重要组成部分,是一种“被动”的防御体系。在内核里有内核审计模块,记录系统中的各种动作和事件,比如系统调用,文件修改,执行的程序,系统登入登出和记录所有系统中所有的事件,它的主要目的是方便管理员根据日记审计系统是否允许有异常,是否有入侵等等,说穿了就是把和系统安全有关的事件记录下来。

2、原理

从图 可以看到 audit 是内核中的一个模块,内核的运行情况都会在 audit 中记录,当然这个记录的规则是由超级用户来设置的。内核的 audit 模块是由应用层的一个应用程序 auditd 来控制的。audit 产生的数据都会传送到 auditd 中,然后再由 auditd 进行其它操作。auditd.conf 是 auditd 的配置文件,确定 auditd 是如何启动的,日志文件放在哪里等等。audit.rules 是 audit 的规则文件,确定 audit 的日志中记录哪些操作。它通过一个对 audit 进行控制的应用程序 auditctl 进行操作。root 用户也可以直接调用 auditctl 进行操作。auditd 收到的数据后会有两个去处。默认的是将日志保存在 audit.log 文件中,默认路径/var/log/audit/audit.log。另一个通过 audispd 将日志进行分发。要使用安全审计系统可采用下面的步骤:首先安装软件包。然后设置配置文件、配置常用命令,添加审计规则,然后启用 audit 守护进程并开始进行日志记录,最后通过生成审计报表和搜索日志来周期性地分析数据。

3、相关配置文件

audit 安装后会生成 2 个配置文件: /etc/audit/auditd.conf 和/etc/audit/audit.rules 。/etc/audit/auditd.conf 是守护程序的默认配置文件。/etc/audit/audit.rules 是记录审计规则的文件。首次安装 audit 后, 审计规则文件是空的。

[root@VM_0_11_centos pam.d]# cat /etc/audit/auditd.conf 
#
# This file controls the configuration of the audit daemon
#

local_events = yes
write_logs = yes
log_file = /var/log/audit/audit.log        #audit日志存储位置
log_group = root
log_format = RAW
flush = INCREMENTAL_ASYNC
freq = 50
max_log_file = 8                           #日志文件的最大值,以M为单位
num_logs = 5                               #日志文件轮询的数目,它是 0~99 之间的数。如果设置      为小于 2,则不会循环日志。如果没有设置 num_logs 值,它就默认为 0,意味着从来不循环日志文件
priority_boost = 4
disp_qos = lossy
dispatcher = /sbin/audispd
name_format = NONE
##name = mydomain
max_log_file_action = ROTATE               #设置日志文件到达最大值后的动作,这里选择 ROTATE(轮询)
space_left = 75
space_left_action = SYSLOG
verify_email = yes
action_mail_acct = root
admin_space_left = 50
admin_space_left_action = SUSPEND
disk_full_action = SUSPEND
disk_error_action = SUSPEND
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
enable_krb5 = no
krb5_principal = auditd
##krb5_key_file = /etc/audit/audit.key
distribute_network = no
[root@VM_0_11_centos pam.d]# 
[root@VM_0_11_centos rules.d]# cat audit.rules 
## First rule - delete all
-D

## Increase the buffers to survive stress events.
## Make this bigger for busy systems
-b 8192

## Set failure mode to syslog
-f 1

[root@VM_0_11_centos rules.d]# 

可以通过 auditctl 命令设置。监控文件系统行为(依靠文件、目录的权限属性来识别)

规则格式:

-w 路径

-p 权限

-k 关键字

其中-p 权限的动作分为四种

r — 读取文件或者目录。

w — 写入文件或者目录。

x — 运行文件或者目录。

a — 改变在文件或者目录中的属性。

也可以自己将上述内容加入到文件/etc/audit/rules.d/audit.rules 中即可实现对该文件的监视。

4、使用

1)安装

[root@VM_0_11_centos pam.d]# yum -y install audit*

2)开启服务

[root@VM_0_11_centos rules.d]# systemctl start auditd
[root@VM_0_11_centos rules.d]# systemctl status auditd
● auditd.service - Security Auditing Service
   Loaded: loaded (/usr/lib/systemd/system/auditd.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2020-01-09 09:03:41 MST; 2 days ago
     Docs: man:auditd(8)
           https://github.com/linux-audit/audit-documentation
  Process: 608 ExecStartPost=/sbin/augenrules --load (code=exited, status=0/SUCCESS)
  Process: 581 ExecStart=/sbin/auditd (code=exited, status=0/SUCCESS)
 Main PID: 591 (auditd)
   Memory: 34.4M
   CGroup: /system.slice/auditd.service
           └─591 /sbin/auditd

3)添加规则

添加临时规则
[root@VM_0_11_centos rules.d]# auditctl -w /bin/rm -p x -k removefile
    -w	#指定所要监控的文件或命令
	-p	#监控属性(如x执行)
	-k	#指定关键词(方便在日志中查询)
	-D	#清除规则(临时,不会清除配置文件规则)


添加永久规则的话将规则写入/etc/audit/rules.d/audit.rules文件

4) 查看规则

[root@VM_0_11_centos rules.d]# auditctl -l
-w /bin/rm -p x -k removefile
[root@VM_0_11_centos rules.d]# 

5)查看日志/var/log/audit/audit.log

4d:dd:ab:87:bd:8c:03:3c:fd:0e:05:5c:f1:0e:21:8b:a2 direction=? spid=29965 suid=0  exe="/usr/sbin/sshd" hostname=? addr=? terminal=? res=success'
type=CRYPTO_KEY_USER msg=audit(1578819766.382:759162): pid=29965 uid=0 auid=0 ses=3891 msg='op=destroy kind=server fp=SHA256:40:70:c4:27:c1:6f:0d:de:0d:6c:2d:6d:14:62:36:f7:d4:fc:81:39:04:5b:da:a9:7b:c4:c8:31:7f:5d:e3:ab direction=? spid=29965 suid=0  exe="/usr/sbin/sshd" hostname=? addr=? terminal=? res=success'
type=CRED_REFR msg=audit(1578819766.382:759163): pid=29965 uid=0 auid=0 ses=3891 msg='op=PAM:setcred grantors=pam_unix acct="root" exe="/usr/sbin/sshd" hostname=47.74.209.185 addr=47.74.209.185 terminal=ssh res=success'
type=CONFIG_CHANGE msg=audit(1578819767.034:759164): auid=0 ses=3891 op=add_rule key="removefile" list=4 res=1
type=USER_END msg=audit(1578819767.724:759165): pid=17156 uid=0 auid=0 ses=3891 msg='op=login id=0 exe="/usr/sbin/sshd" hostname=47.74.209.185 addr=47.74.209.185 terminal=ssh res=success'
type=USER_START msg=audit(1578819767.909:759166): pid=17156 uid=0 auid=0 ses=3891 msg='op=login id=0 exe="/usr/sbin/sshd" hostname=47.74.209.185 addr=47.74.209.185 terminal=ssh res=success'

6)ausearch命令

ausearch
	-i		#显示信息更清晰,比如显示日期而不是时间戳
	-k		#指定关键词(auditctl -k指定的关键词)
	-c  commond		#只显示与指令相关日志(如-c rm)
[root@VM_0_11_centos audit]# ausearch -c rm
----
time->Sun Jan 12 02:07:01 2020
type=PROCTITLE msg=audit(1578820021.730:761644): proctitle=726D002D69002D7266002F746D702F746573742E747874
type=PATH msg=audit(1578820021.730:761644): item=1 name="/lib64/ld-linux-x86-64.so.2" inode=21366 dev=fd:01 mode=0100755 ouid=0 ogid=0 rdev=00:00 objtype=NORMAL cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0
type=PATH msg=audit(1578820021.730:761644): item=0 name="/usr/bin/rm" inode=4699 dev=fd:01 mode=0100755 ouid=0 ogid=0 rdev=00:00 objtype=NORMAL cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0
type=CWD msg=audit(1578820021.730:761644):  cwd="/etc/audit/rules.d"
type=EXECVE msg=audit(1578820021.730:761644): argc=4 a0="rm" a1="-i" a2="-rf" a3="/tmp/test.txt"
type=SYSCALL msg=audit(1578820021.730:761644): arch=c000003e syscall=59 success=yes exit=0 a0=101e330 a1=10200c0 a2=f33da0 a3=7ffccaf81360 items=2 ppid=17165 pid=2023 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=3891 comm="rm" exe="/usr/bin/rm" key="removefile"



版权声明:本文为u012967763原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。