Hi all:
I have a rather complex set of rules that I used to do flood
suppression to prevent jabbering services/hosts from making it to the
rest of the analysis rules and generating bunches of alerts.
I am trying to simplify it by using 3 rules to do the parsing of the
events and then all the rest of the rules use the ptype=Cached to
determine if one of the three parsing rules matched the event.
This all works fine and has let me eliminate 2/3'rd of the original
rules. However I want to print any events that are not parsed by the
three parse rules. However:
type = single
ptype = ncached
pattern = event_recognized
action = write unrecognized $0
doesn't work ($0 is not defined since there isn't any access to the
event in a ncached pattern type), so I need to use the less elegent
(read convoluted)
type = single
ptype = ncached
pattern = event_recognized
action = create event_urecognized
type = single
ptype = regexp
pattern = .
context = event_unrecognized
action = write unrecognized $0; delete event_unrecognized
Could the ncached pattern type make the input event available in some
way? (Granted if the cache is generated by a regexpN type rule, then
having a single line may not be that useful, in which case the
mechanism above would have to be used with a regexpN in place of the
second single command.)
Also when cleaning up my anti-flood rules, I really wanted "auto
cleaning" contexts that are removed when a new event arrives similar
to a cache name (e.g. in the example above the "event_unrecognized"
context should live only for the current event). Maybe:
create context name -1 <action list>
or
create context name 0 <action list>
or
createtmp context name <action list>
could be used to specify these "delete on next event" contexts.
To extend this idea, would a context with a lifetime of just the file
in which it is defined be useful?
So I could use:
create context name -2 [<action list>]
for example to have the context disappear when the event is parsed by
a rule not in the file that created it? This would be useful for
things like
type= single
desc= parse recognized fields from event form 1
continue=takenext
ptype= regexp
pattern=^.{32} ([\w._-]+) (\w+)\[[0-9]+\]:
varmap= event_recognized; curhost=1; cursrv=2
action= create event_recognized_trigger -2
type= single
desc= parse recognized fields from event form 2
continue=takenext
ptype= regexp
pattern=^.{32} ([\w._-]+) (kernel):
context= ! event_recognized_trigger
varmap= event_recognized; curhost=1; cursrv=2
action= create event_recognized_trigger -2
type= single
desc= parse recognized fields from event form 3
continue=takenext
ptype= regexp
pattern=^.{25} ([\w._-]+) (\w+)\[[0-9]+\]:
context= ! event_recognized_trigger
varmap= event_recognized; curhost=1; cursrv=2
action= create event_recognized_trigger -2
type= Single
desc= delete context triggering reporting of unrecognized (uneeded)
continue= takenext
ptype= cached
pattern= event_recognized
action= delete event_recognized_trigger
where the last rule isn't needed if the event_recognized_trigger would
automatically go out of scope outside of rules in the file. (Although
you can jump back into a file by further processing, I claim the
context in this case should be treated like an automatic variable and
not come back if the file is re-entered.)
So I guess these changes to context allow you to define something
similar to "variable scope" in a programming language where I see at
least three useful scopes:
1) maximum lifetime - set by the lifetime value in a create/set action
2) for the lifetime of the event - context delete when event changes
3) while event is processed by rules in the same file - context deleted
when the processing leaves the file in which the context was
defined
1 is currently implemented.
2 can be implemented by adding a rules file that always runs as the
last set of rules that see an event (although jump rules make
verifying this a little tougher as it requires that every jump rule
make sure to call the terminal rules file explicitly).
3 is tougher to do as every rule that can consume an event has to
handle the clean up.
--
-- rouilj
John Rouillard
===========================================================================
My employers don't acknowledge my existence much less my opinions.
------------------------------------------------------------------------------
RSA(R) Conference 2012
Save $700 by Nov 18
Register now
http://p.sf.net/sfu/rsa-sfdev2dev1
_______________________________________________
Simple-evcorr-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/simple-evcorr-users