auditctl - 协助控制内核审计系统的实用程序

 

概要

       auditctl[options]

 

描述

       auditctl程序用于控制行为,获取状态,以及在2.6内核的审计系统中添加或删除规则。

 

选项

       -bbacklog

              设置允许的未完成审计缓冲区的最大数量(内核默认值= 64)如果所有缓冲区都已满,则查询故障标志

              由内核采取行动。

 

       -e[0..2]

              设置启用标志。当通过0时,可以暂时禁用审计。当1作为参数传递时,它会

              启用审核。要锁定审计配置以使其不能更改,请传递2作为参数。锁定配置 -

              意图是任何人希望此功能处于活动状态的audit.rules中的最后一个命令。任何尝试改变

              此模式下的配置将被审计和拒绝。只能通过重新启动机器来更改配置。

 

       -f[0..2]

              设置故障标志0 =silent 1 = printk 2 = panic。此选项允许您确定您希望内核如何处理关键错误。

              咨询此标志的示例条件包括:到用户空间审计守护程序的传输错误,积压限制

              超出,超出内核内存,并超过速率限制。默认值为1.安全环境可能需要设置

              这到2

 

       -h帮助

 

       -i从文件读取规则时忽略错误

 

       -l每行列出所有规则1。这可以采取一个关键选项(-k)。

 

       -kkey在审核规则上设置过滤器键。过滤器键是可以长达31个字节长的任意文本字符串。它可以

              唯一标识由规则生成的审核记录。典型的用法是当你有几个规则一起满足a

              安全要求。可以使用ausearch搜索键值,以便无论哪个规则触发了事件,您都可以

              找到它的结果。该键还可以用于删除全部(-D)和列表规则(-l)以选择具有特定键的规则。你可以

              如果您希望能够以多种方式搜索记录的事件,或者如果您有audispd,则对规则有多个键

              插件使用一个键来帮助其分析。

 

       -m文本

              将用户空间消息发送到审计系统。这只能由root用户完成。

 

       -p[r | w | x | a]

              为文件系统监视设置权限过滤器。 r =读,w =写,x =执行,a =属性更改。这些权限不是

              标准文件权限,而是那种可以做这种事情的系统调用。读写系统调用是省略 -

              从这一套,因为他们会压倒原木。但是对于读或写,打开的标志看看什么

              请求权限。

 

       -q装载点,子树

              如果你有一个现有的目录监视和绑定或移动挂载另一个子树在被监视的子树,你需要告诉

              内核使子树被装载等同于被监视的目录。如果子树已经挂载在

              时间发出目录监视,子树被自动标记为观看。请注意两者之间的逗号分隔

              值。省略它会导致错误。

 

       -r速率

              设置限制在消息/秒(0 =无)。如果该速率不为零并且被超过,则内核查询失败标志

              行动。默认值为0

 

       -R文件

              从文件中读取规则。规则必须是每行一个,并且按照它们要执行的顺序。规则文件必须是

              root拥有,其他用户不可读,否则将被拒绝。规则文件可以通过启动嵌入注释

              行以''字符。从文件读取的规则与在命令行上输入的规则相同,但它们除外

              不在前面加上auditctl(因为auditctl是执行文件的那个)。

 

       -s报告状态。请注意,pid0表示审计守护程序未在运行。

 

       -t在安装命令后修剪子树。

 

       - 列表,行动

              使用操作将规则附加到列表的结尾。请注意分隔两个值的逗号。省略它会导致错误。的

              以下描述有效的列表名称:

 

              任务向每个任务列表添加规则。此规则列表仅在创建任务时使用 - fork()或

                          clone()由父任务调用。当使用此列表时,您应该只使用在任务cre-

                          例如uidgid等。

 

              entrysyscall条目列表中添加规则。此列表在进入系统调用时使用,以确定是否发生审计事件

                          应该创建。

 

              exit将规则添加到系统调用退出列表。此列表在退出系统调用时使用,以确定是否发生审计事件

                          应该创建。

 

              user向用户消息过滤器列表中添加规则。此列表由内核用于过滤源自用户的事件

                          空间,然后将它们转发到审计守护程序。应该注意,唯一有效的字段是:uid

                          auidgidpid。所有其他字段将被视为不匹配。

 

              exclude将规则添加到事件类型排除筛选器列表。此列表用于过滤不希望看到的事件。

                          例如,如果您不想看到任何avc消息,您将使用此列表来记录。消息类型

                          你不希望看到的是msgtype字段。

 

       以下描述规则的有效操作:

 

              从不会生成审核记录。这可以用于抑制事件生成。一般来说,

                          位于列表顶部而不是底部的sions。这是因为事件触发第一个匹配规则。

 

              总是分配一个审计上下文,总是在syscall入口时间填充它,并且总是在syscall出口写出一条记录

                          时间。

 

       - 列表,动作

              使用操作将规则添加到开始列表。

 

       -dlistaction

              使用操作从列表中删除规则。仅当该规则与系统调用名称和字段名完全匹配时,才会删除该规则。

 

       -D删除所有规则和手表。这可以采取一个关键选项(-k)。

 

       -S[Syscall名称或号码| all]

              可以使用任何系统调用名称或数字。也可以使用“全部”这个词。如果这个系统调用是由一个程序,然后启动一个

              审计记录。如果给定字段规则并且未指定系统调用,则它将默认为所有系统调用。您还可以指定mul-

              通过在同一规则中使用多个-S选项,可以在同一规则中调整系统调用。这样做可以提高性能,因为规则较少

              需要进行评估。如果你在一个双拱系统,如x86_64,你应该知道,auditctl只是采取的文本,

              查找本机arch(在这种情况下为b64),并将该规则发送到内核。如果没有附加拱形导向件,

              它将适用于3264位的SYSCALLS。这可能有不良影响,因为不能保证

              例如,打开的系统调用在32位和64位接口上具有相同的编号。你可能想要控制这个和写2个规则,

              一个与拱等于b32和一个与b64,以确保内核找到您打算的事件。

 

       -F[n = v | n= v | n <v | n> v | n <= v | n> = v | nv | namp; v]

              构建规则字段:名称,操作,值。您最多可以在单个命令行上传递64个字段。每个人都必须开始

              -F。每个场方程彼此联合以触发审计记录。支持8个运算符 - 相等,不是

              等于,小于,大于,小于或等于和大于或等于位掩码和位测试。位测试

              将“和”的值并检查它们是否相等,位掩码只是“ands”的值。可以改为使用用户ID的字段

              有用户名;程序会将名称转换为用户ID。组名也是如此。有效字段为:

 

              a0a1a2a3

                          分别是系统调用的前4个参数。请注意,不支持字符串参数。这是因为

                          内核被传递一个指向字符串的指针。触发指针地址值不太可能工作。所以,什么时候

                          使用这个,你应该只使用数字值。这很可能在复用的平台上使用

                          套接字或IPC操作。

 

              arch系统调用的CPU体系结构。拱可以发现做'uname-m'。如果你不知道你的弓

                          机器,但是你想使用32位系统调用表和你的机器支持32位,你也可以使用b32

                          拱。同样适用于64位系统调用表,可以使用b64。这样,你可以编写规则

                 有些拱独立,因为家庭类型将被自动检测。但是,系统调用可以是特定的和

                          什么在x86_64可用,可能不可用在ppc arch指令应该在-S选项前面

                          auditctl知道使用哪个内部表来查找系统调用号。

 

              auid用户登录的原始ID。它的审计uid的缩写。有时它被称为loginuid

                          可以使用文本或数字。

 

              devmajor设备主要编号

 

              devminor设备少数

 

              dir要观看的目录的完整路径。这将在目录及其整个子树上放置一个递归监视。应该

                          只能在退出列表中使用。请参见“-w”。

 

              egid有效组ID

 

              euid有效用户ID

 

              exit从系统调用退出值。如果退出代码是一个errno,你也可以使用文本表示。

 

              fsgid文件系统组ID

 

              fsuid文件系统用户ID

 

              filetype目标文件的类型。可以是filedirsocketsymlinkcharblock或者fifo

 

              gidID

 

              inodeInode编号

 

              key这是另一种设置过滤器键的方法。请参阅上面关于-k选项的讨论。

 

              msgtype这用于匹配消息类型编号。它应该只在排除过滤器列表上使用。

 

              obj_user资源的SE Linux用户

 

              obj_role资源的SE Linux角色

 

              obj_type资源的SE Linux类型

 

              obj_lev_low资源的SE Linux低级

 

              obj_lev_high

                          资源的SE Linux高级

 

              path要观察的文件的完整路径。只应在退出列表中使用。

 

              perm文件操作的权限过滤器。请参见“-p”。只应在退出列表中使用。你可以使用这个没有speci-

                          fying一个系统调用,内核将选择满足请求的权限的系统调用。

 

              persOS个性号

 

              pid进程ID

 

              ppid父进程ID

 

              subj_user程序的SE Linux用户

 

              subj_role程序的SE Linux角色

 

              subj_type程序的SE Linux类型

 

              subj_sen程序的SE Linux灵敏度

 

              subj_clr程序的SE Linux清除

 

              sgid保存的组ID。请参阅getresgid2)手册页。

 

              success如果退出值> = 0,则为true / yes,否则为false /no。在编写规则时,使用1表示true / yesa

                          0表示假/

 

              suid保存的用户ID。请参阅getresuid2)手册页。

 

              uid用户ID

 

       -w路径

              在路径中插入文件系统对象的监视。您不能将表插入顶级目录。这是被禁止的

              内核。通配符也不受支持,并将生成警告。手表的工作方式是跟踪inode

              内部。如果对文件进行观察,则与在系统调用规则上使用-F路径选项相同。如果你戴上手表

              一个目录,它与在系统调用规则上使用-F dir选项相同。书写表的-w形式是向后兼容的,

              可行性和基于系统调用的形式更具表达性。与大多数系统调用审计规则不同,手表不会影响性能

              基于发送到内核的规则的数量。使用手表时,唯一有效的选项是-p-k。如果你需要

              任何花哨像审计特定用户访问文件,然后使用syscall审计表单与pathdir字段。看到

              示例“部分中的将一种形式转换为另一种形式的示例。

 

       -W路径

              在路径中删除文件系统对象的监视。

 

性能提示

       每个程序的每个系统调用评估Syscall规则。如果你有10个系统调用规则,你的系统上的每个程序都会延迟

       在审计系统期间系统调用每个。太多的系统调用规则会损害性能。尝试结合多达

       您可以在过滤器,操作,键和字段相同时使用。例如:

 

       auditctl-a exitalways -S打开-F成功= 0

       auditctl-a exitalways -S truncate -F success = 0

 

       可以重写为一条规则:

 

       auditctl-a exitalways -S open -S truncate -F success = 0

此外,尽量在可行的情况下使用文件系统审计。这提高了性能。例如,如果你想捕获所有

       失败的打开和截断像上面,但只关心/ etc中的文件,并不关心/ usr/ sbin,它可能

       使用此规则:

 

       auditctl-a exitalways -S open -S truncate -F dir = / etc -F success = 0

 

       这将是更高的性能,因为内核不会评估它每个和每个系统调用。它将由文件系统处理

       审计代码并且仅检查与文件系统相关的系统调用。

 

例子

       查看特定程序所产生的所有系统调用:

 

       auditctl-a entryalways -S all -F pid = 1005

 

       查看特定用户打开的文件:

 

       auditctl-a exitalways -S打开-F auid = 510

 

       要查看未成功的打开电话:

 

       auditctl-a exitalways -S打开-F成功= 0

 

       观看文件以进行更改(2种表达方式):

 

       auditctl-w / etc / shadow -p wa

       auditctl-a exitalways -F path = / etc / shadow -F perm = wa

 

       要递归地观察目录以进行更改(2种表达方式):

 

       auditctl-w / etc / -p wa

       auditctl-a exitalways -F dir = / etc / -F perm = wa

 

文件

       /etc/audit/audit.rules