Auditbeat使用介绍

Auditbeat是一种轻量级的数据收集器,您可以将其安装在服务器上,以审核系统上用户和进程的活动。 例如,您可以使用Auditbeat从Linux Audit Framework收集和集中审核事件。 您还可以使用Auditbeat来检测对关键文件(如二进制文件和配置文件)的更改,并确定潜在的安全策略冲突。Auditbeat是一种Elastic Beat。 它基于libbeat框架。

为了能够使用Auditbeat,必须安装Elasticsearch及Kibana。

Auditbeat 工作原理

首先我们来了解一下Linux的审计框架:

  • Linux的审计框架提供了对System call及文件变化的可观测性
  • 促进对一些关键系统应用的监控 (pam, openssh, passwd)
  • 分发事件到用户空间的守护程序(daemon)(auditd, journald)

那么在Elastic中的Auditbeat到底是来做什么的呢?Auditbeat直接通过netlink sockets从内核获取事件。它的作用可以分为一下的几个方面:

  • 收集整理消息
  • 组合相关信息
  • 解析
  • 丰富数据(例如host等等)
  • 发送到Elasticsearch

假如有一下的几条信息:

type=SYSCALL msg=audit(1501619655.636:32796540): arch=c000003e syscall=2 success=no exit=-13 a0=7fffdd0a98e2 a1=0 a2=7fffdd0a8210 a3=7fffdd0a7c60 items=1 ppid=6637 pid=6654 auid=700 uid=700 gid=700 euid=700 suid=700 fsuid=700 egid=700 sgid=700 fsgid=700 tty=pts0 ses=15663 comm=”cat” exe=”/bin/cat” key=”open”

type=CWD msg=audit(1501619655.636:32796540): cwd=”/home/admin”

type=PATH msg=audit(1501619655.636:32796540): item=0 name=”/etc/gshadow” inode=138686 dev=fc:00 mode=0100000 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL

那么解析出来的信息就是:

从上面,我们可以看出来事件发生的时间,结果是失败。导致结果失败的用户名是admin,所发生的操作的使用/bin/cat命令来打开文件/etc/gshadow。

Auditbeat是如何切入呢?它有一下的两种方法:

  • 作为auditd的补充应用

    • auditd 管理审计规则
    • Auditbeat 发送事件到 Elasticsearch
    • 需要内核 3.16 或者更新

      完全替代auditd使用
    • 不用安装auditd软件包
    • Auditbeat 管理审计规则
    • Auditbeat 发送事件到 Elasticsearch

另外,Auditbeat可以实现文件完整性的监控:

  • 实时监控指定文件系统变化
  • 报告文件元数据与哈希
  • 为文件建立、移动、删除、更新和属性修改生成事件
  • 这个模块目前独立于 Linux 审计框架
  • 在Linux、macOS和Windows上均可工作

针对这个,它适用于一下的应用场景:

  • 识别可疑篡改

    • 软件更新之外的对于二进制文件或者共享库的更改
    • 文件权限和属性的非常规更新
  • 根据安全情报信息对照相应文件哈希(病毒文件快速识别)
  • 满足企业对审计/合规的需求

Auditbeat安装

必须注意选择和自己Elasticsearch想匹配的版本。

curl -L -O https://artifacts.elastic.co/downloads/beats/auditbeat/auditbeat-7.4.2-linux-x86_64.tar.gz
tar xzvf auditbeat-7.4.2-linux-x86_64.tar.gz

安装好Auditbeat后的文件显示为:

$ ls
LICENSE.txt auditbeat fields.yml
NOTICE.txt auditbeat.reference.yml kibana
README.md auditbeat.yml

请注意上面的一个配置文件autidbeat.ym。这个将是要使用到的配置文件。

如果你是在你自己的机器上安装Auditbeat,并且上面有运行Kibana,那么你也可以在Kibana里找到相应的安装步骤.

其中左边的是一个叫做Infrastructure的应用。点Auditbeat.

Audibeat Demo

在这里,我们先来做使用Auditbeat来做一个练习,让大家感受一下auditbeat是如何工作的。

配置Auditbeat

默认配置文件称为auditbeat.yml。还有一个名为auditbeat.reference.yml的完整示例配置文件,其中显示了所有不推荐使用的选项。

  1. 定义要启用的Auditbeat模块。 Auditbeat使用模块来收集审核信息。 对于每个模块,指定要收集的指标集。

以下示例显示了file_integrity模块,该模块配置为在磁盘上指定路径之一中的文件发生更改时生成事件:

auditbeat.modules:

- module: file_integrity
paths:
- /bin
- /usr/bin
- /sbin
- /usr/sbin
- /etc
- /Users/liuxg/tmp

在上面,我们特意添加了一个自己创建的文件目录/Users/liuxg/tmp。这样Auditbeat就可以用来监测我这个目录里的文件变化。在下面的练习中,我们可以用来展示。

  1. 配置输出。

    Auditbeat支持多种输出,但是通常您将事件直接发送到Elasticsearch或Logstash以进行其他处理。

    要将输出直接发送到Elasticsearch(不使用Logstash),请设置Elasticsearch安装的位置:
output.elasticsearch:
hosts: ["myEShost:9200"]
  1. 如果您打算使用Auditbeat随附的示例Kibana仪表板,请配置Kibana端点。 如果Kibana与Elasticsearch在同一主机上运行,则可以跳过此步骤。
setup.kibana:
host: "mykibanahost:5601"

如果Elasticsearch和Kibana受保护,请在运行设置和启动Auditbeat的命令之前在auditbeat.yml配置文件中设置凭据。

output.elasticsearch:
hosts: ["myEShost:9200"]
username: "filebeat_internal"
password: "YOUR_PASSWORD"
setup.kibana:
host: "mykibanahost:5601"
username: "my_kibana_user"
password: "YOUR_PASSWORD"

请注意在上面我们使用了假设的用户名及密码。在实际的使用中请根据自己的情况进行适当地修改。

测试Auditbeat

在我们真正地在Kibana使用之前,我们先来测试一下我们的Auditbeat安装是否成功。我们可以在Auditbeat的安装目录进行如下的尝试:

./auditbeat test config -e

$ ./auditbeat test config -e
2019-11-20T10:41:42.920+0800 INFO instance/beat.go:607 Home path: [/Users/liuxg/elastic1/auditbeat-7.4.2-darwin-x86_64] Config path: [/Users/liuxg/elastic1/auditbeat-7.4.2-darwin-x86_64] Data path: [/Users/liuxg/elastic1/auditbeat-7.4.2-darwin-x86_64/data] Logs path: [/Users/liuxg/elastic1/auditbeat-7.4.2-darwin-x86_64/logs]
2019-11-20T10:41:42.942+0800 INFO instance/beat.go:615 Beat ID: 594d560c-72a0-4150-833b-36eb84110404
2019-11-20T10:41:42.946+0800 INFO [beat] instance/beat.go:903 Beat info {"system_info": {"beat": {"path": {"config": "/Users/liuxg/elastic1/auditbeat-7.4.2-darwin-x86_64", "data": "/Users/liuxg/elastic1/auditbeat-7.4.2-darwin-x86_64/data", "home": "/Users/liuxg/elastic1/auditbeat-7.4.2-darwin-x86_64", "logs": "/Users/liuxg/elastic1/auditbeat-7.4.2-darwin-x86_64/logs"}, "type": "auditbeat", "uuid": "594d560c-72a0-4150-833b-36eb84110404"}}}
2019-11-20T10:41:42.947+0800 INFO [beat] instance/beat.go:912 Build info {"system_info": {"build": {"commit": "15075156388b44390301f070960fd8aeac1c9712", "libbeat": "7.4.2", "time": "2019-10-28T19:43:09.000Z", "version": "7.4.2"}}}
2019-11-20T10:41:42.947+0800 INFO [beat] instance/beat.go:915 Go runtime info {"system_info": {"go": {"os":"darwin","arch":"amd64","max_procs":16,"version":"go1.12.9"}}}
2019-11-20T10:41:42.950+0800 INFO [beat] instance/beat.go:919 Host info {"system_info": {"host": {"architecture":"x86_64","boot_time":"2019-11-19T21:59:49.56243+08:00","name":"localhost","ip":["127.0.0.1/8","::1/128","fe80::1/64","fe80::aede:48ff:fe00:1122/64","fe80::14f1:d192:691:db99/64","169.254.101.151/16","fe80::4c5:e058:2e93:f7d4/64","192.168.0.100/24","fe80::c51f:4010:9bb0:5bf6/64","fe80::6b47:ca1b:644:8cbc/64"],"kernel_version":"19.0.0","mac":["ac:de:48:00:11:22","a6:83:e7:69:f5:24","a4:83:e7:69:f5:24","06:83:e7:69:f5:24","ea:12:7d:7a:0d:b7","ea:12:7d:7a:0d:b7","a0:ce:c8:d0:90:be","82:51:61:05:3c:01","82:51:61:05:3c:00","82:51:61:05:3c:05","82:51:61:05:3c:04","82:51:61:05:3c:01"],"os":{"family":"darwin","platform":"darwin","name":"Mac OS X","version":"10.15.1","major":10,"minor":15,"patch":1,"build":"19B88"},"timezone":"CST","timezone_offset_sec":28800,"id":"E51545F1-4BDC-5890-B194-83D23620325A"}}}
2019-11-20T10:41:42.951+0800 INFO [beat] instance/beat.go:948 Process info {"system_info": {"process": {"cwd": "/Users/liuxg/elastic1/auditbeat-7.4.2-darwin-x86_64", "exe": "./auditbeat", "name": "auditbeat", "pid": 5862, "ppid": 562, "start_time": "2019-11-20T10:41:41.898+0800"}}}
2019-11-20T10:41:42.951+0800 INFO instance/beat.go:292 Setup Beat: auditbeat; Version: 7.4.2
2019-11-20T10:41:42.951+0800 INFO [index-management] idxmgmt/std.go:178 Set output.elasticsearch.index to 'auditbeat-7.4.2' as ILM is enabled.
2019-11-20T10:41:42.951+0800 INFO elasticsearch/client.go:170 Elasticsearch url: http://localhost:9200
2019-11-20T10:41:42.952+0800 INFO [publisher] pipeline/module.go:97 Beat name: localhost
2019-11-20T10:41:42.953+0800 WARN [cfgwarn] host/host.go:167 BETA: The system/host dataset is beta
2019-11-20T10:41:42.994+0800 WARN [cfgwarn] package/package.go:170 BETA: The system/package dataset is beta
2019-11-20T10:41:43.015+0800 WARN [cfgwarn] process/process.go:131 BETA: The system/process dataset is beta
2019-11-20T10:41:43.036+0800 WARN [process] process/process.go:174 Running as non-root user, will likely not report all processes.
Config OK

上面的显示结果我们的配置是成功的。

装载index template到Elasticsearch中

建议的Auditbeat索引模板文件由Auditbeat软件包安装。 如果您在auditbeat.yml配置文件中接受默认配置,则Auditbeat在成功连接到Elasticsearch之后会自动加载模板。 如果模板已经存在,除非您配置Auditbeat这样做,否则它不会被覆盖。

默认情况下,如果启用了Elasticsearch输出,则Auditbeat会自动加载建议的模板文件fields.yml。 如果要使用默认索引模板,则不需要其他配置。 否则,您可以在auditbeat.yml中更改默认值。

setup.template.name: "your_template_name"
setup.template.fields: "path/to/fields.yml"

使用Elastic所提供的默认template。

设置Kibana dashboard

Auditbeat随附了示例Kibana仪表板,可视化文件以及用于在Kibana中可视化Auditbeat数据的搜索。 在使用仪表盘之前,您需要创建索引模式,auditbeat- *,并将仪表盘加载到Kibana中。为了做这个,我们可以采用两种方法:

  • 直接在auditbeat.yml文件中加入如下的句子:

    setup.dashboards.enabled: true

  • 使用如下的命令(在audibeat的安装目录中,请确信Kibana在运行后,在打入如下的命令):

    ./auditbeat setup --dashboards

$ ./auditbeat setup --dashboards
Loading dashboards (Kibana must be running and reachable)
Loaded dashboards

启动Audibeat

终于到了我们最后的一步了。通过为您的平台发出适当的命令来运行Auditbeat:

chown root auditbeat.yml
./auditbeat -e

在这里特别注意的是:要监视系统文件,您将以root用户身份运行Auditbeat,因此您需要更改配置文件的所有权,或者在指定--strict.perms = false的情况下运行Auditbeat

在Kabana中查看数据

数据的名字是以auditbeat为开始的索引。如果由于一些原因你没有看到这些数据,你可以点击右上角的时间设置来查找更大范围里的数据。通常Kibana在默认的情况下显示最近15分钟的数据。

由于在之前我们已经设置了Dashboard,我们现在直接点击Dashboard来进行展示:

我们可以看到有许多以Auditbeat为开始的Dashboard列出来了。我们来选择其中的一个File Integrity来做展示:

还记得我之前在auditbeat.yml,我加入了如下的一句 - /Users/liuxg/tmp:

- module: file_integrity
paths:
- /bin
- /usr/bin
- /usr/local/bin
- /sbin
- /usr/sbin
- /usr/local/sbin
- /Users/liuxg/tmp

下面我们在目录/Users/liuxg/tmp里创建一个文件,然后,我们再看看在Kibana中有什么变化,再次查看一下Kibana可以看到许多的关于文件a的变化信息。

同样地,也可以选择其它的关于auditbeat的dashboard.

Beats Elastic中的Auditbeat使用介绍的更多相关文章

  1. asp.net中缓存的使用介绍一

    asp.net中缓存的使用介绍一 介绍: 在我解释cache管理机制时,首先让我阐明下一个观念:IE下面的数据管理.每个人都会用不同的方法去解决如何在IE在管理数据.有的会提到用状态管理,有的提到的c ...

  2. lua解析脚本过程中的关键数据结构介绍

    在这一篇文章中我先来介绍一下lua解析一个脚本文件时要用到的一些关键的数据结构,为将来的一系列代码分析打下一个良好的基础.在整个过程中,比较重要的几个源码文件分别是:llex.h,lparse.h.l ...

  3. linux中ldconfig的使用介绍

    linux中ldconfig的使用介绍 ldconfig是一个动态链接库管理命令,其目的为了让动态链接库为系统所共享. ldconfig的主要用途: 默认搜寻/lilb和/usr/lib,以及配置文件 ...

  4. 【js】IE、FF、Chrome浏览器中的JS差异介绍

    如何判断浏览器类型 转:http://www.cnblogs.com/carekee/articles/1854674.html 1.通过浏览器特有的对象 如ie 的ActiveXObject  ff ...

  5. Apache中 RewriteRule 规则参数介绍

    Apache中 RewriteRule 规则参数介绍 摘要: Apache模块 mod_rewrite 提供了一个基于正则表达式分析器的重写引擎来实时重写URL请求.它支持每个完整规则可以拥有不限数量 ...

  6. 使用Memcache在PHP中调试方法的介绍及应用

    使用Memcache在PHP中调试方法的介绍及应用 如果我们在网络开发中,特别是大访问量的web项目开发中,为了提高响应速度,减少数据查询运算,那么我们都会选用memcahce.首先我们必须要安装,接 ...

  7. python中multiprocessing.pool函数介绍_正在拉磨_新浪博客

    python中multiprocessing.pool函数介绍_正在拉磨_新浪博客     python中multiprocessing.pool函数介绍    (2010-06-10 03:46:5 ...

  8. 基于Server-Sent Event的简单聊天室 Web 2.0时代,即时通信已经成为必不可少的网站功能,那实现Web即时通信的机制有哪些呢?在这门项目课中我们将一一介绍。最后我们将会实现一个基于Server-Sent Event和Flask简单的在线聊天室。

    基于Server-Sent Event的简单聊天室 Web 2.0时代,即时通信已经成为必不可少的网站功能,那实现Web即时通信的机制有哪些呢?在这门项目课中我们将一一介绍.最后我们将会实现一个基于S ...

  9. PHP删除数组中空值的方法介绍

    这篇文章主要介绍了PHP删除数组中空值的方法介绍,需要的朋友可以参考下 说来惭愧,以前在去掉数组的空值是都是强写foreach或者while的,利用这两个语法结构来删除数组中的空元素,简单代码如下: ...

随机推荐

  1. Django 全局log process_exception中间件

    class BaseResp: # 基础的返回值类 def __init__(self, code, msg, data): self.code = code self.msg = msg self. ...

  2. Flutter学习笔记(1)--环境安装

    flutter最近显得格外的火,公司的同事也一直在谈论flutter,感觉自己不学学就要失业了...所以决定顺应潮流学习以下flutter,做一下学习笔记,希望可以给需要的同学带来一些帮助~ 正文为f ...

  3. 模板引擎Jinja2的基本用法

    Flask提供的模板引擎为Jinja2,易于使用,功能强大.模板仅仅是文本文件,它可以生成任何基于文本的格式(HTML.XML.CSV.LaTex 等等). 它并没有特定的扩展名, .html 或 . ...

  4. WebSocket实现Java后台消息推送

    1.什么是WebSocket WebSocket协议是基于TCP的一种新的网络协议.它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端. 2.实现原理 在实现 ...

  5. win10安装ubuntu系统出现的一些问题以及解决方案

    前言 在win10系统进行安装新的ubuntu环境的时候遇到的一些问题,以及解决方案,供以后参考. 准备 从ubuntu官网下载最近版本的ubuntu系统,Ubuntu最新版本下载地址 操作系统:wi ...

  6. 渗透测试学习 二十八、WAF绕过详解

    大纲: WAF防护原理讲解 目录扫描绕过WAF 手工注入绕过WAF sqlmap绕过WAF 编写salmap绕过WAF 过WAF一句话编写讲解 菜刀连接绕过WAF webshell上传绕过WAF 提权 ...

  7. nginx 的 proxy_cache 缓存配置

    开头:某个项目涉及到 视频切片下载到本地,然后提供服务给客户端.一个视频有多个文件,存储在本地路径下.当客户端请求的视频在本地没有就会回源, 回源拿到的视频文件再返回给客户端,同时在本地缓存一份,提供 ...

  8. Jmeter设置默认中文启动

    安装好jmeter,启动的页面是全英文,对于不熟悉jmeter的人来说,理解起来还是很困难的.如何设置成中文页面呢? 方法一:打开jmeter后,设置Options—choose language—C ...

  9. CentOS离线安装Rust

    条件所限,无法在线连接外网,或是下载慢,容易中断时,可以采用. 一,下载离线安装包 https://forge.rust-lang.org/other-installation-methods.htm ...

  10. -shared -fPIC

    gcc -shared -fPIC -o 1.so 1.c   这里有一个-fPIC参数 PIC就是position independent code PIC使.so文件的代码段变为真正意义上的共享