您的位置:首页 > 其它

ELK实战--利用auditbeat采集系统审计日志并生成视图

2019-01-17 17:21 2663 查看

一、背景

Auditbeat是轻量型的审计日志采集器,可以收集linux审计框架的数据、监控文件完整性。能够组合相关消息到一个事件里,生成标准的结构化数据,方便分析,而且能够与Logstash、Elasticsearch和Kibana无缝集成。

二、安装

wget https://artifacts.elastic.co/downloads/beats/auditbeat/auditbeat-6.5.4-linux-x86_64.tar.gz
tar zxf auditbeat-6.5.4-linux-x86_64.tar.gz

三、配置auditbeat

默认的配置文件是auditbeat.yml,Linux平台下,该文件位于解压目录下。
还有一个auditbeat.reference.yml文件,该文件显示了所有的选项,可以根据需求将其拷贝到auditbeat.yml文件中。
auditbeat.yml主要的两部分,一部分模块,另一部分是输出。
1、模块
目前有两种模块:
auditd:auditd模块接收来自Linux审计框架的审计事件,该框架是Linux内核的一部分。这个模块建立对内核的订阅,以便在事件发生时接收它们。注意使用Auditd模块,有的系统需要先关闭auditd服务,执行” service auditd stop”。
模块相关配置项如下:

- module: auditd
audit_rule_files: [ '${path.config}/audit.rules.d/*.conf' ]
audit_rules: |
#-a always,exit -F arch=b64 -S execve,execveat -k exec
……

auditrulefiles:从单独的文件加载审计规则,注意默认提供了36和位64位两种,根据本地系统选择其一。
auditrules:定义审计规则。
执行./auditbeat show auditd-rules可以查看当前的规则,默认的审计规则如下:

#不记录pid为19714的所有系统调用事件,备注:自动根据auditbeat PID定义此规则
-a never,exit -S all -F pid=19714
#记录CPU为32位所有系统调用事件
-a always,exit -F arch=b32 -S all -F key=32bit-abi
#记录CPU为64位"程序执行"相关系统调用事件
-a always,exit -F arch=b64 -S execve,execveat -F key=exec
#记录CPU为64位"远程连接"相关系统调用事件
-a always,exit -F arch=b64 -S connect,accept,bind -F key=external-access
#对/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
#记录文件打开、修改等因没有权限或不被允许的事件
-a always,exit -F arch=b64 -S open,truncate,ftruncate,creat,openat,open_by_handle_at -F exit=-EACCES -F key=access
-a always,exit -F arch=b64 -S open,truncate,ftruncate,creat,openat,open_by_handle_at -F exit=-EPERM -F key=access

file_integrity:file_integrity模块实时监控指定目录下的文件更改。注意在linux系统中,需要使用inotify,因此内核必须支持inotify。Inotify最初已被合并到2.6.13 Linux内核中了。
模块相关配置项如下:

- module: file_integrity
paths:
- /bin
- /usr/bin
- /sbin
- /usr/sbin
- /etc

paths:指定被监控文件路径

想了解两个模块更丰富的配置项,参考官方文档:
https://www.elastic.co/guide/en/beats/auditbeat/6.5/auditbeat-modules.html

2、输出
内容可以输出到Elasticsearch、Logstash、Kafka、Redis、File、Console、Cloud,注意只能配置一种输出方式。
输出到Elasticsearch:

output.elasticsearch:
hosts: ["172.16.1.25:9200"]
index: "auditbeat-%{[beat.version]}-%{+yyyy.MM.dd}"
protocol: "https"
username: "elastic"
password: "changeme"

输出到Logstash

output.logstash:
hosts: ["172.16.1.25:5044"]

输出到Kafka

output.kafka:
hosts: ["kafka1:9092", "kafka2:9092", "kafka3:9092"]
topic: '%{[fields.log_topic]}'
partition.round_robin:
reachable_only: false
required_acks: 1
compression: gzip
max_message_bytes: 1000000

hosts:指定Kafka节点。
topic:指定topic名称。
partition.roundrobin:采用轮询的方式依次写到不同的分区中。
reachableonly:设置为true表示只分发到可用的分区,会增加缓存资源使用,但是可以避免输出阻塞。
requiredacks:Kafka节点返回ACK可靠性级别,0表示不返回、1表示等待本地提交、-1表示等待所有副本同步完成。
compression:是否启用压缩传输,可以为none, snappy, lz4和gzip。
max_message_bytes:允许的json编码消息的最大值,单位是bytes。

输出到File

output.file:
path: "/tmp/auditbeat"
filename: auditbeat

想了解更详细的配置项及含义,请参考官方文档:
https://www.elastic.co/guide/en/beats/auditbeat/6.5/configuring-output.html

本案例是将内容输出到了Elasticsearch

output.elasticsearch:
# Array of hosts to connect to.
hosts: ["172.16.1.25:9200","172.16.1.26:9200","172.16.1.27:9200"]

没有指定索引,采用默认格式"auditbeat-%{[beat.version]}-%{+yyyy.MM.dd}",需要注意的是:如果不使用默认格式,还需在auditbeat.yml中补充两个配置项:
例如:

setup.template.name: "auditbeat"
setup.template.pattern: "auditbeat-*"

三、运行auditbeat

在解压目录下,使用root用户执行

nohup ./auditbeat -e &

四、kibana图形化展示

在ES节点查看索引

#curl -XGET 'http://127.0.0.1:9200/_cat/indices/?v'
green  open   auditbeat-6.5.4-2019.01.17  mnkCA-QTSVS2wPkwykd_jw   3   1        468            0      2.8mb          1.5mb

kibana上创建auditbeat-6.5.4-*索引后,在Discover有数据输出

1、创建视图
创建视图,需要了解各个字段含义,可以参考官方文档:
https://www.elastic.co/guide/en/beats/auditbeat/6.5/exported-fields.html

(1) 各节点用户登录认证失败统计

视图类型:Data Table
字段:
host.name 主机名
event.type 事件类型,我们统计用户登录事件,所以要将Advanced中Include设置为user_login
auditd.resuld 结果,我们统计失败的登录,所以要将Advanced中Include设置为fail
auditd.data.acct 帐号名,对端尝试登录的帐号名
source.ip 源IP

(2) 各节点执行命令统计

视图类型:Data Table
字段:
host.name 主机名
process.exe 程序名称,通过Size可以指定统计数量,这里统计前5项。
user.name.map.uid 帐号

(3) 各节点被监控目录中文件增删改事件统计

视图类型:Data Table
字段:
host.name 主机名
event.action 事件动作,我们统计文件的增删改,所以要将Advanced中Include设置为created|deleted|moved|updated
file.path.raw 文件名
file.owner 属主
file.group 属组
file.mode 权限

(4) 所有节点被监控目录中文件增删改事件趋势

视图类型:Vertical Bar
字段:
event.action 事件动作,同样包括created|deleted|moved|updated
X轴默认设置为时间

2、创建仪表盘

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ELK auditbeat