Auditbeat是輕量型的審計日誌採集器,能夠收集linux審計框架的數據、監控文件完整性。可以組合相關消息到一個事件裏,生成標準的結構化數據,方便分析,並且可以與Logstash、Elasticsearch和Kibana無縫集成。html
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的rpm包文件
默認的配置文件是auditbeat.yml,Linux平臺下,該文件位於解壓目錄下。
還有一個auditbeat.reference.yml文件,該文件顯示了全部的選項,能夠根據需求將其拷貝到auditbeat.yml文件中。
auditbeat.yml主要的兩部分,一部分模塊,另外一部分是輸出。
一、模塊
目前有兩種模塊:
(1)auditd:auditd模塊接收來自Linux審計框架的審計事件,該框架是Linux內核的一部分。這個模塊創建對內核的訂閱,以便在事件發生時接收它們。注意使用Auditd模塊,有的系統須要先關閉auditd服務,執行」 service auditd stop」。
模塊相關配置項以下:linux
- 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能夠查看當前的規則,默認的審計規則以下,通常默認規則就能夠知足審計需求,若是須要自定義可修改audit.rules.d目錄下的審計規則文件。json
#不記錄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
(2)file_integrity:file_integrity模塊實時監控指定目錄下的文件更改。注意在linux系統中,須要使用inotify,所以內核必須支持inotify,2.6.13以上內核均已安裝inotify。
模塊相關配置項以下:bootstrap
- module: file_integrity paths: - /bin - /usr/bin - /sbin - /usr/sbin - /etc
paths:指定被監控文件路徑緩存
想了解兩個模塊更豐富的配置項,參考官方文檔:
https://www.elastic.co/guide/en/beats/auditbeat/6.5/auditbeat-modules.htmlapp
二、輸出
內容能夠輸出到Elasticsearch、Logstash、Kafka、Redis、File、Console、Cloud,注意只能配置一種輸出方式。
輸出到Elasticsearch:框架
output.elasticsearch: hosts: ["ES1:9200,ES2:9200,ES3:9200"] index: "auditbeat-%{[beat.version]}-%{+yyyy.MM.dd}" protocol: "https" username: "elastic" password: "changeme"
輸出到Logstashcurl
output.logstash: hosts: ["172.16.1.25:5044"]
輸出到Kafkaelasticsearch
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:採用輪詢的方式依次寫到不一樣的分區中。
reachable_only:設置爲true表示只分發到可用的分區,會增長緩存資源使用,可是能夠避免輸出阻塞。
requiredacks:Kafka節點返回ACK可靠性級別,0表示不返回、1表示等待本地提交、-1表示等待全部副本同步完成。
compression:是否啓用壓縮傳輸,能夠爲none, snappy, lz4和gzip。
max_message_bytes:容許的json編碼消息的最大值,單位是bytes。ide
輸出到File
output.file: path: "/tmp/auditbeat" filename: auditbeat
想了解更詳細的配置項及含義,請參考官方文檔:
https://www.elastic.co/guide/en/beats/auditbeat/6.5/configuring-output.html
本案例是將內容輸出到了Kafka
#----------------------------- Kafka output-------------------------------- output.kafka: hosts: ["kafka1:9092", "kafka2:9092", "kafka3:9092"] topic: 'audit_log' partition.round_robin: reachable_only: false required_acks: 1 compression: gzip max_message_bytes: 1000000
到Kafka消費的Logstash配置以下:
input部分
input { kafka { type => "audit_log" codec => "json" topics => "audit_log" bootstrap_servers => ["kafka1:9092", "kafka2:9092", "kafka3:9092"] } }
output部分
output { if [type] == "audit_log" { elasticsearch { hosts => ["ES1","ES2","ES3"] index => 'logstash-audit_log-%{+YYYY-MM-dd}' } } }
在解壓目錄下,使用root用戶執行以下命令,固然若是你是rpm方式安裝的,auditbeat已添加爲系統服務。nohup ./auditbeat -e &
在ES節點查看索引
#curl -XGET 'http://127.0.0.1:9200/_cat/indices/?v' green open logstash-audit_log-2019.01.17 mnkCA-QTSVS2wPkwykd_jw 3 1 468 0 2.8mb 1.5mb
kibana上建立logstash-audit_log-*索引後,在Discover有數據輸出
一、建立視圖
建立視圖,須要瞭解各個字段含義,能夠參考官方文檔:
https://www.elastic.co/guide/en/beats/auditbeat/6.5/exported-fields.html
(1) 命令審計
視圖類型:Data Table
字段:
host.name 主機名稱
process.name 命令名稱,這裏咱們重點記錄幾個命令,因此要將Advanced中Include設置爲mkfs|dd|rm|mv|wget
porcess.args 命令參數,有些命令審計中可能不會記錄參數,因此勾選"Show missing values"
user.name_map.uid 執行命令的賬號名稱
@timestamp 時間戳
視圖類型:Data Table
字段:
process.exe 程序名稱
(2)用戶賬戶審計
視圖類型:Data Table
字段:
event.action 事件動做,咱們統計賬戶密碼修改,因此要將Advanced中Include設置爲changed-password
視圖類型:Data Table
字段:
這裏的event.action字段對應的Include設置爲modified-user-account,會包括用的添加、刪除、屬性修改審計事件
(3)用戶登陸審計
視圖類型:Data Table
字段:
event.type 事件類型,咱們統計用戶登陸事件,因此要將Advanced中Include設置爲user_login
auditd.resuld 結果,咱們統計失敗的登陸,因此要將Advanced中Include設置爲fail
auditd.data.acct 賬號名,對端嘗試登陸的賬號名
source.ip 源IP
(4)重要目錄文件審計
視圖類型:Data Table
字段:
event.action 事件動做,咱們統計文件的增刪改,因此要將Advanced中Include設置爲created|deleted|moved|updated
一樣,event.action對應的Include設置爲created|deleted|moved|updated
最後建立儀表盤