最近在安装wazuh服务器,但是系统自带的集成第三方告警一直尝试无法使用,最后只能自己编写脚本实现实时告警功能。
一、编写python脚本,匹配level 12以上的告警级别,发送到飞书机器人
#!/usr/local/bin/python3
# -*- coding: utf-8 -*-
import sys
import re
import requests
webhook_url = "https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxxxx"
# 使用一个变量记录当前的日志段落
current_log = ""
for line in sys.stdin:
# 将每一行添加到当前的日志段落
current_log += line
# 检查是否到达一个新的日志段落的末尾
if line.strip() == "":
# 解析日志段落
match = re.search(r'Rule: \d+ \(level (12|13|14|15)\)', current_log)
if match:
alert_level = match.group(1)
# 发送到飞书机器人
payload = {
"msg_type": "text",
"content": {
"text": f"New Alert (Level {alert_level}):\n{current_log}"
}
}
headers = {"Content-Type": "application/json"}
response = requests.post(webhook_url, json=payload, headers=headers)
# 打印HTTP响应码和响应内容(用于调试)
print(f"HTTP Response Code: {response.status_code}")
print(f"HTTP Response Content: {response.text}")
if response.status_code == 200:
print("Notification sent successfully.")
else:
print(f"Failed to send notification. Status code: {response.status_code}")
# 重置当前的日志段落
current_log = ""
二、将编写好的脚本执行以下命令,放到后台执行。
nohup tail -n 0 -F /var/ossec/logs/alerts/alerts.log | python3 process_log.py > output.log 2>&1 & disown
三、可根据脚本进行修改,过滤匹配其他告警信息,以下是模拟攻击,触发告警,告警展示。