查看原文
其他

用Audit守护进程配置和审计Linux系统

胥峰 翻译 新钛云服 2022-01-05

Linux Audit守护进程是一个可以审计Linux系统事件的框架。在本文中,我们一起看看安装、配置和使用这个框架来执行Linux系统和安全审计。


审计目标

通过使用一个强大的审计框架,系统可以追踪很多事件类型来监控和并审计它。这样的例子包括:


  • 审计文件访问和修改

  • 看看谁改变了一个特殊文件

  • 检测未授权的改变

  • 监控系统调用和函数

  • 检测异常,比如崩溃的进程

  • 为入侵检测目的设置“导火线”

  • 记录各个用户使用的命令


组件

这个框架本身有数个组件:


内核:

  • audit:钩在内核中来捕获事件并将它们发送到auditd


二进制文件:

  • auditd:捕捉事件并记录它们(记录在日志文件中)的守护进程

  • auditctl:配置auditd的客户端工具

  • audispd:多路复用事件的守护进程

  • aureport:从日志文件(auditd.log)中读取内容的报告工具

  • ausearch:事件查看器(查看的内容是auditd.log)

  • autrace:使用内核中的审计组件来追踪二进制文件

  • aulast:和上一个类似,但是使用的是审计框架

  • aulastlog:和lastlog类似,但是也使用的是审计框架

  • ausyscall:映射系统调用ID和名字

  • auvirt:展示和审计有关虚拟机的信息


文件:

  • audit.rules:auditctl使用,它读取该文件来决定需要使用什么规则

  • auditd.conf:auditd的配置文件


安装

Debian/Ubuntu使用命令:apt-get install auditd audispd-plugins

Red Hat/CentOS/Fedora:通常已经安装了(包:audit和audit-libs)


配置

2个文件管理审计守护进程的配置,一个用于守护进程本身(auditd.conf),另一个是用于auditctl工具的规则(audit.rules)。


auditd.conf

文件auditd.conf对Linux audit守护进程的配置聚焦在它应该在哪里以及如何记录事件。它也定义了如何应对磁盘满的情况、如何处理日志轮转和要保留的日志文件数量。通常,对大多数系统来说,默认配置是足够的。


audit.rules

为了配置应该审计什么日志,审计框架使用了一个名为audit.rules的文件。

和大多数情况一样,从零开始而不加载任何规则。通过用-l参数来运行auditctl,我们可以确定使用中的规则。


[root@host ~]# auditctl -l
No rules


万一加载了任何规则的话,用-D参数运行auditctl来删除已加载规则。

现在是时候来监控点东西了,比如/etc/passwd文件。通过定义要查看的路径和权限,我们在这个文件上放一个观察点:


auditctl -a exit,always -F path=/etc/passwd -F perm=wa


通过定义path选项,我们告诉审计框架来监视什么目录或者文件。权限决定了什么类型的访问将触发一个事件。虽然这里的权限看起来类似文件的权限,但是要注意,在这2者之间有一个重大的区别。这里的4个选项是:


  • r = 读取

  • w = 写入

  • x = 执行

  • a = 属性改变


通过使用ausearch工具,我们可以快速的追踪对文件的访问和找到相关的事件。


这个输出里面的一些重点是:

事件的时间(time)和对象的名称(name),当前的工作路径(cwd),相关的系统调用(syscall),审计用户ID(auid)和在这个文件上执行行为的二进制(exe)。请注意,auid定义了在登录过程中的原始用户。其他的用户ID字段可能指向了一个不同的用户,取决于在触发一个事件时在使用的实际用户。


转换系统调用

系统调用是以数字类型的值来记录的。因为在不同的服务器架构之间,这些值会有重叠,所以当前的服务器架构也记录了下来。


通过使用uname -m,我们可以确定服务器架构并使用ausyscall 来确定数字为188的系统调用代表了什么。


[root@host audit]# ausyscall x86_64 188

setxattr


现在,我们知道了这是属性的变化,这是讲得通的,因为我们定义了观察点,在属性变化(perm=a)的时候触发一个事件。


使用了临时规则并想再用老的规则?使用一个文件来刷新审计规则:

auditctl -R /etc/audit/audit.rules


审计Linux的进程

和使用strace类似,审计框架有一个名为autrace的工具。它使用了审计框架并增加了合适的规则来捕获信息并记录。收集到的信息可以使用ausearch来展示。

执行一次追踪:


使用ausearch来展示相关的文件:

按照用户来审计文件访问

审计框架可以用于监控系统调用,包括对文件的访问。如果你希望知道一个特定的用户ID访问了什么文件,使用像下面的这样一条规则:


auditctl -a exit,always -F arch=x86_64 -S open -F auid=80


-F arch=x86_64定义了使用什么架构(uname -m)来监控正确的系统调用(一些系统调用在不同的架构之间是不同的)。

-S open 选择 “open”系统调用

-F auid=80 相关的用户ID

这种类型的信息对于入侵检测确实是很有用的,而且对于在Linux系统上取证也确实是很有用的。


自动化

因为Linux审计守护进程可以提供有价值的审计数据,Lynis会检查这个框架的存在。如果没有这个框架,Lynis会建议你安装它。


另外,Lynis会执行一些测试来判定日志文件、可用的规则等等。

为了有效的入侵检测目的,和入侵检测系统集成对于事件发生的时候发现它们并采取恰当的行动是很关键的。


后记

审计守护进程有更多的用途。在本博客未来的文章中将列出其他例子。如果你是严肃对待Linux平台审计的,Linux审计框架一定是个很好的朋友!


原文链接

https://linux-audit.com/configuring-and-auditing-linux-systems-with-audit-daemon/


译者:胥峰

新钛云服首席解决方案架构师,十二年运维经验,曾长期在盛大游戏担任运维架构师,参与盛大游戏多款大型端游和手游的上线运维。资深Linux专家,拥有工信部高级信息系统项目管理师资格,著有畅销书《Linux运维最佳实践》,译著《DevOps:软件架构师行动指南》是DevOps领域的经典著作。


版权声明:本文为新钛云服原创编译,谢绝转载,否则将追究法律责任!


精品好文:


了解新钛云服


厉害了,新钛云服在2018博鳌企业论坛上连获三项大奖!

新钛云服CEO冯祯旺受邀出席华东互联网峰会并发表演讲

从盛大游戏G云COO到独自创业!2018中国财经峰会专访新钛云服CEO冯祯旺

刚刚,新钛云服荣获中国财经峰会2018最具投资价值奖!

新钛云服,打造最专业的Cloud MSP+,做企业业务和云之间的桥梁

王者归来,Linux运维专家胥峰加入新钛云服!

听说,这家公司的展台直接送股票!

没错,我们就是这样豪!GOPS送小爱、整箱签名书、数百定制笔记本和手机支架

新钛云服架构师祝祥获得华为精英赛优胜奖



新钛云服出品的精品技术干货

开源搜索引擎solr介绍

使用Sensu简单有效地监控云基础架构

Ceph杀手锏CRUSH和主流分布式存储一致性哈希算法

开源搜索引擎solr介绍

运维人的终身成长,从清单管理开始|万字长文!

ASP.Net性能监控和优化入门

Oracle的RMAN恢复经验分享

99%运维不知道,系统文件md5变了,竟然是因为......

超实用,物理服务器RAID扩容详解

OpenStack Rocky:专注于裸机云管理,快速升级以及硬件加速

Chef进行自动化和编排的优缺点分析

高效的容器使用需要软件定义的数据中心

Ceph BlueStore 与 FileStore:利用 Micron NVMe SSD 进行性能比较

django快速上手指南

OpenStack与ZStack深度对比:架构、部署、计算存储与网络、运维监控等

孩子通CTO李文杰:孩子通运维2.0的升级之路。

什么是云原生?

IT混合云战略:是什么、为什么,如何构建?

运行Docker:物理机vs虚拟机,五方面详细对比!

: . Video Mini Program Like ,轻点两下取消赞 Wow ,轻点两下取消在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存