MozDef/alerts/ldap_group.py

52 строки
1.6 KiB
Python
Исходник Обычный вид История

2016-04-03 02:04:32 +03:00
#!/usr/bin/env python
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
2019-08-02 02:41:37 +03:00
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
2016-04-03 02:04:32 +03:00
# Copyright (c) 2014 Mozilla Corporation
from lib.alerttask import AlertTask
from mozdef_util.query_models import\
PhraseMatch,\
SearchQuery,\
TermMatch,\
WildcardMatch
2016-04-03 02:04:32 +03:00
class ldapGroupModify(AlertTask):
def main(self):
search_query = SearchQuery(minutes=15)
search_query.add_must([
TermMatch('category', 'ldapChange'),
TermMatch('details.changetype', 'modify'),
PhraseMatch("summary", "groups")
])
2016-04-03 02:04:32 +03:00
# ignore test accounts and attempts to create accounts that already exist.
search_query.add_must_not([
WildcardMatch('details.actor', '*bind*'),
WildcardMatch('details.changepairs', 'delete:*member*')
])
self.filtersManual(search_query)
self.searchEventsAggregated('details.email', samplesLimit=50)
self.walkAggregations(threshold=1, config={})
2016-04-03 02:04:32 +03:00
# Set alert properties
def onAggregation(self, agg):
email = agg['value']
events = agg['events']
2016-04-03 02:04:32 +03:00
category = 'ldap'
tags = ['ldap']
severity = 'INFO'
if email is None:
summary = 'LDAP group change detected'
else:
summary = 'LDAP group change initiated by {0}'.format(email)
2016-04-03 02:04:32 +03:00
# Create the alert object based on these properties
return self.createAlertDict(summary, category, tags, events, severity)