Auditbeat日志审计方案

【架构】

整个架构分采集器和存储、查询三个部分。

【采集器】

采集器使用Auditbeat进行审计日志采集。

【存储】

采集后的日志直接输出到ElasticSearch,考虑到我们的日志较少切Auditbeat具备重传功能,因此,第一个版本先使用单节点的ElasticSearch进行试运行,实际运行过程中做好ElasticSearch的监控,遇到ElasticSearch故障时可以及时启动。

【查询】

查询使用Kibana,与ElasticSearch对接,进行日志分析和监控。

【配置管理】

通过Ansible来管理Auditbeat,Auditbeat安装在各个主机上,如果有版本升级或者审计规则修改一般是大规模批量升级,通过Ansible可以很方便的管理批量的主机升级,配合Auditbeat的动态读取审计配置可以很方便的进行审计规则的调整,不需要重启Auditbeat。

【进化版】

【安装部署】

【安装ElasticSearch】

版本:elasticsearch-7.9.2

安装环境:JDK1.8

【安装步骤】

  1. 下载elasticsearch-7.9.2-linux-x86_64.tar.gz安装包

下载地址:

https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.9.2-linux-x86_64.tar.gz

  1. 解压到安装目录,修改config/elasticsearch.yml,配置如下

cluster.name: es-audit

  1. 启动elasticsearch

  ./bin/elasticsearch -d

说明:本次为单机部署,只设置好集群名称,为后续的集群扩容做准备。

【路径说明】

logs:日志存放路径

data:数据存放路径

config:配置文件存放路径,elasticsearc.yml用来配置端口、集群、日志路径、数据路径等,jvm.options用来配置JVM的启动参数,根据需要的运行内存可以调整该参数。

卸载ElasticSearch

通过tar包安装的ElasticSearch只需要删除ElasticSearch目录即可,数据和日志都在该目录下。

【安装Auditbeat】

版本:auditbeat-7.9.2

【RPM 安装auditbeat-7.9.2-1.x86_64】

注意使用Auditd模块,有的系统需要先关闭auditd服务,执行” service auditd stop”。

【安装】

1、通过RPM安装

curl -L -O https://artifacts.elastic.co/downloads/beats/auditbeat/auditbeat-7.9.2-x86_64.rpm

sudo rpm -vi auditbeat-7.9.2-x86_64.rpm

2、通过RPM安装后系统通过service 命令启动进程

默认安装在/etc/auditbeat/目录

启动:

service auditbeat start

停止:

service auditbeat stop

状态:

service auditbeat status

【RPM卸载auditbeat-7.9.2-1.x86_64】

1、rpm查询安装包

rpm -qa|grep beat

查询已经安装的包信息如下:

auditbeat-7.9.2-1.x86_64

2、rpm卸载安装包

rpm -e auditbeat-7.9.2-1.x86_64

【添加审计】

让审计规则动态生效

1、修改auditbeat.yml,配置动态加载,添加如下配置:

auditbeat.config.modules:

  path: ${path.config}/modules.d/*.yml

  reload.enabled: true

  reload.period: 10s

说明:

path:制定动态的目录,当目录下的文件发生变化时,auditbeat会监听到变化,重新加载配置让新规则生效。

reload.enabled:配置是否启动动态加载,true:启动,false:不启动

reload.period:检查配置变化的频率,例如10s表示每10秒检查一次,建议配置不要低于1s,对审计来说10s完全足够了。

2、结合步骤一,我们需要创建modules.d目录,将自己的配置放在该目录下,例如,创建auditd.yml文件,配置audit的审计规则,配置如下:

- module: auditd

# Load audit rules from separate files. Same format as audit.rules(7).

#audit_rule_files: [ '${path.config}/audit.rules.d/*.conf' ]

audit_rules: |

## Define audit rules here.

## Create file watches (-w) or syscall audits (-a or -A). Uncomment these

## examples or add your own rules.

## If you are on a 64 bit platform, everything should be running

## in 64 bit mode. This rule will detect any use of the 32 bit syscalls

## because this might be a sign of someone exploiting a hole in the 32

## bit API.

#对/etc/group、/etc/passwd、/etc/gshadow文件做审计,记录用户身份验证的变化

-w /etc/group -p wa -k identity

-w /etc/passwd -p wa -k identity

-w /etc/gshadow -p wa -k identity

-w /etc/shadow -p wa -k identity

#记录文件打开、修改等因没有权限或不被允许的事件

-a always,exit -F arch=b32 -S open,creat,truncate,ftruncate,openat,open_by_handle_at -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -F key=access

-a always,exit -F arch=b32 -S open,creat,truncate,ftruncate,openat,open_by_handle_at -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -F key=access

-a always,exit -F arch=b64 -S open,truncate,ftruncate,creat,openat,open_by_handle_at -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -F key=access

-a always,exit -F arch=b64 -S open,truncate,ftruncate,creat,openat,open_by_handle_at -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -F key=access

#当用户执行一些类似于 whoami,ls 以及 lsblk 的 shell 命令时,kibana 中就会发现这些事件。euid 是用户的有效ID。0 代表会获取 root 用户和 uid >=1000 或者权限更高的其他用户的所有活动

-a always,exit -F arch=b64 -S execve -F euid=root -F key=root_acct

-a always,exit -F arch=b32 -S execve -F euid=root -F key=root_acct

-a always,exit -F arch=b64 -S execve -F euid>=1000 -F key=user_acct

-a always,exit -F arch=b32 -S execve -F euid>=1000 -F key=user_acct

3、配置好之后重新启动应用让规则生效,如需动态更改配置则只需要修改auditd.yml的配置,不需要再重启应用,其余module的动态配置也是一样,当修改配置之后会看到如下日志:

2020-10-21T02:07:16.118Z        INFO    [auditd]        auditd/audit_linux.go:243       Deleted 13 pre-existing audit rules.

2020-10-21T02:07:16.119Z        INFO    [auditd]        auditd/audit_linux.go:262       Successfully added 12 of 12 audit rules.

以上日志说明规则动态生效了。

每一次修改规则都可以通过如下命令查看修改后的规则:

./auditbeat show auditd-rules

auditbeat动态审计配置参考链接:

https://www.elastic.co/guide/en/beats/auditbeat/current/auditbeat-configuration-reloading.html#auditbeat-configuration-reloading

4、管理大规模集群

当机器数量上升到一定程度时,手动修改会造成大量工作量,为方便管理,我们通过配置管理工具,例如Ansible来管理,统一修改配置,修改之后随机抽取其中几台机器进行检查是否生效即可。

【路径说明】

/etc/auditbeat:安装目录,通过rpm默认安装在此目录

/var/log/auditbeat/:日志目录。

详细的目录说明参考如下链接:

https://www.elastic.co/guide/en/beats/auditbeat/current/directory-layout.html

【Linux内核事件】

https://linux.die.net/man/8/auditctl

【安装kibana】

【安装】

  1. 下载kibana-7.9.2-linux-x86_64.tar.gz

下载地址:

https://artifacts.elastic.co/downloads/kibana/kibana-7.9.2-linux-x86_64.tar.gz

  1. 解压到安装目录,配置config,修改kibana.yml,配置如下:

修改server.host: "10.1.75.141"为对应的主机IP

修改elasticsearch.hosts: ["http://localhost:9200"]为对应的elasticsearch地址,如果有多个可以逗号分隔。

  1. 启动kibana,查看进程是否监听了5601端口(默认端口)

bin/kibana > kibana.log &

  1. 访问,通过https://localhost:5601即可访问

【附录】

此次安装的版本是基础班,永久免费,详细的功能说明见如下链接:

https://www.elastic.co/cn/subscriptions