Im Folgenden sehen Sie die Beispiele für erweiterte ESA-Regeln. Jedes Beispiel bietet mehrere Möglichkeiten zur Implementierung des gleichen Anwendungsbeispiels.
Beispiel Nr. 1:
Erstellen Sie ein Benutzerkonto und löschen Sie eben dieses Benutzerkonto in 300 Sekunden. Benutzerinformationen werden in der Metadatei user_src gespeichert.
EPL Nr. 1:
Name der Regel | CreateuseraccountFollowedbyDeletionof Useraccount1 |
Regelbeschreibung | Erstellen Sie ein Benutzerkonto, gefolgt von einer Aktion, um eben dieses Benutzerkonto in 300 Sekunden zu löschen. |
Regelcode |
|
Hinweis |
|
EPL Nr. 2:
Name der Regel | CreateuseraccountFollowedbyDeletionof Useraccount2 |
Regelbeschreibung | Erstellen Sie ein Benutzerkonto, gefolgt von einer Aktion, um eben dieses Benutzerkonto in 300 Sekunden zu löschen. |
Regelcode | SELECT * from pattern[every (a= Event(ec_subject='User' AND ec_outcome='Success' AND user_dst is NOT NULL AND ec_activity IN ('Create')) -> ( Event(ec_subject='User' AND ec_outcome='Success' AND user_dst is NOT NULL AND ec_activity IN ('Create') AND user_src = a.user_src)) )where timer:within(300 Sec) ]; |
Hinweis |
|
Beispiel Nr. 2:
Entdecken eines Musters, in dem ein Benutzer ein Benutzerkonto erstellt, gefolgt von der Anmeldung dieses Benutzers und der anschließenden Löschung des Benutzerkontos. Im Fall von Windows-Protokollen werden Benutzerinformationen je nach Ereignis entweder in user_dst oder user_src gespeichert.
user_src(create) = user_dst(Login) = user_src(Delete)
EPL Nr. 3:
Name der Regel | CreateUserLoginandDeleteUser |
Regelbeschreibung | Entdecken Sie ein Muster, in dem ein Benutzer ein Benutzerkonto erstellt, gefolgt von der Anmeldung dieses Benutzers, gefolgt vom Löschen des Benutzerkontos. |
Regelcode | SELECT * FROM Event(ec_subject='User' |
Hinweis |
|
EPL Nr. 4: Verwenden von NamedWindows und match_recognize
Name der Regel | CreateUserLoginandDeleteUser |
Regelbeschreibung | Entdecken Sie ein Muster, in dem ein Benutzer ein Benutzerkonto erstellt, gefolgt von der Anmeldung dieses Benutzers, gefolgt vom Löschen des Benutzerkontos. |
Regelcode | @Name('NormalizedWindow') create window FilteredEvents.win:time(300 sec) (user String, ecactivity string, sessionid Long); @Name('UsersrcEvents') Insert into FilteredEvents select user_src as user, ec_activity as ecactivity, sessionid from Event( ec_subject='User' and ec_activity in ('Create','Delete') and ec_theme in ('UserGroup', 'Authentication') and ec_outcome='Success' and user_src is not null ); @Name('UsrdstEvents') Insert into FilteredEvents select user_dst as user, ec_activity as ecactivity, sessionid from Event( ec_subject='User' and ec_activity in (Logon’) and ec_theme in ('UserGroup', 'Authentication') and ec_outcome='Success' and user_dst is not null ); @Name('Pattern') @RSAAlert(oneInSeconds=0, identifiers={"user"}) select * from FilteredEvents |
EPL Nr. 5: Verwenden von Every @RSAAlert(oneInSeconds=0, identifiers={user_src})
SELECT a.time as time,a.ip_src as ip_src,a.user_dst as user_dst,a.ip_dst as ip_dst,a.alias_host as alias_host from pattern[every (a=Event (ec_subject='User' and ec_activity='Create' and ec_theme='UserGroup' and ec_outcome='Success') -> (Event(ec_subject='User' and ec_activity='Logon' and ec_theme='Authentication' and user_src=a.user_dst) -> b=Event(ec_subject='User' and ec_activity='Delete' and ec_theme='UserGroup' and user_dst=a.user_dst))) where timer:within(300 sec)];
Name der Regel | CreateUserLoginandDeleteUser |
Regelbeschreibung | Entdecken Sie ein Muster, in dem ein Benutzer ein Benutzerkonto erstellt, gefolgt von der Anmeldung dieses Benutzers, gefolgt vom Löschen des Benutzerkontos. |
Beispiel Nr. 3:
Übermäßige Anmeldungsfehler von derselben Quell-IP
EPL Nr. 6: @RSAAlert(oneInSeconds=0, identifiers={ip_src})
Name der Regel | ExcessLoginFailure | ||||||||||||||||||||||||||||||||||||||||||||
Regelbeschreibung | Derselbe Benutzer versuchte, sich von derselben Quell-IP anzumelden, und die Anmeldung ist fehlgeschlagen | ||||||||||||||||||||||||||||||||||||||||||||
Regelcode |
| ||||||||||||||||||||||||||||||||||||||||||||
Hinweis |
Obgleich in der folgenden Reihenfolge der Ereignisse bis t=301 10 Anmeldungsfehler für dieselbe Anmeldung in den letzten 300 Sekunden auftraten, wird keine Warnmeldung ausgegeben, da der Ereignisstapel bei t=300 verworfen wurde.
| ||||||||||||||||||||||||||||||||||||||||||||
EPL Nr. 7: @RSAAlert(oneInSeconds=0, identifiers={"ip_src"})
Name der Regel | ExcessLoginFailure |
Regelbeschreibung | Derselbe Benutzer versuchte, sich von derselben Quell-IP anzumelden, und die Anmeldung ist fehlgeschlagen |
Regelcode | SELECT * FROM |
Hinweis |
|
Beispiel Nr. 4:
Mehrere fehlgeschlagene Anmeldungen von verschiedenen Benutzern von derselben Quelle an dasselbe Ziel, ein einzelner Benutzer von mehreren verschiedenen Quellen an dasselbe Ziel.
EPL Nr. 8: Verwenden von groupwin , time_length_batch und unique
Name der Regel | MultiplefailedLogins |
Regelbeschreibung | Es liegen mehrere fehlgeschlagene Anmeldungen für die folgenden Fälle vor: - von mehreren Benutzern von derselben Quelle an dasselbe Ziel. - von einem einzelnen Benutzer von mehreren Quellen an dasselbe Ziel. |
Regelcode | SELECT * FROM |
Hinweis |
|
Beispiel Nr. 5:
Kein Protokollverkehr von einem Gerät in einem vorgegebenen Zeitraum.
EPL Nr. 9: Verwenden von „groupwin“, „time_length“ und „unique“
Name der Regel | NoLogTraffic |
Regelbeschreibung | Es wird kein Protokollverkehr von einem Gerät in einem vorgegebenen Zeitraum festgestellt. |
Regelcode | SELECT * FROM pattern [every a = Event(device_ip IN ('10.0.0.0','10.0.0.1') AND medium = 32) -> (timer:interval (3600 seconds) AND NOT Event(device_ip = a.device_ip AND device_type = a.device_type AND medium = 32))]; |
Hinweis |
|
Beispiel Nr. 6:
Mehrere fehlgeschlagene Anmeldungen vom selben Benutzer, auf die KEIN Sperrungsereignis folgt.
EPL Nr. 10: Verwenden von groupwin , time_length_batch und unique
Name der Regel | FailedloginswoLockout |
Regelbeschreibung | Es gibt mehrere fehlgeschlagene Anmeldungen vom selben Benutzer, auf die KEIN Sperrungsereignis folgt. |
Regelcode |
|
Hinweis |
|
Beispiel Nr. 7:
Benutzerdefinierte Funktionen zum Durchführen von LIKE- und REGEX-Vorgängen für Arrayelemente.
EPL #11: @RSAAlert(oneInSeconds=0)
Name der Regel | MatchLikeRegex |
Regelbeschreibung | Es gibt benutzerdefinierte Funktionen zum Durchführen von LIKE- und REGEX-Vergleichen für Array-Metaschlüssel. |
Regelcode |
|
Hinweis:
1. “.” in Metaschlüsseln muss durch ("_") ersetzt werden.
2. Alle Muster sollten zeitgebunden sein.
3. Verwenden von entsprechenden Tags vor den Aussagen
a) @RSAPersist:
b) @RSAAlert:
Weitere Informationen finden Sie im:
- EPL-Dokumentation: http://www.espertech.com/esper/documentation.php
- EPL-Onlinetool: http://esper-epl-tryout.appspot.com/epltryout/mainform.html