This looks like a special case of the (slightly) more general rule that I fondly remember implementing in various ways for several in-house application monitoring systems during the 90s:
When n or more events of type X occur within a time window m seconds wide, and no message of type Y has been generated in the last t seconds, then generate a new message of type Y. The implementation is simple: you maintain a queue of time-stamped events of type X and a time-stamp (initially 0) for the "last message of type Y". Each time a new event of type X is added to "fresh" end of the queue you first discard all events more than m seconds old from the "stale" end of the queue and check to see if n or more events remain. If so, then check to see if the "last message of type Y" timestamp is more than t seconds old - if so then generate a new message of type Y and update the timestamp. This seems like such a fundamental event-correlation pattern than IMHO SEC should support it "natively", rather than relying on an external script (or set of scripts). Fun factoid: this a pattern that I hear was originally implemented by TelCos in *analog* form 25+ years earlier - the event queue took the form of a "capacitor" (actually a spring loaded wheel) which "bled" at a fixed rate (unwinding the wheel) and the incoming "events" would load the capacitor (applying torque to the wheel), and when the capacitor hit a certain limit it would ring a bell. Cheers, Peter Wolfenden -----Original Message----- From: Pierre Vigneras [mailto:pierre.vigne...@bull.net] Sent: Tuesday, February 02, 2010 2:26 AM To: Risto Vaarandi Cc: simple-evcorr-users@lists.sourceforge.net Subject: Re: [Simple-evcorr-users] Fw: Complex rule ? Any idea ? Thanks for your reply, I will sketch out some use cases taken from your example: |----'----'----'----|----'----'----'----| A B C B In that case, first three distincts events are ABC, therefore the action is launched. Then, B is also in the window, the action is launched again (threshold is for 3 distinct events, other events within the time interval always raise an action, whether they are distinct or not from previous events). Therefore, result is ABC,B. |----'----'----'----|----'----'----'----| A B C B In that case, result is BCB, obviously: the time window has been shifted towards first B. |----'----'----'----|----'----'----'----| A B C B In that case, nothing happens since there are no 3 distinct events within a 4 seconds time interval. We are still unable to find a satisfactory solution. Thanks again for your reply. Le vendredi 29 janvier 2010 14:50:55, Risto Vaarandi a écrit : > hi Pierre, > > first of all, sorry for the late reply :( > I had a look at the problem description and it seems to me that it would > be quite hard to implement the solution with SingleWithThreshold rule (a > SEC standard rule that would be an easier solution than having custom > Perl code). Unfortunately, in your case there is a requirement to > implement window shifting not when the first event appears to be out of > window, but rather on the occurrence of certain event. > > Also, given the problem description, it is hard to envision how the > window shifting should be implemented for certain cases. For example, > what if you see events in the following order: A, B, C, B. Should the > window be moved to C with dropping event A, or should no shifting done > at all since we would lose A otherwise? > > regards, > risto > > On 01/20/2010 05:53 PM, Pierre Vigneras wrote: > > Hum, sorry, but it seems that this ascii-art representation is really a > > problem !! ;-) > > > > Actually, the quotation makes the events on 2 lines where they should > > only be on one line. Therefore, the result is probably not > > understandable. > > > > Here is what it should look like. I also attach a screenshot in case it > > does not work. > > > > |----'----'----'----|----'----'----'----| > > > > A B A B A C D E > > > > Best Regards. > > > > PS: Hope it will work! > > > > Le mercredi 20 janvier 2010 15:58:33, Risto Vaarandi a écrit : > >> I am forwarding this mail on behalf of a list member. > >> risto > >> > >> --- On Wed, 1/20/10, Pierre Vigneras<pierre.vigne...@bull.net> wrote: > >>> From: Pierre Vigneras<pierre.vigne...@bull.net> > >>> Subject: Complex rule ? Any idea ? > >>> To: simple-evcorr-users-requ...@lists.sourceforge.net > >>> Cc: ris...@users.sourceforge.net > >>> Date: Wednesday, January 20, 2010, 3:25 PM > >>> Dear all, > >>> > >>> Here is a problem we can't find a "good" solution to. Any > >>> idea in that regard > >>> would be appreciated! ;-) > >>> > >>> We would like to implement the following functionnal use > >>> case: "when at least > >>> n warning alerts from distinct hosts are detected within a > >>> given time window, > >>> then an action should be triggered on those hosts during > >>> that time window". > >>> > >>> Warning alerts have a form that allows the identification > >>> of sending host such > >>> as (simplified): > >>> > >>> timestamp host WARNING > >>> 1253021598 phebus WARNING > >>> > >>> Let's take a sample data (please use a fixed font size such > >>> as monospace for > >>> > >>> the following): > >>> |----'----'----'----|----'----'----'----| > >>> > >>> A B A B > >>> A C D E > >>> > >>> > >>> Where |----' represents one unit of time (second), |...| a > >>> window time, > >>> A, B, C, D warning alerts sent by host A, B, C and D > >>> respectively (actually, > >>> received by SEC). > >>> > >>> In our use case, with a window time of 4 seconds and n=3, > >>> we would like an > >>> action to be triggered for hosts B,A,C and D (a script is > >>> first called with > >>> parameter ABC, and another time with parameter D). The > >>> reasoning is the > >>> following: > >>> > >>> On first A, a time window is "opened". On first B, we > >>> "increment the alert > >>> counter" (2: AB). On second A, since we already have an A, > >>> the beginning of > >>> the window is shifted toward the first B (counter=2: BA). > >>> When the second B is > >>> encoutered, there is already a B, therefore, the window is > >>> shifted toward the > >>> second A (counter=2, AB). On third A, we already have an A, > >>> therefore, the > >>> window is also shifted toward B (counter=2, BA). On event > >>> C, we now have 3 > >>> different hosts, therefore, the action is triggered (script > >>> is called with > >>> parameter BAC). Finally, when D is received, we are still > >>> in a time window of > >>> 4 seconds (between last B and D, we only have 3 seconds). > >>> Therefore, the > >>> action is also triggered (script is called with parameter > >>> D). Finally, one > >>> second after D, the time window is closed. The receipt of E > >>> starts a new one > >>> and the process starts again. > >>> > >>> At first, we implemented the use case using a > >>> SingleWithThreshold rule, but it > >>> does not work because it forgets following events after the > >>> threshold has been > >>> reached. Then we used a combination of SingleWithThreshold > >>> rule followed by a > >>> Single rule using a takenext=continue and a context, but it > >>> does not work > >>> either because we are unable to make SEC understand what we > >>> want (counting > >>> only "distincts alerts"). > >>> > >>> We are thinking of a solution based on a lot of Perl code > >>> inside a Single > >>> rule, but this solution looks pretty ugly to us (since most > >>> of the rule > >>> smartness would be in the custom Perl code, not in SEC). We > >>> wonder if there is > >>> a simple way to achieve this in SEC. > >>> > >>> Thanks again for any help. > >>> Best Regards. > >> > >> ------------------------------------------------------------------------ > >>--- --- Throughout its 18-year history, RSA Conference consistently > >> attracts the world's best and brightest in the field, creating > >> opportunities for Conference attendees to learn about information > >> security's most important issues through interactions with peers, > >> luminaries and emerging and established companies. > >> http://p.sf.net/sfu/rsaconf-dev2dev > >> _______________________________________________ > >> Simple-evcorr-users mailing list > >> Simple-evcorr-users@lists.sourceforge.net > >> https://lists.sourceforge.net/lists/listinfo/simple-evcorr-users > > > > ------------------------------------------------------------------------- > >----- Throughout its 18-year history, RSA Conference consistently attracts > > the world's best and brightest in the field, creating opportunities for > > Conference attendees to learn about information security's most important > > issues through interactions with peers, luminaries and emerging and > > established companies. http://p.sf.net/sfu/rsaconf-dev2dev > > > > > > > > _______________________________________________ > > Simple-evcorr-users mailing list > > Simple-evcorr-users@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/simple-evcorr-users > -- HPC R&D BARD / Bruyères-Le-Châtel Bull, Architect of an Open World TM (www.bull.com) Direct Line: +33 (0)1 69 26 56 95 ------------------------------------------------------------------------------ The Planet: dedicated and managed hosting, cloud storage, colocation Stay online with enterprise data centers and the best network in the business Choose flexible plans and management services without long-term contracts Personal 24x7 support from experience hosting pros just a phone call away. http://p.sf.net/sfu/theplanet-com _______________________________________________ Simple-evcorr-users mailing list Simple-evcorr-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/simple-evcorr-users ------------------------------------------------------------------------------ The Planet: dedicated and managed hosting, cloud storage, colocation Stay online with enterprise data centers and the best network in the business Choose flexible plans and management services without long-term contracts Personal 24x7 support from experience hosting pros just a phone call away. http://p.sf.net/sfu/theplanet-com _______________________________________________ Simple-evcorr-users mailing list Simple-evcorr-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/simple-evcorr-users