Audit(审计)介绍
Audit(审计)在Linux系统中,特别是CentOS中,是一个用于监控和记录系统上各种操作的技术手段。Audit的主要功能是为系统管理员提供一个跟踪系统上与安全相关信息的方法。根据预配置的规则,Audit会生成日志条目,以尽可能多地记录系统上所发生的事件的相关信息。
① Audit主要由以下几个部分组成:
-
auditd:Audit守护进程负责把内核产生的信息写入到硬盘上,这些信息由应用程序和系统活动触发产生。用户空间审计系统通过auditd后台进程接收内核审计系统传送来的审计信息,并将这些信息写入到日志文件中,通常是/var/log/audit/audit.log。
-
auditctl:这是一个即时控制审计守护进程行为的工具,用于添加、修改或删除审计规则等。
-
aureport:这是一个查看和生成审计报告的工具,可以根据审计日志生成各种报告,帮助管理员更好地理解系统上的活动情况。
-
ausearch:这是一个查找审计事件的工具,可以根据指定的条件在审计日志中搜索相关事件。
-
audispd:它可以将事件通知转发给其他应用程序,而不是直接写入审计日志文件中。
-
autrace:这是一个用于跟踪进程的命令,类似于strace,可以跟踪某一个进程,并将跟踪的结果写入日志文件之中。
② Audit的主要作用有:
- 安全审计:Audit可以记录系统上的各种活动,包括文件访问、用户登录、进程启动等,帮助管理员了解系统上的安全状况,发现潜在的安全威胁。
- 合规性检查:对于需要遵守特定安全规定或法规的组织来说,Audit可以提供有关系统活动的详细记录,以证明系统符合相关要求。
- 问题追踪:当系统出现问题时,Audit可以提供相关的日志记录,帮助管理员更快地定位问题的原因。
- 说明:Audit无法直接增强系统的安全性,但可以用于发现违反系统安全政策的行为。
③ 工作原理:
- 审计事件通过内核模块记录到审计子系统,这些事件记录包括事件类型、时间戳、主体(发起事件的进程或用户)、客体(受事件影响的对象)等信息。
- 管理员可以使用审计工具(如auditctl、ausearch、aureport等)来查看、分析和处理这些审计事件记录。
④ Audit所记录的安全相关事件通常包括:
- 文件访问和操作:包括文件的读、写、执行等权限变更,以及文件的创建、删除、修改等操作。这些事件对于追踪潜在的安全威胁或内部滥用行为非常有用。
- 用户和系统账户管理:Audit会记录与用户账户和系统账户相关的更改,例如新用户的创建、密码更改、用户组的修改等。这些事件有助于管理员监控账户管理的安全性。
- 系统调用:Audit可以记录系统调用的使用情况,包括哪些进程调用了哪些系统函数,以及调用的参数和返回值。这对于分析潜在的安全漏洞或恶意行为非常关键。
- 进程创建和终止:Audit会记录系统中进程的创建和终止事件,包括进程的ID、父进程ID、启动时间、终止原因等。这些信息有助于管理员了解系统的运行状况和潜在的安全风险。
- 网络连接和会话:Audit可以记录网络连接的建立和断开事件,以及用户会话的启动和结束。这对于监控网络访问和用户活动非常有用,特别是对于那些涉及敏感数据或关键服务的系统。
- 安全策略违规:Audit可以帮助管理员检测安全策略的违规情况,例如未经授权的访问尝试、权限滥用等。通过记录这些事件,管理员可以及时响应并采取措施来防止潜在的安全威胁。
Audit使用
1. 安装audit服务:
sudo yum -y install audit
2. 两个配置文件:
① /etc/audit/auditd.conf
/etc/audit/auditd.conf
是auditd守护进程的主要配置文件,用于定义守护进程的参数和行为。
该文件包含一系列的选项,其中一些常见的选项包括:
-
log_file
:指定审计日志文件的路径,通常是/var/log/audit/audit.log
。 -
log_group
:指定审计日志文件的组所有者,通常是audit
或root
。 -
max_log_file
:指定在轮转之前审计日志文件可以增长到的最大大小(以MB为单位)。 -
max_log_file_action
:定义当日志文件达到max_log_file
时应该采取的操作,如rotate
(轮转)、keep_logs
(保留日志)或ignore
(忽略)。 -
num_logs
:指定要保留的审计日志文件的数量。 -
priority_boost
:定义审计消息的优先级提升级别。 -
dispatcher
:指定用于处理审计事件的插件或脚本的路径。 -
log_format
:定义审计日志的格式,可以是raw
(原始格式)或enhanced
(增强格式)。
sudo cat /etc/audit/auditd.conf## This file controls the configuration of the audit daemon#local_events = yeswrite_logs = yeslog_file = /var/log/audit/audit.loglog_group = rootlog_format = RAWflush = INCREMENTAL_ASYNCfreq = 50max_log_file = 8num_logs = 5priority_boost = 4disp_qos = lossydispatcher = /sbin/audispdname_format = NONE##name = mydomainmax_log_file_action = ROTATEspace_left = 75space_left_action = SYSLOGverify_email = yesaction_mail_acct = rootadmin_space_left = 50.....
这些选项允许系统管理员根据他们的需求配置auditd守护进程的行为。
② /etc/audit/audit.rules
/etc/audit/audit.rules
文件用于定义审计规则,这些规则指定了哪些系统事件应该被记录到审计日志中。审计规则使用auditctl命令的语法,并可以包含多个规则条目。每个规则条目都定义了一个或多个条件和一个或多个操作。
规则的条件可以包括:
-w
:监视对指定文件或目录的访问。-p
:指定要监视的权限类型(如读、写、执行等)。-k
:为规则分配一个关键字,以便后续搜索和分析。-F
:指定其他过滤条件,如用户ID (uid
)、进程ID (pid
)、系统调用号 (S
) 等。-a
:用于添加或修改规则。通常与-w
、-p
、-k
、-F
等参数一起使用-S
:指定要监视的系统调用号-e
:控制auditd的行为。例如,-e 1
启动auditd,-e 0
停止auditd。
规则的操作通常是将匹配的事件记录到审计日志中。
系统管理员可以使用文本编辑器编辑 /etc/audit/audit.rules
文件来定义所需的审计规则,或者使用auditctl命令在运行时动态地添加、删除或修改规则。在修改了规则文件后,通常需要重新启动auditd守护进程或重新加载规则文件以使更改生效。
3. 常见的审计规则示例
① 监视文件或目录的访问:
-w /path/to/directory -p wa -k directory-access
这条规则会监视 /path/to/directory
目录下的文件访问。-p wa
表示监视写(w)和属性(a)更改。-k directory-access
给这个规则设置了一个关键字,方便后续搜索和过滤日志。
② 记录所有与特定用户相关的活动:
-a always,exit -F auid=username -k user-activity
这条规则记录当用户 username
执行任何系统调用并在系统调用结束时,无论成功还是失败,审计系统都应该记录一个审计事件,并使用关键字 user-activity
来标识这些事件。
③ 监视特定的系统调用:
-a always,exit -S chmod -F auid>=1000 -k priv-chmod
这条规则记录当任何用户 ID 大于或等于 1000 的用户执行 chmod
系统调用时,无论结果如何(成功或失败),都应该记录一个审计事件,并使用关键字 priv-chmod
来标识这个事件。
④ 记录进程创建:
-a always,exit -F arch=b64 -S clone,fork,vfork -k process-creation
这条规则记录 在 64 位系统架构上,当 clone
、fork
或 vfork
这三个系统调用完成时(无论成功或失败),审计系统都应该始终记录一个审计事件,并使用关键字 process-creation
来标识这些事件。
4. 要查看与关键字相关的所有事件,运行:
要查看与ssh-access
关键字相关的所有事件,运行:
ausearch -k ssh-access
要实时查看audit日志,你可以使用auditd
的-l
选项(但这通常需要root权限):
sudo auditd -l
补充:Audit日志与syslog、secure的区别
① Audit跟syslog记录的区别
- audit:日志通常更加详细,专注于记录与安全相关的事件,是一个专门用于记录系统安全信息的审计服务。它主要关注于记录核心层的事件,详细记录了事件的各个方面,如时间戳、用户ID、进程ID、文件路径、访问权限、系统调用等,有助于检测和处理攻击、漏洞和安全风险等问题。
- syslog:记录的内容更为广泛,用于记录系统和应用程序的各种事件,包括安全、调试、运行信息等。它不仅可以记录安全事件,还可以记录其他与系统状态、硬件警告、应用软件记录等相关的信息。
举例对比:假设在一个Linux系统中,某个用户尝试访问一个受保护的文件。
- audit会记录这个用户尝试访问文件的详细信息,包括时间戳、用户ID、文件路径、访问类型(读/写/执行)等。
- syslog也会记录这个事件,但可能只会记录一个较为通用的消息,如“用户尝试访问文件”或“文件访问事件”等。
② Audit跟secure的区别
-
Audit它侧重于对整个信息系统的安全性和合规性进行审查,包括安全策略、安全控制、安全管理和安全培训等方面。方法主要通过人工审查、安全检查、安全测试等手段进行,强调评估和审查的准确性和全面性。
-
Secure记录监测则更侧重于实时监控和防范安全威胁和攻击,以保证信息系统和数据的安全性和可靠性。它关注系统、网络、应用程序和数据等实时数据的安全性,并通过实时监控、日志管理、事件响应等技术手段进行。
Secure(安全)记录监测确实可以包含主动响应的功能,主要体现在以下几个方面:
- 威胁检测与预防:Secure记录监测通过实时监控和分析系统、网络、应用程序等的日志和数据,能够检测潜在的威胁和攻击行为。一旦检测到威胁,系统可以立即触发警报,并采取相应的预防措施,如阻止恶意流量的访问、隔离受感染的系统等。
- 自动化响应:一些高级的Secure记录监测工具可以实现自动化响应功能。当检测到安全事件时,这些工具可以自动执行预设的响应策略,如封锁攻击者IP、关闭被攻破的账户、重启服务等,以迅速应对威胁并减少损失。
- 事件关联与分析:Secure记录监测可以收集和分析来自不同来源的安全事件信息,通过事件关联技术将相关的事件进行关联和整合,形成完整的攻击链。这有助于安全人员更好地理解攻击行为,并制定相应的响应策略。
Secure记录监测的实现通常依赖于一些先进的技术和工具,如:
- 日志管理工具:用于收集、存储和分析系统、网络、应用程序等的日志数据。这些工具可以实时或定期地收集日志,并提供搜索、过滤和可视化等功能,帮助安全人员快速定位和分析安全事件。
- 安全信息和事件管理(SIEM)系统:SIEM系统可以将来自不同来源的安全事件信息进行整合和关联,提供全面的安全态势感知和威胁情报。通过SIEM系统,安全人员可以实时监控整个信息系统的安全状况,并快速响应安全事件。
- 安全自动化和响应平台(SOAR):SOAR平台可以自动化安全事件的响应流程,包括事件的识别、分类、调查、处置和报告等。通过SOAR平台,安全人员可以更加高效地应对安全事件,减少人工干预和误操作的风险。
需要注意的是,虽然Secure记录监测可以包含主动响应的功能,但具体的实现方式和效果取决于所使用的技术和工具,以及组织的安全策略和需求。因此,在选择和实施Secure记录监测解决方案时,需要根据组织的实际情况进行综合考虑和评估。
觉得有用,点赞再走啊君~