mentions added
priority map refactor
This commit is contained in:
parent
cc7f93ba64
commit
e15c1c9c37
@ -35,7 +35,8 @@ func SendDiscord(params types.Params) {
|
|||||||
embedDescription = "\n\n" +
|
embedDescription = "\n\n" +
|
||||||
"**Agent:** " + params.WazuhMessage.Parameters.Alert.Agent.Name + "\n" +
|
"**Agent:** " + params.WazuhMessage.Parameters.Alert.Agent.Name + "\n" +
|
||||||
"**Event id:** " + params.WazuhMessage.Parameters.Alert.Rule.ID + "\n" +
|
"**Event id:** " + params.WazuhMessage.Parameters.Alert.Rule.ID + "\n" +
|
||||||
"**Description:** " + params.WazuhMessage.Parameters.Alert.Rule.Description + "\n" +
|
"**Rule:** " + params.WazuhMessage.Parameters.Alert.Rule.Description + "\n" +
|
||||||
|
"**Description: **" + params.WazuhMessage.Parameters.Alert.FullLog + "\n" +
|
||||||
"**Threat level:** " + strconv.Itoa(params.WazuhMessage.Parameters.Alert.Rule.Level) + "\n" +
|
"**Threat level:** " + strconv.Itoa(params.WazuhMessage.Parameters.Alert.Rule.Level) + "\n" +
|
||||||
"**Times fired:** " + strconv.Itoa(params.WazuhMessage.Parameters.Alert.Rule.Firedtimes) +
|
"**Times fired:** " + strconv.Itoa(params.WazuhMessage.Parameters.Alert.Rule.Firedtimes) +
|
||||||
"\n\n" +
|
"\n\n" +
|
||||||
@ -45,22 +46,39 @@ func SendDiscord(params types.Params) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var color int
|
var color int
|
||||||
|
var mention string
|
||||||
|
|
||||||
switch params.Priority {
|
switch params.Priority {
|
||||||
case 1:
|
case 1:
|
||||||
color = 0x339900
|
color = 0x339900
|
||||||
|
if params.WazuhMessage.Parameters.Alert.Rule.Firedtimes >= params.PriorityMaps[4].MentionThreshold {
|
||||||
|
mention = "@here"
|
||||||
|
}
|
||||||
case 2:
|
case 2:
|
||||||
color = 0x99cc33
|
color = 0x99cc33
|
||||||
|
if params.WazuhMessage.Parameters.Alert.Rule.Firedtimes >= params.PriorityMaps[3].MentionThreshold {
|
||||||
|
mention = "@here"
|
||||||
|
}
|
||||||
case 3:
|
case 3:
|
||||||
color = 0xffcc00
|
color = 0xffcc00
|
||||||
|
if params.WazuhMessage.Parameters.Alert.Rule.Firedtimes >= params.PriorityMaps[2].MentionThreshold {
|
||||||
|
mention = "@here"
|
||||||
|
}
|
||||||
case 4:
|
case 4:
|
||||||
color = 0xff9966
|
color = 0xff9966
|
||||||
|
if params.WazuhMessage.Parameters.Alert.Rule.Firedtimes >= params.PriorityMaps[1].MentionThreshold {
|
||||||
|
mention = "@here"
|
||||||
|
}
|
||||||
case 5:
|
case 5:
|
||||||
color = 0xcc3300
|
color = 0xcc3300
|
||||||
|
if params.WazuhMessage.Parameters.Alert.Rule.Firedtimes >= params.PriorityMaps[0].MentionThreshold {
|
||||||
|
mention = "@here"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
message := types.Message{
|
message := types.Message{
|
||||||
Username: params.Sender,
|
Username: params.Sender,
|
||||||
|
Content: mention,
|
||||||
Embeds: []types.Embed{
|
Embeds: []types.Embed{
|
||||||
{
|
{
|
||||||
Title: params.Sender,
|
Title: params.Sender,
|
||||||
|
|||||||
@ -36,7 +36,10 @@ func InitNotify() types.Params {
|
|||||||
log.Log("yaml failed to load")
|
log.Log("yaml failed to load")
|
||||||
yamlFile, err = os.ReadFile(path.Join(BaseDirPath, "wazuh-notify-config.yaml"))
|
yamlFile, err = os.ReadFile(path.Join(BaseDirPath, "wazuh-notify-config.yaml"))
|
||||||
}
|
}
|
||||||
yaml.Unmarshal(yamlFile, &configParams)
|
err = yaml.Unmarshal(yamlFile, &configParams)
|
||||||
|
if err != nil {
|
||||||
|
print(err)
|
||||||
|
}
|
||||||
|
|
||||||
log.Log("yaml loaded")
|
log.Log("yaml loaded")
|
||||||
configParamString, _ := json.Marshal(configParams)
|
configParamString, _ := json.Marshal(configParams)
|
||||||
@ -59,6 +62,7 @@ func InitNotify() types.Params {
|
|||||||
inputParams.FullMessage = configParams.FullMessage
|
inputParams.FullMessage = configParams.FullMessage
|
||||||
inputParams.ExcludedAgents = configParams.ExcludedAgents
|
inputParams.ExcludedAgents = configParams.ExcludedAgents
|
||||||
inputParams.ExcludedRules = configParams.ExcludedRules
|
inputParams.ExcludedRules = configParams.ExcludedRules
|
||||||
|
inputParams.PriorityMaps = configParams.PriorityMaps
|
||||||
|
|
||||||
wazuhInput()
|
wazuhInput()
|
||||||
|
|
||||||
|
|||||||
@ -3,19 +3,19 @@ package services
|
|||||||
import "slices"
|
import "slices"
|
||||||
|
|
||||||
func mapPriority() int {
|
func mapPriority() int {
|
||||||
if slices.Contains(configParams.Priority1, wazuhData.Parameters.Alert.Rule.Level) {
|
if slices.Contains(configParams.PriorityMaps[4].ThreatMap, wazuhData.Parameters.Alert.Rule.Level) {
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
if slices.Contains(configParams.Priority2, wazuhData.Parameters.Alert.Rule.Level) {
|
if slices.Contains(configParams.PriorityMaps[3].ThreatMap, wazuhData.Parameters.Alert.Rule.Level) {
|
||||||
return 2
|
return 2
|
||||||
}
|
}
|
||||||
if slices.Contains(configParams.Priority3, wazuhData.Parameters.Alert.Rule.Level) {
|
if slices.Contains(configParams.PriorityMaps[2].ThreatMap, wazuhData.Parameters.Alert.Rule.Level) {
|
||||||
return 3
|
return 3
|
||||||
}
|
}
|
||||||
if slices.Contains(configParams.Priority4, wazuhData.Parameters.Alert.Rule.Level) {
|
if slices.Contains(configParams.PriorityMaps[1].ThreatMap, wazuhData.Parameters.Alert.Rule.Level) {
|
||||||
return 4
|
return 4
|
||||||
}
|
}
|
||||||
if slices.Contains(configParams.Priority5, wazuhData.Parameters.Alert.Rule.Level) {
|
if slices.Contains(configParams.PriorityMaps[0].ThreatMap, wazuhData.Parameters.Alert.Rule.Level) {
|
||||||
return 5
|
return 5
|
||||||
}
|
}
|
||||||
return 0
|
return 0
|
||||||
|
|||||||
@ -11,11 +11,12 @@ type Params struct {
|
|||||||
ExcludedRules string `yaml:"excluded_rules,omitempty"`
|
ExcludedRules string `yaml:"excluded_rules,omitempty"`
|
||||||
ExcludedAgents string `yaml:"excluded_agents,omitempty"`
|
ExcludedAgents string `yaml:"excluded_agents,omitempty"`
|
||||||
WazuhMessage WazuhMessage
|
WazuhMessage WazuhMessage
|
||||||
Priority1 []int `yaml:"priority_1"`
|
PriorityMaps []PriorityMap `yaml:"priority_map"`
|
||||||
Priority2 []int `yaml:"priority_2"`
|
}
|
||||||
Priority3 []int `yaml:"priority_3"`
|
|
||||||
Priority4 []int `yaml:"priority_4"`
|
type PriorityMap struct {
|
||||||
Priority5 []int `yaml:"priority_5"`
|
ThreatMap []int `yaml:"threat_map"`
|
||||||
|
MentionThreshold int `yaml:"mention_threshold"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type Message struct {
|
type Message struct {
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
# The yaml needs to be in the same folder as the wazuh-ntfy-notifier.py and wazuh-discord-notifier.py
|
# The yaml needs to be in the same folder as the wazuh-ntfy-notifier.py and wazuh-discord-notifier.py
|
||||||
|
|
||||||
targets: "discord,ntfy"
|
targets: "discord,ntfy"
|
||||||
full_message: "discord,ntfy"
|
full_message: "ntfy"
|
||||||
|
|
||||||
# Exclude rules that are listed in the ossec.conf active response definition.
|
# Exclude rules that are listed in the ossec.conf active response definition.
|
||||||
|
|
||||||
@ -13,12 +13,25 @@ excluded_rules: "5401,5403"
|
|||||||
excluded_agents: "999"
|
excluded_agents: "999"
|
||||||
|
|
||||||
# Priority mapping from 1-12 (Wazuh events) to 1-5 (Discord and ntfy notification)
|
# Priority mapping from 1-12 (Wazuh events) to 1-5 (Discord and ntfy notification)
|
||||||
|
# Discord mention after x amount of event fired times
|
||||||
|
|
||||||
|
priority_map:
|
||||||
|
-
|
||||||
|
threat_map: [15,14,13,12]
|
||||||
|
mention_threshold: 1
|
||||||
|
-
|
||||||
|
threat_map: [11,10,9]
|
||||||
|
mention_threshold: 1
|
||||||
|
-
|
||||||
|
threat_map: [8,7,6]
|
||||||
|
mention_threshold: 5
|
||||||
|
-
|
||||||
|
threat_map: [5,4]
|
||||||
|
mention_threshold: 5
|
||||||
|
-
|
||||||
|
threat_map: [3,2,1,0]
|
||||||
|
mention_threshold: 5
|
||||||
|
|
||||||
priority_5: [15,14,13,12]
|
|
||||||
priority_4: [11,10,9]
|
|
||||||
priority_3: [8,7,6]
|
|
||||||
priority_2: [5,4]
|
|
||||||
priority_1: [3,2,1,0]
|
|
||||||
|
|
||||||
sender: "Wazuh (IDS)"
|
sender: "Wazuh (IDS)"
|
||||||
click: "https://google.com"
|
click: "https://google.com"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user