1. 程式人生 > 實用技巧 >Wazuh連線外部的API

Wazuh連線外部的API

7、Wazuh連線外部的API

該整合服務允許Wazuh連線到外部的API和報警工具

7.1、整合元件配置

要開始定製整合, 必須在管理器中修改ossec.conf檔案(包括塊整合元件)。可以使用以下引數:

name:執行整合的指令碼的名稱。對於像本文討論的那樣的定製整合,名稱必須以“ custom-”開頭。
hook_url:由軟體API提供的URL,用於連線到API本身。它的使用是可選的,因為它可以包含在指令碼中。
api_key:使我們能夠使用它的API的金鑰。出於相同的原因,hook_url的使用也是可選的,因此它的使用也是可選的。
level:設定級別過濾器,以使指令碼不會接收低於特定級別的警報。
rule_id:設定警報識別符號的過濾器。
group:設定警報組過濾器。
event_location:設定警報源過濾器。
alert_format:指示指令碼以JSON格式接收警報(推薦)。預設情況下,指令碼將以full_log格式接收警報。

<integration>
  <name>custom-integration</name>
  <hook_url>WEBHOOK</hook_url>
  <level>10</level>
  <group>multiple_drops|authentication_failures</group>
  <alert_format>json</alert_format>
</integration>

例如:

<ossec_config>
  <integration>
    <name>custom-opapi-send-weixin</name>
    <level>12</level>
    <alert_format>json</alert_format>
  </integration>

7.2、建立整合指令碼

整合指令碼的第一行必須指示其直譯器,否則Wazuh將不知道如何讀取和執行指令碼。

#!/usr/bin/env python

該指令碼必須檢查其引數,因為它將接收來自它們的配置選項。第一個引數包括包含警報的檔案的位置。第二個引數包含api_key,第三個引數包含hook_url選項。如果上述均未指示,則引數將被接收為空。

alert_file = sys.argv[1]
api_key = sys.argv[2]
hook_url = sys.argv[3]

下一步是讀取第一個引數中指示的檔案的內容,並從警報中提取與整合相關的欄位。如果在alert_format選項中使用了JSON,則該資訊必須作為JSON物件載入。

alert_level = alert_json['rule']['level']
description = alert_json['rule']['description']

我們建議您在開始開發整合之前檢查檔案/logs/alerts/alerts.json,以便找到要解釋的警報的格式。
例如:

cd /var/ossec/integrations && ls
custom-opapi-send-weixin
custom-opapi-send-weixin.py

cat custom-opapi-send-weixin.py

#!/usr/bin/env python3
import sys
import json
import requests

# Read configuration parameters
alert_file = open(sys.argv[1])
hook_url="http://opapi.qq.com/weixin/gaojing/"
# Read the alert file
alert_json = json.loads(alert_file.read())
alert_file.close()
# Extract issue fields
remark = alert_json['agent']['ip']
description = alert_json['rule']['description']
full_log = alert_json['full_log']

msg_data={
"sendto":"ID",
"status":"PROBLEM",
"title":"%s" %description,
"remark":"%s" %remark,
"content":"%s" %full_log,
}

headers = {'Content-Type': 'application/json', 'Authorization': 'Token b1e6e7b5'}
requests.post(url=hook_url, headers=headers, data=json.dumps(msg_data))
sys.exit(0)

7.3、修改指令碼屬性

chmod 750 /var/ossec/integrations/custom-opapi-send-weixin*
chown root:ossec /var/ossec/integrations/custom-opapi-send-weixin*

7.4、重啟wazuh-manager服務

service wazuh-manager restart