• linux audit审计(5)--audit规则配置


        audit可以配置规则,这个规则主要是给内核模块下发的,内核audit模块会按照这个规则获取审计信息,发送给auditd来记录日志。

    规则类型可分为:

    1、控制规则:控制audit系统的规则;

    2、文件系统规则:也可以认为是文件监控,可以监控一个特定文件或者一个路径。

    3、系统调用规则:可以记录特定程序的系统调用。

        audit规则可以通过auditctl,在命令行里输入,这些设置的规则为临时的,当系统重启后就不存在了。可以通过配置/etc/audit/audit.rules文件,当每次audit服务启动后,都会从这个文件来加载规则。

        auditctl,这个命令可以配置audit规则,audit根据这些规则来决定哪些事件会被记录。The auditctl program is used to control the behavior, get status, and add or delete rules into the 2.6 kernel's audit system.

    控制规则:

    -b  设置在内核中audit缓冲空间的最大值。

    -f   这个选项来决定内核如何处理critical erros:0=silent 1=printk 2=panic.默认值为1。

    -e  设置使能标志,设置为0,为关闭了audit,设置为1,则开启audit;当设置为2时,表示锁定,一般在设置完其他规则后最后设置,防止其他人修改规则;任何修改规则的行为都会被拒绝,并且记录审计日志,只有当重启系统后,这个使能标志才可以被修改。

    -s 查询audit内核状态。如:

    linux-xdYUnA:/var/log/audit # auditctl -s
    enabled 1
    failure 1
    pid 27106
    rate_limit 0
    backlog_limit 8192
    lost 106978588
    backlog 0

    -l  列出所有当前配置的规则。

    -D 删除所有当前加载的规则。

    定义文件系统规则:

    auditctl -w path_to_file -p permissions -k key_name

    path_to_file 为要做审计的文件或路径;

    permissions为要记录的许可:rwx 文件或路径的读写执行,a 修改文件或路径的属性。

    r — read access to a file or a directory.
    wwrite access to a file or a directory.
    x — execute access to a file or a directory.
    a — change in the file's or directory's attribute.

    key_name 为一个可选字符串,明确哪些规则产生的这些日志。过滤时可以使用。

    如下举例:

    定义规则,记录所有对/etc/passwd文件的写入以及属性修改,可以输入如下命令:

    ~]# auditctl -w /etc/passwd -p wa -k passwd_changes

    记录所有对/etc/selinux/目录的写入以及属性修改,可以输入如下命令:

    ~]# auditctl -w /etc/selinux/ -p wa -k selinux_changes

    记录所有执行了/sbin/insmod命令,向内核插入模块的行为,输入如下命令:

    ~]# auditctl -w /sbin/insmod -p x -k module_insertion

    定义系统调用规则:

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

    action和filter 明确一个事件被记录。action可以为always或者never,filter明确出对应的匹配过滤,filter可以为:task,exit,user,exclude。

    system_call 明确出系统调用的名字,几个系统调用可以写在一个规则里,如-S xxx -S xxx。系统调用的名字可以在/usr/include/asm/unistd_64.h文件中找到。

    field=value 作为附加选项,修改规则以匹配特定架构、GroupID,ProcessID等的事件。具体有哪些字段,可以参考man linux  https://linux.die.net/man/8/auditctl

    例如:

    定义一个规则,当每次使用系统调用adjtimex或者settimeofday时,并且为64位架构,记录审计日志,命令可以输入如下:

    ~]# auditctl -a always,exit -F arch=b64 -S adjtimex -S settimeofday -k time_change

    一个文件被user ID为1000或者更大的用户删除,或重命名,记录审计,命令如下:

    ~]# auditctl -a always,exit -S unlink -S unlinkat -S rename -S renameat -F auid>=1000 -F auid!=4294967295 -k delete

    注意,-F auid!=4294967295 这个是为了排除login UID没有被设置的用户。

    也可以通过系统调用规则,来定义文件系统规则,如下的系统调用规则,与-w /etc/shadow -p wa的文件系统规则等同:

    ~]# auditctl -a always,exit -F path=/etc/shadow -F perm=wa
  • 相关阅读:
    ThreadPoolExecutor线程池参数设置技巧
    函数式接口
    Mac下进入MySQL命令行
    Java8 特性
    Java8 :: 用法 (JDK8 双冒号用法)
    事务传播
    新版IDEA配置tomcat教程(2018)
    Java8 Map的compute()方法
    Spring 普通类与工具类调用service层
    简单工厂(三)——JDK源码中的简单工厂
  • 原文地址:https://www.cnblogs.com/xingmuxin/p/8716396.html
Copyright © 2020-2023  润新知