Snort mailing list archives
Re: Question on port lists and negation
From: Matt Kettler <mkettler () evi-inc com>
Date: Tue, 09 Oct 2007 18:01:18 -0400
Jason wrote:
Matt Kettler wrote:Jason wrote:Hi Matt, Thanks for your comments. I don't understand why these packets are "no different". The MY_HTTP_PORTS variable includes 8000. If I negate MY_HTTP_PORTS in my rule, why do I get an alert on 192.168.2.105:50970 -> 192.168.2.103:8000? Is it because port 8000 in the packet is not other ports in the variable, like 80, 81, etc.?NOTE: I've not had a chance to look at the code, I could be wrong, please verify. I think there may two issues working together. 1) not(80 and 81 and 82...) is different than (not 81 and not 81...) 2) not(80 and 81 and 82...) will always be trueBy that same logic, [80,81,82..] aka (80 and 81 and 82) would always be false, which would make the syntax completely worthless. AFAIK, all the "comma" operators are OR operators, not AND. It's the only sensible operator to use here. so ![80,81,82..] is: not (80 or 81 or 82) and it should work the way you expect. However, with OR you have to be careful of trying to negate inside the brackets, ie: [!80,!81,!82..] would become: (not 80) or (not 81) or (not 82) which is always true...I readily admit I did not put a lot of thought into it. So... Which way is it?
A comma inside the [] for a port or IP on a rule is an OR operator, and a BOOLEAN OR at that. It CANNOT be an AND, as it would be dysfunctional to the point of making any rule using [a,b] completely pointless. It would never match anything if a and b were not equal, and at that point, it is stupid. Your large table of operations confuses me greatly, but it may be because I don't understand your syntax.
(80 == !(80 || 80)) : 0 !(80 == (80 || 80)) : 1
What are those two supposed to represent, logically speaking, and how do they differ? From my C-code centered view I read (80 == !(80 || 80)) as: (80 "is equal to" not ( 80 BOOLEAN OR 80)) Which is nonsense. You don't boolean OR together two integers. You can, but it's pointless nonsense. using [80,81] in for a dport rule would be read as: match if dport is equal to 80 or dport is equal to 81. Which I would express as: (dport == 80 || dport == 81) ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ _______________________________________________ Snort-users mailing list Snort-users () lists sourceforge net Go to this URL to change user options or unsubscribe: https://lists.sourceforge.net/lists/listinfo/snort-users Snort-users list archive: http://www.geocrawler.com/redir-sf.php3?list=snort-users
Current thread:
- Question on port lists and negation Richard Bejtlich (Oct 08)
- Re: Question on port lists and negation Matt Kettler (Oct 08)
- Re: Question on port lists and negation Scott Dexter (Oct 08)
- Re: Question on port lists and negation Jeffrey Denton (Oct 08)
- Re: Question on port lists and negation Matthew Watchinski (Oct 08)
- Re: Question on port lists and negation Richard Bejtlich (Oct 08)
- Re: Question on port lists and negation Jason (Oct 08)
- Re: Question on port lists and negation Matt Kettler (Oct 09)
- Re: Question on port lists and negation Jason (Oct 09)
- Re: Question on port lists and negation Matt Kettler (Oct 09)
- Re: Question on port lists and negation Jason (Oct 09)
- Re: Question on port lists and negation Richard Bejtlich (Oct 08)
- Re: Question on port lists and negation Matt Kettler (Oct 08)
- Re: Question on port lists and negation John Curry (Oct 08)
- Re: Question on port lists and negation Richard Bejtlich (Oct 09)