Beats Elastic中的Auditbeat使用介紹


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.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM