• FreeBSD_11-系统管理——{Part_7-AUDIT}


     相关概念

    • EVENT
      • 事件,审计系统计录的对象,包括用户登陆、网络与文件操作等各方面
    • CLASS
      • 类,对具有相同或类似属性的事件的分組
    • RECORD
      • 记录,审计系统生成的日志中的每一条信息
    • TRAIL
      • 账目,即日志文件
    • SELECTION EXPRESSION
      • 筛选表达式,用于提取有效审计信息的語法
    • PRESELECTION
      • 預设筛选,用于指定审计日志的记录范围
    • REDUCTION
      • 简化,或称为浓縮,是指从日志中提取重要内容的过程,也包括经过一段較长时间之后,对旧的审计日志中非重要部分进行清除以释放磁盘空间的行为

    系统支持

    • # /etc/rc.conf[.local]
      auditd_enable="YES"
      # /usr/src/sys/amd64/conf/MyKernel
      options                AUDIT 

    配置

    • CONFIG FILE:/etc/security/audit_*
      • audit_class:类定义,其包含的具体内容定义在 audit_event 中,可以自定义其归属关系
      • audit_control:行为控制,针对整个系统
      • audit_event:可审计事件信息表
      • audit_user:对具体每个用户的行为控制
      • audit_warn:自带的警示脚本
    • 預置的 CLASS 定义
    • all    all    #匹配所有事件类别
      aa    authentication and authorization  #认証 
      ad    administrative    #系统管理行为
      ap    application    #应用程序定义的行为
      cl    file close    #关闭文件相关的系统調用
      ex    exec    Audit program execution  #程序运行
      fa    file attribute access    #文件属性查看,即 stat 之类的系统調用
      fc    file create     #文件创建
      fd    file delete     #文件册除
      fm    file attribute modify    #文件属性更改
      fr    file read    #文件防问/读取
      fw    file write    #文件更改或写入
      io    ioctl    #针对 ioctl 系统調用
      ip    ipc    #进程间通信,包括 POSIX 与 SYSTEM V 两类
      lo    login_logout    #系统登入与登出
      na    non attributable    #无属主事件,即登陆之前的行为,如失败的登陆尝试等
      no    invalid class    #无效事件,无关归类的事件
      nt    network    #网络请求与接受事件
      ot    other    #其它小概率事件
      pc    process    #审计进程的行为,如某进程調用 exec 类系统調用执行了哪些額外操作
    • /etc/security/audit_user
      • 以冒号分割为三个字段,分别为用户名、总是审计的事件、从不审计的事件
      • # 留空  表示记录成功或失败的事件
        # +  表示仅记录执行成功的事件
        # -  表示仅记录执行失败的事件
        # ^  表示记录既没有返回成功也没有返回失败的事件
        # ^-  没有返回失败信号的事件
        # ^+  没有返回成功信号的事件
        # 以上规则同样适用于 audit_control 文件中的 flags 与 naflags 字段
        John:lo,+ex:no #对 John 用户的登入登出及成功执行的程序进行审计;无法归类的事件不审计 www:fc,+ex:no #对 www 用户的文件创建与成功执行程序事件进行审计;无法归类的事件不审计
    • /etc/security/audit_control
      • 参数含义
      • dir:/var/audit  #存放审计日志的目录
        dist:off  #当设定为 on 或 yes 时,所有审计日志文件都会在 /var/audit/dist 下创建更链接,供 auditdistd 使用,通过网络进行安全的分布式存储
        flags:lo,aa  #指定对所有用户都审计的事件类别
        host:10.1.1.2  #指定主机名称 或 IP,追加在每条审计记录的 header 之前;若使用主机名,在 /etc/hosts 中静态添加,不要依靠 DNS
        naflags:lo  #指定对哪些类别中的无法判定执行主体的事件进行审计
        minfree:5  #存放日志的目录所在文件系统需要为其它应用保留的空间百分比,如 5 代表預留 5%
        policy:cnt,argv  #全局策略参数(cnt:某个事件审计失败时継续运行,argv:)
        filesz:10M  #指日志大小上限,0 表示不限制;达到指定大小时,会创建一个新文件継续记录,可以使用的单位:B(Bytes)、K(Kilobytes)、M(Megabytes)、G(Gigabytes),指定的值小于 512K 时,会被忽略
        expire-after:60d AND 1G  #指定审计日志失效条件,可以为时间(单位:y/d/h/s)或 size (单位:G/M/K/B)形式,可以用 AND、OR 逻辑进行組合,如本例指创建时间超过 60 天的日志会被清除,但如果所有日志的总大小没有超过 1G,则不清除,直到总大小达到 1G 

    管理

    • audit 用户組中的成员拥有对 /var/audit 下审计日志的查看权限
    • 审计日志文件是以 BSD 二进制形式存储的,必須使务对应的工具进行管理:praudit、auditreduce
    • praudit
    • #将审计日志文件转换为可读文件格式,每个事件的记录起始位置用 header 与 trailer 标识;-x 表示转换为 xml 格式
      praudit [-x] /var/audit/AUDITFILE #示例: header,133,10,execve(2),0,Mon Sep 25 15:58:03 2006, + 384 msec exec arg,finger,John #命令及参数,此处意为执行了 finger John 命令 path,/usr/bin/finger #所执行的命令的绝对路径 attribute,555,root,wheel,90,24918,104944 #这是对 finger 二进制文件当时的属性的描述 subject,robert,root,wheel,root,wheel,38439,38032,42086,128.232.9.100 #audit user ID, effective user ID and group ID, real user ID and group ID, process ID, session ID, port ID, and login address return,success,0 #执行結果 trailer,133 #結束标识
      # 仅提取 John 用户的审计日志
      auditreduce -u John /var/audit/AUDITFILE | praudit
      # 以类似于 top 命令的界面形式动态监控
      # 注意:监控行为本身会产生大量审计记录,影响视图可读性,此方法不适用于过于精细的审计对象

      praudit /dev/auditpipe #auditpipe 设备默认只有 root 可以訪问,若要授权 audit 用户組中的成员使用,在 /etc/devfs.rules 中添加 add path 'auditpipe*' mode 0440 group audit
    • 日志轮转(rotate)
      • 审计日志的分段存储,由 audit 自身管理,不能使用 newsyslog
      • 手动分段的命令是:audit -n,执行后会创建一个新的日志文件供内核写入;可以写入 crontab 中定时轮转
    • 日志压缩
      • 可以在 /etc/security/audit_warn 中添加自定义脚本内容
      • # 日志文件会在正常关闭的时候执行压缩
        # 如:关机或到达临界条件需要关闭旧的日志文件进行 rotate 时
        if [ "$1" = closefile ]; then #其中的 $1、closefile、$2 等是系统預先定义好的变量与标识
                xz $2
        fi 

    ...

  • 相关阅读:
    windows下postgreSQL安装与启动
    Map、Set、List区别
    责任链模式实战
    Java的URL类(二)
    linux 之分区和文件系统
    linux 之网络命令
    linux 之用户管理
    linux 权限之acl
    我的hadoop学习之路
    Hadoop 学习之Docker
  • 原文地址:https://www.cnblogs.com/hadex/p/6068492.html
Copyright © 2020-2023  润新知