audit相关

audit启动

测试了/boot/grub2/grub.cfg 中audit=0,和去除audit=0,以及开启auditd服务等的性能数据:

查看audit的内核模块是否启动
auditctl -s
查看audit内核模块是否启动,
enabled 1 (启动)
如果用户空间的audit没有启动,audit日志无人接管,日志就会写道/var/log/messages下
root@wang-virtual-machine:/home/wang/桌面# auditctl  -s 
enabled 1     enabled为1说明audit内核模块以加载,为0说明没有加载,为2说明规则锁定,所有设置不起作用。
            (这里的enables的值是和audit服务是否启动是没有关系的)
failure 1
pid 610
rate_limit 0
backlog_limit 320
lost 0
backlog 0
backlog_wait_time 15000
loginuid_immutable 0 unlocked

audit服务
[Unit]  
Description=Security Auditing Service  
DefaultDependencies=no  
After=local-fs.target systemd-tmpfiles-setup.service  
Conflicts=shutdown.target  
Before=sysinit.target shutdown.target  
ConditionKernelCommandLine=!audit=0  
RefuseManualStop=yes  
  
[Service]  
ExecStart=/sbin/auditd -n  
## To use augenrules, copy this file to /etc/systemd/system/smzy_auditd.service  
augenrule会把/etc/audit/audit.rules下的规则文件,按照顺序写入到/etc/audit/audit.rules。
#ExecStartPost=-/sbin/augenrules --load  
ExecStartPost=-/sbin/auditctl -R /etc/audit/audit.rules  
ExecReload=/bin/kill -HUP $MAINPID  
Restart=on-failure  
  
[Install]  
WantedBy=multi-user.target  

#ExecStopPost=/sbin/auditctl -R /etc/audit/audit-stop.rules,可以在
服务中添加该命令,当audit服务关闭后,会把所有的配置都删除,这样audit不工作也不会将日志写入到message中。

audit守护进程的配置文件
#
# This file controls the configuration of the audit daemon
#
log_file = /var/log/audit/audit.log  audit日志存放的位置
log_format = RAW
##log_format定义了log日志的储存方式,可选值有RAW和NOLOG,设置成RAW表示日志中存储的内容就是kernel产生的内容,如果设置成NOLOG,所有日志均不会写入磁盘
log_group = root
priority_boost = 4
flush = INCREMENTAL
freq = 20
num_logs = 5  默认保留的日志数目
disp_qos = lossy
##disp_qos定义了dispatcher的缓冲区(128KB)满了的时候的处理方式,可选值:lossy/lossless,
当选择lossy时,如果缓冲区已满,事件会被丢弃。如果选择lossless,则audit进程会等待缓冲队列中有空间时再写入事件
dispatcher = /sbin/audispd
name_format = NONE
##name = mydomain
max_log_file = 6   指定每一个单独的audit log文件的最大的size,单位为M
max_log_file_action = ROTATE   达到最大的日志大小时执行的操作,rotate指轮替。如果设置为KEEP_LOGS,日志不会被覆盖,无论num_Logs设置为多少
space_left = 75    明确出磁盘剩余多少空间时,执行space_left_action指定的动作
space_left_action = SYSLOG  syslog指的是达到space_left设置的大小时会给syslog发出一个warning
action_mail_acct = root
admin_space_left = 50   指出最低的磁盘剩余空间大小
admin_space_left_action = SUSPEND  达到admin_space_left时,停止记录日志
disk_full_action = SUSPEND   当分区上没有空间时,执行的动作。默认为suspend。
disk_error_action = SUSPEND  当分区上出现error,执行的动作。默认为suspend。
##tcp_listen_port = 
tcp_listen_queue = 5
tcp_max_per_addr = 1
##tcp_client_ports = 1024-65535
tcp_client_max_idle = 0
enable_krb5 = no
krb5_principal = auditd
##krb5_key_file = /etc/audit/audit.key

audit的日志切分

当audit的日志被写满后,就会在messages下写入很多的warning:

audit: audit_backlog=8193 > audit_backlog_limit=8192
audit: audit_lost=7035351 audit_rate_limit=0 audit_backlog_limit=8192
audit: backlog limit exceeded

auditd本身有日志切分的功能,auditd使用fprintf函数来记录log,累计每次写log的size,每次写完后都会去检查log的大小,当这个size达到用户配置的max_log_file的大小时,就会shift_logs或rotate_logs(shift_log是对于KEEP_LOGS这种模式而言的,rotate_logs是对ROTATE而言),新的达到切分值的日志命名为audit.log.1,之前的日志audit.log.(num+1)。

static void write_to_log(const char *buf, struct auditd_consumer_data *data)
{
 ...
    rc = fprintf(f, "%s\n", buf);
 ...
     		log_size += rc;
            check_log_file_size(data); //检查日志文件的大小
            check_space_left(data->log_fd, data);
 ... 
  }

static void check_log_file_size(struct auditd_consumer_data *data)
{
...
   if (sz >= config->max_log_size && (config->daemonize == D_BACKGROUND)) {
        switch (config->max_log_size_action)
        {

                case SZ_ROTATE: 
                if (data->config->num_logs > 1) {
                    audit_msg(LOG_NOTICE,
                        "Audit daemon rotating log files");
                    rotate_logs(data, 0);
                }
                break;
                 case SZ_KEEP_LOGS:
                audit_msg(LOG_NOTICE,
                "Audit daemon rotating log files with keep option");
                    shift_logs(data);
                break;
        }

虽然audit有自己的日志方法,但是它也可以和rsyslog一起连用:
rsyslog使用syslog来记录日志,日志的切分是很准确的,audit使用fprintf来记录日志。

可以在/etc/rsyslog.conf配置中添加如下配置,实现按照rsyslog方式来管理audit日志

$outchannel audit,/var/log/audit/audit.log.tmp,2097152,xx_log_dump.sh param1 param2  
### audit表示是outchannel的名称
### /var/log/audit/audit.log.tmp是日志输出的目的文件的名称,即rsyslog要检查大小的文件 
### 2097152表示日志文件的大小阈值 
### xx_log_dump.sh表示日志文件到达阈值后执行的脚本,一般为转储脚本
这样配置后,rsyslog就会从/var/log/audit/audit.log文件中读取日志,然后一条一条的以syslog的方式写入到audit.log.tmp中,因为audit.log.tmp中加入了日期信息,
所以audit.log.tmp会比audit.log文件稍大些,当audit.log.tmp达到2097152这个大小时,就把audit.log切分为audit.log.1并且转储处理。
audit规则配置

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

  • 控制规则:控制audit系统的规则;
  • 文件系统规则:也可以认为是文件监控,可以监控一个特定文件或者一个路径。
  • 系统调用规则: 可以记录特定程序的系统调用。
控制规则
-b  设置在内核中audit缓冲空间的最大值。
-f   这个选项来决定内核如何处理critical erros:0=silent 1=printk        2=panic.默认值为1。
-e  设置使能标志,设置为0,为关闭了audit,设置为1,则开启audit;当设置为2时,表示锁定,一般在设置完其他规则后最后设置,防止其他人修改规则;
任何修改规则的行为都会被拒绝,并且记录审计日志,只有当重启系统后,这个使能标志才可以被修改。
-s 查询audit内核状态。
-l  列出所有当前配置的规则。
-D 删除所有当前加载的规则
定义文件系统规则
auditctl -w path_to_file -p permissions -k key_name
path_to_file 为要做审计的文件或路径; 
permissions为要记录的许可:rwx 文件或路径的读写执行,a 修改文件或路径的属性。 
key_name 为一个可选字符串,明确哪些规则产生的这些日志。过滤时可以使用。

例如:

定义规则,记录所有对/etc/passwd文件的写入以及属性修改,可以输入如下命令:
# auditctl -w /etc/passwd -p wa -k passwd_changes
定义系统调用规则
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 明确出系统调用的名字
field=value 作为附加选项,修改规则以匹配特定架构、GroupID,ProcessID等的事件。

定义一个规则,当每次使用系统调用adjtimex或者settimeofday时,并且为64位架构,记录审计日志,命令可以输入如下:
auditctl -a always,exit -F arch=b64 -S adjtimex -S settimeofday -k time_change
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
审计功能是Cloudera Navigator中的一个重要功能,它可以从选定的集群服务收集事件,并提供了查看和搜索审计日志的功能。用户可以在控制台中查看审计日志,并使用可配置的过滤器进行搜索,以快速获取相关信息。此外,用户还可以将审计日志导出为CSV或JSON文件。\[2\] 根据引用\[1\]和引用\[3\]的内容,审计日志可以记录用户的越权访问行为,但无法显示越权访问的目录或文件的详细信息,只能看到要访问的文件或目录名。在不同的服务中,审计日志的详细程度也有所不同。例如,在HDFS上的操作可以看到查看文件信息、将文件移动到回收站等操作;在Hive和Impala中的操作可以看到建表、查询、删除表等操作;在Hue中可以看到使用了哪些服务以及做了什么操作。同时,审计日志还支持通过API导出为JSON或CSV格式。\[3\] 因此,通过审计功能可以对集群中的操作进行记录和监控,以便进行安全审计和故障排查。 #### 引用[.reference_title] - *1* *2* *3* [0698-6.2.0-Navigator审计日志查看对应用户的操作](https://blog.csdn.net/Hadoop_SC/article/details/100800622)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值