-
Notifications
You must be signed in to change notification settings - Fork 301
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Filter bot #569
Comments
Because not every message has every field, "field exists" and "field does not exist" filters are necessary (or handle not exists fields as null). And then at least |
Agreed. EDIT 2018-06-04 @wagner-certat: fix citation syntax |
An enhancement of the filters would be great. Do these ideas also include a "choice of output queues", for example: Can this be realised? |
Currently not, but definitely on the wishlist. |
FYI: I'm going to start working on the RegEx thing, later it is going to be extended, in order to be capable of understanding the extras-JSON. |
The extras-Field should actually be a native dict (or similar) and its JSON-representation should just be used for outputs and in the message queue. The usage of json for extra in intelmq itself is a shortcoming in the current version. |
See #676 for RegEx in the Filter Expert. |
Idea: What about using Conditioned Pipelines additional to filters? Each destination pipeline has an entry-condition which has to be met before an event is inserted into the pipeline. Maybe you can imagine it like a bouncer in front of a club. The default condition for each pipeline is How might this look in a
Problems:
Questions:
|
What are bounced events? |
Bounced events are those events which were not fit to get into the destination pipeline. |
Named destination queues are in develop branch, for support in filter expert see #1208 |
I created a new issue for the Conditioned Pipelines, so this issue can focus on the filter bot's capabilities itself as existing solution |
the sieve bot can cover all of them. |
During a workshop we collected some feedback on needed filtering possibilities. We now came up with this list of useful comparisons. Could be implemented by an abstract base class and derived specific classes.
I used pseudo code for easier reading.
Generic filter
The filter bot shall support these generic filtering comparisons:
Match any key in the event against a value with these comparison operators:
==
<
,>
<=
,>=
!=
in
, e.g.source.asn in [1234, 1235]
~=
, matching: extended regex, withre.search
(ENH: Filterexpert can now use RegEx #676)is not None
is None
Ip specific filtering
In particular, the filter bot shall have a derived class "IPAddressFilter" which can compare:
source.ip, destination.ip, source.network, destination.network against a value with these comparators:
ip = '192.0.2.1'
ip in '192.0.2.1-192.0.2.10'
ip in ['192.0.2.1', '192.0.2.2']
ip in '192.0.2.0/24'
ip in ['192.0.2.1-192.0.2.10', '192.0.2.100/28']
source.ip
anddestination.ip
Time specific filtering:
Again this is a derived class.
Compare time.source, time.observation via:
<
,>
<=
,>=
==
!=
comments appreciated
EDIT 2016-07-18: Added exists
EDIT 2016-09-07: ip-filtering: different entries in lists
The text was updated successfully, but these errors were encountered: