来自 安全 2022-06-09 15:30 的文章

抗ddos_阿里云高防_怎么办

抗ddos_阿里云高防_怎么办

使用osquery进行审计:第一部分-Linux审计框架简介Palantirfollow2018年12月14日·8分钟阅读

在整个企业的osquery中,我们报告了在大型环境中部署osquery的高级概述,但仅简要介绍了实现细节。这篇博文是由两部分组成的系列文章中的第一篇,我们将深入介绍osquery的审计功能。这篇文章通过扩展Linux审计框架的基本概念奠定了基础。第二部分重点介绍具体的osquery配置和实现步骤。osquery最强大的功能之一是它能够记录进程执行和网络连接。在osquery术语中,这些特性通常被称为进程和套接字审计。然而,我们已经观察到,许多人试图启用这些功能,却没有充分理解底层机制和性能含义。如果不深入了解osquery的审核功能是如何运行的,用户可能会遇到性能问题、资源冲突和疑难解答。此外,cc防御软件linux,配置不当的审计可能会导致数据不完整,从而降低检测和警报程序的效率。这篇文章将描述审计是如何工作的,并就如何实施和微调审计配置提供实用指导。

术语

开始,我们将清楚地定义在本文中使用的术语。当我们谈到"审计"时,我们指的是一个处理(通常记录)源自内核中审计子系统的审计事件的程序。总结一下我们将在这些文章中使用的术语:

审计框架/子系统:Linux内核中的审计组件,它根据可配置的规则集生成审计消息。审计:使用审计子系统生成审计事件以进行审计的过程审计消费者:一个处理从内核发出的审核事件,哪个免费高防的cdn好,如auditd或osqueryAuditd:负责收集审核事件并将其记录(通常记录到文件系统)的userland守护进程

关于审核,osquery和auditd的作用几乎相同。这两个守护进程都处理审计子系统生成的传入审计事件,并生成以某种方式记录或处理的输出。在我们开始讨论osquery之前,我们将解释审计子系统是如何工作的。

了解审计

今天Linux内核中存在的审计功能是围绕Linux内核的2.6版引入的,其主要目标是允许更好地内省与安全相关的操作系统事件,如文件修改和系统调用。审计通过存储在文件系统(通常位于/etc/audit的子目录)上的一组规则进行配置和管理。有3种不同类型的审核规则:

控制规则:允许修改审核系统的行为及其部分配置。文件系统规则:也称为文件监视,允许审核对特定文件或目录的访问。系统调用规则:允许记录任何指定程序进行的系统调用。

本文仅涉及控制和系统调用(syscall)规则。下面的列表显示了audit.rules文件被osquery更新后的一个示例:

#此文件包含加载的auditctl规则#每当通过initscripts启动审核守护程序时。#规则只是传递给auditctl的参数#第一条规则-删除所有-D#增加缓冲区以生存压力事件。#对于繁忙的系统使其更大-b 1024#可以在这行下面随意添加。请参阅auditctl手册页-a always、exit-S execve-a always、exit-S bind-a always、exit-S connect

前两条规则是控制规则。它们通过删除任何预先存在的规则和设置缓冲区积压大小来修改审计的核心功能。接下来的三个规则是系统调用规则,它们告诉审计子系统始终监视此系统调用,并在系统调用退出时进行监视。系统调用规则的语法是:

auditctl-a action,filter-S system_call-F field=value-k key_name

系统调用通常是用户空间中的程序与操作系统内核通信的方式。上图中显示的系统调用规则是在启用进程和套接字审核时由osquery加载的规则。要启用进程事件,记录execve()系统调用:

execve()-执行程序

要启用套接字事件,bind()和connect()系统调用被记录:

bind()-为socketconnect()分配一个地址-在socket上启动连接

需要注意的是,上面列出的三个系统调用并不是系统上所有可能的进程和网络活动的综合。此外,osquery不支持处理所有可能的系统调用。例如,osquery不会记录进程分叉和克隆,因为这些操作使用fork()和clone()系统调用,并且osquery无法对其进行本机解析。此外,正如osquery问题#5084中所述,此时也不支持传入网络连接和非阻塞套接字上的连接。要确定特定程序进行哪些系统调用,可以使用strace:

strace curl google.com 2>&1 | egrep'execve | bind | connect'execve(/bin/curl),curl,"google.com"],[/*22 vars*/]=0连接(3,{sa_family=AF_INET,sin_port=htons(80),sin_addr=INET_addr("216.58.194.174")},16)=-1 EINPROGRESS(操作正在进行)

使用auditctl配置审计参数

从命令行更改审计的核心功能,您可以使用auditctl.

root@localhost#auditctl-启用1故障0pid 2021rate_limit 0backlog_limit 1024lost 0backlog 0

auditctl允许您配置: