From: Russ Combs (rucombs)
Date: Wed, 22 Aug 2018 14:19:11 +0000 (-0400)
Subject: Merge pull request #1339 in SNORT/snort3 from default_docs to master
X-Git-Tag: 3.0.0-247~3
X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f92dc20c22200c55d11513e8b8dc9ca889cf87ea;p=thirdparty%2Fsnort3.git
Merge pull request #1339 in SNORT/snort3 from default_docs to master
Squashed commit of the following:
commit fa2e48976df06627fe62c6ff50de15749fcd3e10
Author: Russ Combs
Date: Mon Aug 20 17:09:36 2018 -0400
docs: update default html, pdf, and text user manuals
---
diff --git a/doc/snort_manual.html b/doc/snort_manual.html
index 4f3cc8817..53de3d0b8 100644
--- a/doc/snort_manual.html
+++ b/doc/snort_manual.html
@@ -779,7 +779,7 @@ asciidoc.install(2);
+
+
Known Issues
+
-
The dump DAQ will not work with multiple threads unless you use --daq-var
- file=/dev/null. This will be fixed in at some point to use the Snort log
+ output=none. This will be fixed at some point to use the Snort log
directory, etc.
-
-configure will use clang by default if it is installed. To compile
- with g instead:
-
-
-
--
-
If you build with hyperscan on OS X and see:
@@ -2683,6 +2680,18 @@ libhs. You can also do:
/path-to/libhs.4.0.dylib src/snort
+
+
+Snort built with tcmalloc support (--enable-tcmalloc) on Ubuntu 17.04/18.04
+ crashes immediately.
+
+
+
+
Workaround:
+Uninstall gperftools 2.5 provided by the distribution and install gperftools
+2.7 before building Snort.
+
+
@@ -3066,6 +3075,208 @@ kill -hup <pid>
This section explains how to use key features of Snort.
+
Active Response
+
Snort can take more active role in securing network by sending active
+responses to shutdown offending sessions. When active responses is
+enabled, snort will send TCP RST or ICMP unreachable when dropping a
+session.
+
+
Changes from Snort 2.9
+
+-
+
+stream5_global:max_active_responses and min_response_seconds are now
+active.max_responses and active.min_interval.
+
+
+-
+
+Response actions were removed from IPS rule body to the rule action
+in the header. This includes react, reject, and rewrite (split out of
+replace which now just does the detection part). These IPS actions are
+plugins.
+
+
+-
+
+drop and block are synonymous in Snort 2.9 but in Snort 3.0 drop means
+don’t forward the current packet only whereas block means don’t forward
+this or any following packet on the flow.
+
+
+
+
+
+
+
Active response is enabled by configuring one of following IPS action
+plugins:
+
+
+
react = { }
+reject = { }
+rewrite = { }
+
+
Active responses will be performed for reject, react or rewrite IPS rule
+actions, and response packets are encoded based on the triggering packet.
+TTL will be set to the value captured at session pickup.
+
Configure the number of attempts to land a TCP RST within the session’s
+current window (so that it is accepted by the receiving TCP). This
+sequence "strafing" is really only useful in passive mode. In inline mode
+the reset is put straight into the stream in lieu of the triggering packet
+so strafing is not necessary.
+
Each attempt (sent in rapid succession) has a different sequence number.
+Each active response will actually cause this number of TCP resets to be
+sent. TCP data is multiplied similarly. At most 1 ICMP unreachable is sent,
+iff attempts > 0.
+
Device IP will perform network layer injection. It is probably a better
+choice to specify an interface and avoid kernel routing tables, etc.
+
dst_mac will change response destination MAC address, if the device is
+eth0, eth1, eth2 etc. Otherwise, response destination MAC address is
+derived from packet.
+
+
+
+
active =
+{
+ attempts = 2,
+ device = "eth0",
+ dst_mac = "00:06:76:DD:5F:E3",
+}
+
+
+
+
Reject
+
IPS action reject perform active response to shutdown hostile network
+session by injecting TCP resets (TCP connections) or ICMP unreachable
+packets.
+
+
+
+
reject = { reset = "both", control = "all" }
+
+
+
+
local_rules =
+[[
+reject tcp ( msg:"hostile connection"; flow:established, to_server;
+content:"HACK!"; sid:1; )
+]]
+
+
+
+
ips =
+{
+ rules = local_rules,
+}
+
+
+
+
React
+
IPS action react enables sending an HTML page on a session and then
+resetting it.
+
The page to be sent can be read from a file:
+
+
+
react = { page = "custmized_block_page.html", }
+
+
or else the default is used:
+
+
+
<default_page> ::= \
+ "HTTP/1.1 403 Forbidden\r\n"
+ "Connection: close\r\n"
+ "Content-Type: text/html; charset=utf-8\r\n"
+ "\r\n"
+ "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\"\r\n" \
+ " \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\r\n" \
+ "<html xmlns=\"http://www.w3.org/1999/xhtml\"
+ xml:lang=\"en\">\r\n" \
+ "<head>\r\n" \
+ "<meta http-equiv=\"Content-Type\" content=\"text/html;
+ charset=UTF-8\" />\r\n" \
+ "<title>Access Denied</title>\r\n" \
+ "</head>\r\n" \
+ "<body>\r\n" \
+ "<h1>Access Denied</h1>\r\n" \
+ "<p>%s</p>\r\n" \
+ "</body>\r\n" \
+ "</html>\r\n";
+
+
Note that the file must contain the entire response, including any HTTP
+headers. In fact, the response isn’t strictly limited to HTTP. You could
+craft a binary payload of arbitrary content.
+
When the rule is configured, the page is loaded and the %s is replaced
+with the selected message, which defaults to:
+
+
+
"You are attempting to access a forbidden site.<br />" \
+"Consult your system administrator for details."
+
+
Additional formatting operators beyond a single %s are prohibited,
+including %d, %x, %s, as well as any URL encodings such as as %20 (space)
+that may be within a reference URL.
+
+
+
+
react = { page = "my_block_page.html" }
+
+
+
+
local_rules =
+[[
+react http ( msg:"Unauthorized Access Prohibited!"; flow:established,
+to_server; http_method; content:"GET"; sid:1; )
+]]
+
+
+
+
ips =
+{
+ rules = local_rules,
+}
+
+
+
+
Rewrite
+
IPS action rewrite enables overwrite packet contents based on "replace"
+option in the rules.
+
+
+
+
rewrite = { }
+local_rules =
+[[
+rewrite tcp 10.1.1.87 any -> 10.1.1.0/24 80
+(
+ sid:1000002;
+ msg:"test replace rule";
+ content:"index.php", nocase;
+ replace:"indax.php";
+)
+]]
+
+
+
+
ips =
+{
+ rules = local_rules,
+}
+
+
this rule replaces "index.php" with "indax.php", and rewrite action
+updates that packet.
+
to enable rewrite action:
+
+
the replace operation can be disabled by changing the configuration:
+
+
+
rewrite = { disable_replace = true }
+
+
+
+
AppId
Network administrators need application awareness in order to fine tune
their management of the ever-growing number of applications passing traffic
@@ -3479,6 +3690,14 @@ by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
if (data & value) { do_something(); }
+
! operator negates the results from the base check. !<oper> is
+considered as
+
Note:
The bitmask option applies bitwise AND operator on the bytes
converted. The result will be right-shifted by the number of bits
@@ -4853,8 +5072,7 @@ zip-style compression:
MDTM commands that set the modification time on a file. The most common
among servers that do, accept a format using YYYYMMDDHHmmss[.uuu]. Some
others accept a format using YYYYMMDDHHmmss[+|-]TZ format. The example
-above is for the first case (time format as specified in
-
https://tools.ietf.org/html/draft-ietf-ftpext-mlst-16)
+above is for the first case.
To check validity for a server that uses the TZ format, use the following:
@@ -5634,6 +5852,208 @@ be fully integrated with http_inspect to provide full inspection of the
individual HTTP/1.1 streams.
+
Module Trace
+
Snort 3 retired the different flavors of debug macros that used to be set
+through environment variable SNORT_DEBUG. It was replaced by a module specific
+trace. Trace is turned on by setting the module-specific trace bitmask in
+snort.lua. As before, in order to enable it, snort has to be configured and
+built with --enable-debug-msgs.
+
+
Debugging rules using detection trace
+
Detection engine is responsible for rule evaluation. Turning on the
+trace for it can help with debugging new rules.
+
The relevant options for detection are as follow (represented as hex):
+
+
+
0x2 - follow rule evaluation
+0x4 - print evaluated buffer if it changed
+0x8 - print evaluated buffer at every step
+0x10 - print value of ips rule options vars
+0x20 - print information on fast pattern search
+
+
Buffer print is useful, but in case the buffer is very big can be too verbose.
+Choose between 0x4, 0x8 or no buffer trace accordingly.
+
0x10 is useful when the rule is using ips rule options vars.
+
+
+
Example - rule evaluation traces:
+
In snort.lua, the following line was added:
+
detection = {trace = 0x20 + 0x10 + 0x2 + 0x4}
+
The pcap has a single packet with payload:
+10.AAAAAAAfoobar
+
+
+
+
# byte_math + oper with byte extract and content
+# VAL = 1, byte_math = 0 + 10
+alert tcp ( byte_extract: 1, 0, VAL, string, dec;
+byte_math:bytes 1,offset VAL,oper +, rvalue 10, result var1, string dec;
+content:"foo", offset var1; sid:3)
+
+
+
+
#This rule should not trigger
+alert tcp (content:"AAAAA"; byte_jump:2,0,relative;
+content:"foo", within 3; sid:2)
+
+
+
+
+
detection: packet 1 C2S 127.0.0.1:1234 127.0.0.1:5678
+detection: Fast pattern search
+detection: 1 fp packet[16]
+
+
+
+
snort.raw[16]:
+- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+31 30 00 41 41 41 41 41 41 41 66 6F 6F 62 61 72 10.AAAAAAAfoobar
+- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+detection: Processing pattern match #1
+detection: Fast pattern packet[5] = 'AAAAA' |41 41 41 41 41 | ( )
+detection: Starting tree eval
+detection: Evaluating option content, cursor name pkt_data, cursor position 0
+
+
+
+
snort.raw[16]:
+- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+31 30 00 41 41 41 41 41 41 41 66 6F 6F 62 61 72 10.AAAAAAAfoobar
+- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+detection: Rule options variables:
+var[0]=0 var[1]=0 var[2]=0
+detection: Evaluating option byte_jump, cursor name pkt_data, cursor position 8
+
+
+
+
snort.raw[8]:
+- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+41 41 66 6F 6F 62 61 72 AAfoobar
+- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+detection: no match
+detection: Rule options variables:
+var[0]=0 var[1]=0 var[2]=0
+detection: Evaluating option byte_jump, cursor name pkt_data, cursor position 9
+
+
+
+
snort.raw[7]:
+- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+41 66 6F 6F 62 61 72 Afoobar
+- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+detection: no match
+detection: Rule options variables:
+var[0]=0 var[1]=0 var[2]=0
+detection: Evaluating option byte_jump, cursor name pkt_data, cursor position 10
+
+
+
+
snort.raw[6]:
+- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+66 6F 6F 62 61 72 foobar
+- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+detection: no match
+detection: no match
+detection: Processing pattern match #2
+detection: Fast pattern packet[3] = 'foo' |66 6F 6F | ( )
+detection: Starting tree eval
+detection: Evaluating option byte_extract, cursor name pkt_data, cursor position 0
+
+
+
+
snort.raw[16]:
+- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+31 30 00 41 41 41 41 41 41 41 66 6F 6F 62 61 72 10.AAAAAAAfoobar
+- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+detection: Rule options variables:
+var[0]=1 var[1]=0 var[2]=0
+detection: Evaluating option byte_math, cursor name pkt_data, cursor position 1
+
+
+
+
snort.raw[15]:
+- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+30 00 41 41 41 41 41 41 41 66 6F 6F 62 61 72 0.AAAAAAAfoobar
+- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+detection: Rule options variables:
+var[0]=1 var[1]=10 var[2]=0
+detection: Evaluating option content, cursor name pkt_data, cursor position 2
+
+
+
+
snort.raw[14]:
+- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+00 41 41 41 41 41 41 41 66 6F 6F 62 61 72 .AAAAAAAfoobar
+- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+detection: Rule options variables:
+var[0]=1 var[1]=10 var[2]=0
+detection: Reached leaf, cursor name pkt_data, cursor position 13
+
+
+
+
snort.raw[3]:
+- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+62 61 72 bar
+- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+detection: Matched rule gid:sid:rev 1:3:0
+detection: Rule options variables:
+var[0]=1 var[1]=10 var[2]=0
+04/22-20:21:40.905630, 1, TCP, raw, 56, C2S, 127.0.0.1:1234, 127.0.0.1:5678, 1:3:0, allow
+
+
+
+
Protocols decoding trace
+
Turning on decode trace will print out information about the packets decoded
+protocols. Can be useful in case of tunneling.
+
Example for a icmpv4-in-ipv6 packet:
+
In snort.lua, the following line was added:
+
+
+
+
+
decode: Codec eth (protocol_id: 34525) ip header starts at: 0x7f70800110f0, length is 14
+decode: Codec ipv6 (protocol_id: 1) ip header starts at: 0x7f70800110f0, length is 40
+decode: Codec icmp4 (protocol_id: 256) ip header starts at: 0x7f70800110f0, length is 8
+decode: Codec unknown (protocol_id: 256) ip header starts at: 0x7f70800110f0, length is 0
+
+
+
+
Other available traces
+
There are more trace options supported by detection:
+
+
+
0x1 - prints statistics about the engine
+0x40 - prints a message when disabling content detect for packet
+0x80 - prints option tree data structure
+0x100 - prints a message when a new tag is added
+
+
Detection is the only module that support multiple options for trace.
+
The rest support only 1 option, and can be turned on by adding trace = 1 to
+their lua config.
+
+-
+
+stream module trace:
+
+
+
+
When turned on prints a message in case inspection is stopped on a flow.
+Example for output:
+
stream: stop inspection on flow, dir BOTH
+
+
Other modules that support trace have messages as seemed fit to the developer.
+Some are for corner cases, other for complex data structures prints. Current
+list of additional modules supporting trace: appid, dce_smb, gtp_inspect and
+dce_udp.
+
+
+
The new and improved performance monitor! Is your sensor being bogged down by
too many flows? perf_monitor! Why are certain TCP segments being dropped without
@@ -5757,46 +6177,30 @@ imap traffic.
Configuration
POP inspector and IMAP inspector offer same set of configuration options
-for MIME decoding depth:
+for MIME decoding depth. These depths range from 0 to 65535 bytes. Setting
+the value to 0 ("do none") turns the feature off. Alternatively the value
+-1 means an unlimited amount of data should be decoded. If you do not
+specify the default value is 1460 bytes.
+
The depth limits apply per attachment. They are:
b64_decode_depth
-
This config option is used to turn off/on or set the base64 decoding depth
-used to decode the base64 encoded MIME attachments. The value ranges from
--1 to 65535. A value of -1 turns off the base64 decoding of MIME
-attachments. The value of 0 sets the decoding of base64 encoded MIME
-attachments to unlimited. A value other than 0 or -1 restricts the
-decoding of base64 MIME attachments, and applies per attachment. The
-default value is 1460.
+
Set the base64 decoding depth used to decode the base64-encoded MIME
+attachments.
qp_decode_depth
-
This config option is used to turn off/on or set the Quoted-Printable
-decoding depth used to decode the Quoted-Printable(QP) encoded MIME
-attachments. The value ranges from -1 to 65535. A value of -1 turns off
-the QP decoding of MIME attachments.
-The value of 0 sets the decoding of QP encoded MIME attachments to
-unlimited. A value other than 0 or -1 restricts the decoding of QP MIME
-attachments, and applies per attachment.
+
Set the Quoted-Printable (QP) decoding depth used to decode QP-encoded
+MIME attachments.
bitenc_decode_depth
-
This config option is used to turn off/on or set the non-encoded MIME
-extraction depth used to extract the non-encoded MIME attachments. The
-value ranges from -1 to 65535. A value of -1 turns off the extraction of
-these MIME attachments.
-The value of 0 sets the extraction of these MIME attachments to unlimited.
-A value other than 0 or -1 restricts the extraction of these MIME
-attachments, and applies per attachment.
+
Set the non-encoded MIME extraction depth used for non-encoded MIME
+attachments.
uu_decode_depth
-
This config option is used to turn off/on or set the Unix-to-Unix decoding
-depth used to decode the Unix-to-Unix(UU) encoded attachments. The value
-ranges from -1 to 65535. A value of -1 turns off the UU decoding of POP
-attachments.
-The value of 0 sets the decoding of UU encoded POP attachments to
-unlimited. A value other than 0 or -1 restricts the decoding of UU POP
-attachments, and applies per attachment.
+
Set the Unix-to-Unix (UU) decoding depth used to decode UU-encoded
+attachments.
Examples
@@ -5832,15 +6236,15 @@ attachments, and applies per attachment.
imap =
{
- qp_decode_depth = 15,
+ qp_decode_depth = 500,
}
pop =
{
- qp_decode_depth = 0,
- b64_decode_depth = 10,
+ qp_decode_depth = -1,
+ b64_decode_depth = 3000,
}
@@ -6440,44 +6844,13 @@ and server.
See CVE-2005-0560 for a description of the vulnerability.
-
b64_decode_depth
-
This config option is used to turn off/on or set the base64 decoding depth
-used to decode the base64 encoded MIME attachments. The value ranges from
--1 to 65535. A value of -1 turns off the base64 decoding of MIME
-attachments. The value of 0
-sets the decoding of base64 encoded MIME attachments to unlimited. A value
-other than 0 or -1 restricts the decoding of base64 MIME attachments, and
-applies per attachment.
-
-
-
qp_decode_depth
-
This config option is used to turn off/on or set the Quoted-Printable
-decoding depth used to decode the Quoted-Printable(QP) encoded MIME
-attachments. The value ranges from -1 to 65535. A value of -1 turns off
-the QP decoding of MIME attachments.
-The value of 0 sets the decoding of QP encoded MIME attachments to
-unlimited. A value other than 0 or -1 restricts the decoding of QP MIME
-attachments, and applies per attachment.
-
-
-
bitenc_decode_depth * default to 25
-
This config option is used to turn off/on or set the non-encoded MIME
-extraction depth used to extract the non-encoded MIME attachments. The
-value ranges from -1 to 65535. A value of -1 turns off the extraction of
-these MIME attachments.
-The value of 0 sets the extraction of these MIME attachments to unlimited.
-A value other than 0 or -1 restricts the extraction of these MIME
-attachments, and applies per attachment.
-
-
-
uu_decode_depth
-
This config option is used to turn off/on or set the Unix-to-Unix decoding
-depth used to decode the Unix-to-Unix(UU) encoded attachments. The value
-ranges from -1 to 65535. A value of -1 turns off the UU decoding of SMTP
-attachments.
-The value of 0 sets the decoding of UU encoded SMTP attachments to
-unlimited. A value other than 0 or -1 restricts the decoding of UU SMTP
-attachments, and applies per attachment.
+
MIME processing depth parameters
+
These four MIME processing depth parameters are identical to their POP and
+IMAP counterparts. See that section for further details.
+
b64_decode_depth
+qp_decode_depth
+bitenc_decode_depth
+uu_decode_depth
Log Options
@@ -6669,7 +7042,7 @@ int
active.max_responses = 0: maximum number of responses { 0:
-int active.min_interval = 255: minimum number of seconds between responses { 1: }
+int active.min_interval = 255: minimum number of seconds between responses { 1:255 }
@@ -6838,7 +7211,7 @@ bool daq.no_promisc = false: whether to put DAQ device into pro
-
-daq.pcaps: total files and interfaces processed (sum)
+daq.pcaps: total files and interfaces processed (max)
-
@@ -7021,6 +7394,11 @@ int detection.pcre_match_limit_recursion = 1500: limit pcre sta
-
+bool detection.enable_address_anomaly_checks = false: enable check and alerting of address anomalies
+
+
+-
+
int detection.trace: mask for enabling debug traces in module
@@ -7454,14 +7832,6 @@ string ips.uuid = 00000000-0000-0000-0000-000000000000: IPS pol
-
-
latency
@@ -7713,14 +8083,36 @@ bool output.verbose = false: be verbose (same as -v)
bool output.wide_hex_dump = true: output 20 bytes per lines instead of 16 when dumping buffers
+
+
+
+
packet_tracer
+
What: generate debug trace messages for packets
+
+
+
+
+
+
-
-bool output.enable_packet_trace = false: enable summary output of state that determined packet verdict
+packet_tracer.enable(proto, src_ip, src_port, dst_ip, dst_port): enable packet tracer debugging
-
-enum output.packet_trace_output = console: select where to send packet trace { console | file }
+packet_tracer.disable(): disable packet tracer
@@ -8028,7 +8420,7 @@ int
search_engine.max_queue_events = 5: maximum number of match
-bool search_engine.detect_raw_tcp = true: detect on TCP payload before reassembly
+bool search_engine.detect_raw_tcp = false: detect on TCP payload before reassembly
@@ -8642,6 +9034,11 @@ implied snort.--stdin-rules: read rules from stdin until EOF or
+implied snort.--talos: enable Talos inline rule test mode (same as --tweaks talos -Q -q)
+
+
+
+
implied snort.--treat-drop-as-alert: converts drop, sdrop, and reject rules into alert rules during startup
@@ -8652,6 +9049,11 @@ implied
snort.--treat-drop-as-ignore: use drop, sdrop, and reje
+string snort.--tweaks: tune configuration
+
+
+
+
string snort.--catch-test: comma separated list of cat unit test tags or all
@@ -8720,6 +9122,16 @@ int
snort.--x2c: output ASCII char for given hex (see also --c2
string
snort.--x2s: output ASCII string for given byte code (see also --x2c)
+
+
+implied snort.--trace: turn on main loop debug trace
+
+
+
+
+int snort.trace: mask for enabling debug traces in module
+
+
ipv4
-
What: support for Internet protocol v4
+
What: support for Internet protocol v4 (DLT 228)
@@ -9458,7 +9875,7 @@ bool
esp.decode_esp = false: enable for inspection of esp traff
ipv6
-
What: support for Internet protocol v6
+
What: support for Internet protocol v6 (DLT 229)
@@ -10081,6 +10498,11 @@ protocols beyond basic decoding.
-
+int appid.first_decrypted_packet_debug = 0: the first packet of an already decrypted SSL flow (debug single session only) { 0: }
+
+
+-
+
int appid.memcap = 0: disregard - not implemented { 0: }
@@ -10126,37 +10548,63 @@ bool appid.dump_ports = false: enable dump of appid port inform
-
-addr appid.session_log_filter.src_ip = 0.0.0.0/32: source IP address in CIDR format
+string appid.tp_appid_path: path to third party appid dynamic library
-
-addr appid.session_log_filter.dst_ip = 0.0.0.0/32: destination IP address in CIDR format
+string appid.tp_appid_config: path to third party appid configuration file
-
-port appid.session_log_filter.src_port: source port { 1: }
+bool appid.log_all_sessions = false: enable logging of all appid sessions
-
-port appid.session_log_filter.dst_port: destination port { 1: }
+int appid.trace: mask for enabling debug traces in module
+
+
+
-
-string appid.session_log_filter.protocol: IP protocol
+appid.enable_debug(proto, src_ip, src_port, dst_ip, dst_port): enable appid debugging
-
-bool appid.session_log_filter.log_all_sessions = false: enable logging for all appid sessions
+appid.disable_debug(): disable appid debugging
+
+
+
-
-bool appid.log_all_sessions = false: enable logging of all appid sessions
+appid.packets: count of packets received (sum)
+
+
+-
+
+appid.processed_packets: count of packets processed (sum)
+
+
+-
+
+appid.ignored_packets: count of packets ignored (sum)
+
+
+-
+
+appid.total_sessions: count of sessions created (sum)
+
+
+-
+
+appid.appid_unknown: count of sessions where appid could not be determined (sum)
@@ -10527,6 +10975,11 @@ string dce_smb.smb_invalid_shares: SMB shares to alert on
bool dce_smb.smb_legacy_mode = false: inspect only SMBv1
+
+
+int dce_smb.trace: mask for enabling debug traces in module
+
+
@@ -11503,6 +11961,46 @@ bool dnp3.check_crc = false: validate checksums in DNP3 link la
+
domain_filter
+
What: alert on configured HTTP domains
+
+
+
+
+
+
+
+
+
+
dpx
What: dynamic inspector example
@@ -12031,6 +12529,11 @@ string
gtp_inspect[].infos[].name: information element name
int
gtp_inspect[].infos[].length = 0: information element type code { 0:255 }
+
+
+int gtp_inspect.trace: mask for enabling debug traces in module
+
+
@@ -12426,317 +12929,327 @@ bool http_inspect.show_scan = false: display scanned segments
-
-119:35 (http_inspect) anomalous http server on undefined HTTP port
+119:101 (http_inspect) anomalous http server on undefined HTTP port
+
+
+-
+
+119:102 (http_inspect) invalid status code in HTTP response
+
+
+-
+
+119:103 (http_inspect) unused event number—should not appear
-
-119:36 (http_inspect) invalid status code in HTTP response
+119:104 (http_inspect) HTTP response has UTF charset that failed to normalize
-
-119:37 (http_inspect) unused event number—should not appear
+119:105 (http_inspect) HTTP response has UTF-7 charset
-
-119:38 (http_inspect) HTTP response has UTF charset that failed to normalize
+119:106 (http_inspect) HTTP response gzip decompression failed
-
-119:39 (http_inspect) HTTP response has UTF-7 charset
+119:107 (http_inspect) server consecutive small chunk sizes
-
-119:40 (http_inspect) HTTP response gzip decompression failed
+119:108 (http_inspect) unused event number—should not appear
-
-119:41 (http_inspect) server consecutive small chunk sizes
+119:109 (http_inspect) javascript obfuscation levels exceeds 1
-
-119:42 (http_inspect) unused event number—should not appear
+119:110 (http_inspect) javascript whitespaces exceeds max allowed
-
-119:43 (http_inspect) javascript obfuscation levels exceeds 1
+119:111 (http_inspect) multiple encodings within javascript obfuscated data
-
-119:44 (http_inspect) javascript whitespaces exceeds max allowed
+119:112 (http_inspect) SWF file zlib decompression failure
-
-119:45 (http_inspect) multiple encodings within javascript obfuscated data
+119:113 (http_inspect) SWF file LZMA decompression failure
-
-119:46 (http_inspect) SWF file zlib decompression failure
+119:114 (http_inspect) PDF file deflate decompression failure
-
-119:47 (http_inspect) SWF file LZMA decompression failure
+119:115 (http_inspect) PDF file unsupported compression type
-
-119:48 (http_inspect) PDF file deflate decompression failure
+119:116 (http_inspect) PDF file cascaded compression
-
-119:49 (http_inspect) PDF file unsupported compression type
+119:117 (http_inspect) PDF file parse failure
-
-119:50 (http_inspect) PDF file cascaded compression
+119:201 (http_inspect) not HTTP traffic
-
-119:51 (http_inspect) PDF file parse failure
+119:202 (http_inspect) chunk length has excessive leading zeros
-
-119:52 (http_inspect) not HTTP traffic
+119:203 (http_inspect) white space before or between messages
-
-119:53 (http_inspect) chunk length has excessive leading zeros
+119:204 (http_inspect) request message without URI
-
-119:54 (http_inspect) white space before or between messages
+119:205 (http_inspect) control character in reason phrase
-
-119:55 (http_inspect) request message without URI
+119:206 (http_inspect) illegal extra whitespace in start line
-
-119:56 (http_inspect) control character in reason phrase
+119:207 (http_inspect) corrupted HTTP version
-
-119:57 (http_inspect) illegal extra whitespace in start line
+119:208 (http_inspect) unknown HTTP version
-
-119:58 (http_inspect) corrupted HTTP version
+119:209 (http_inspect) format error in HTTP header
-
-119:59 (http_inspect) unknown HTTP version
+119:210 (http_inspect) chunk header options present
-
-119:60 (http_inspect) format error in HTTP header
+119:211 (http_inspect) URI badly formatted
-
-119:61 (http_inspect) chunk header options present
+119:212 (http_inspect) unrecognized type of percent encoding in URI
-
-119:62 (http_inspect) URI badly formatted
+119:213 (http_inspect) HTTP chunk misformatted
-
-119:63 (http_inspect) unrecognized type of percent encoding in URI
+119:214 (http_inspect) white space adjacent to chunk length
-
-119:64 (http_inspect) HTTP chunk misformatted
+119:215 (http_inspect) white space within header name
-
-119:65 (http_inspect) white space adjacent to chunk length
+119:216 (http_inspect) excessive gzip compression
-
-119:66 (http_inspect) white space within header name
+119:217 (http_inspect) gzip decompression failed
-
-119:67 (http_inspect) excessive gzip compression
+119:218 (http_inspect) HTTP 0.9 requested followed by another request
-
-119:68 (http_inspect) gzip decompression failed
+119:219 (http_inspect) HTTP 0.9 request following a normal request
-
-119:69 (http_inspect) HTTP 0.9 requested followed by another request
+119:220 (http_inspect) message has both Content-Length and Transfer-Encoding
-
-119:70 (http_inspect) HTTP 0.9 request following a normal request
+119:221 (http_inspect) status code implying no body combined with Transfer-Encoding or nonzero Content-Length
-
-119:71 (http_inspect) message has both Content-Length and Transfer-Encoding
+119:222 (http_inspect) Transfer-Encoding not ending with chunked
-
-119:72 (http_inspect) status code implying no body combined with Transfer-Encoding or nonzero Content-Length
+119:223 (http_inspect) Transfer-Encoding with encodings before chunked
-
-119:73 (http_inspect) Transfer-Encoding not ending with chunked
+119:224 (http_inspect) misformatted HTTP traffic
-
-119:74 (http_inspect) Transfer-Encoding with encodings before chunked
+119:225 (http_inspect) unsupported Content-Encoding used
-
-119:75 (http_inspect) misformatted HTTP traffic
+119:226 (http_inspect) unknown Content-Encoding used
-
-119:76 (http_inspect) unsupported Content-Encoding used
+119:227 (http_inspect) multiple Content-Encodings applied
-
-119:77 (http_inspect) unknown Content-Encoding used
+119:228 (http_inspect) server response before client request
-
-119:78 (http_inspect) multiple Content-Encodings applied
+119:229 (http_inspect) PDF/SWF decompression of server response too big
-
-119:79 (http_inspect) server response before client request
+119:230 (http_inspect) nonprinting character in HTTP message header name
-
-119:80 (http_inspect) PDF/SWF decompression of server response too big
+119:231 (http_inspect) bad Content-Length value in HTTP header
-
-119:81 (http_inspect) nonprinting character in HTTP message header name
+119:232 (http_inspect) HTTP header line wrapped
-
-119:82 (http_inspect) bad Content-Length value in HTTP header
+119:233 (http_inspect) HTTP header line terminated by CR without a LF
-
-119:83 (http_inspect) HTTP header line wrapped
+119:234 (http_inspect) chunk terminated by nonstandard separator
-
-119:84 (http_inspect) HTTP header line terminated by CR without a LF
+119:235 (http_inspect) chunk length terminated by LF without CR
-
-119:85 (http_inspect) chunk terminated by nonstandard separator
+119:236 (http_inspect) more than one response with 100 status code
-
-119:86 (http_inspect) chunk length terminated by LF without CR
+119:237 (http_inspect) 100 status code not in response to Expect header
-
-119:87 (http_inspect) more than one response with 100 status code
+119:238 (http_inspect) 1XX status code other than 100 or 101
-
-119:88 (http_inspect) 100 status code not in response to Expect header
+119:239 (http_inspect) Expect header sent without a message body
-
-119:89 (http_inspect) 1XX status code other than 100 or 101
+119:240 (http_inspect) HTTP 1.0 message with Transfer-Encoding header
-
-119:90 (http_inspect) Expect header sent without a message body
+119:241 (http_inspect) Content-Transfer-Encoding used as HTTP header
-
-119:91 (http_inspect) HTTP 1.0 message with Transfer-Encoding header
+119:242 (http_inspect) illegal field in chunked message trailers
-
-119:92 (http_inspect) Content-Transfer-Encoding used as HTTP header
+119:243 (http_inspect) header field inappropriately appears twice or has two values
-
-119:93 (http_inspect) illegal field in chunked message trailers
+119:244 (http_inspect) invalid value chunked in Content-Encoding header
-
-119:94 (http_inspect) header field inappropriately appears twice or has two values
+119:245 (http_inspect) 206 response sent to a request without a Range header
-
-119:95 (http_inspect) invalid value chunked in Content-Encoding header
+119:246 (http_inspect) HTTP in version field not all upper case
-
-119:96 (http_inspect) 206 response sent to a request without a Range header
+119:247 (http_inspect) white space embedded in critical header value
-
-119:97 (http_inspect) HTTP in version field not all upper case
+119:248 (http_inspect) gzip compressed data followed by unexpected non-gzip data
@@ -12863,22 +13376,22 @@ bool http_inspect.show_scan = false: display scanned segments
-
-int imap.b64_decode_depth = 1460: base64 decoding depth { -1:65535 }
+int imap.b64_decode_depth = 1460: base64 decoding depth (-1 no limit) { -1:65535 }
-
-int imap.bitenc_decode_depth = 1460: non-Encoded MIME attachment extraction depth { -1:65535 }
+int imap.bitenc_decode_depth = 1460: non-Encoded MIME attachment extraction depth (-1 no limit) { -1:65535 }
-
-int imap.qp_decode_depth = 1460: quoted Printable decoding depth { -1:65535 }
+int imap.qp_decode_depth = 1460: quoted Printable decoding depth (-1 no limit) { -1:65535 }
-
-int imap.uu_decode_depth = 1460: Unix-to-Unix decoding depth { -1:65535 }
+int imap.uu_decode_depth = 1460: Unix-to-Unix decoding depth (-1 no limit) { -1:65535 }
@@ -13594,22 +14107,22 @@ bool perf_monitor.summary = false: output summary at shutdown
-
-int pop.b64_decode_depth = 1460: base64 decoding depth { -1:65535 }
+int pop.b64_decode_depth = 1460: base64 decoding depth (-1 no limit) { -1:65535 }
-
-int pop.bitenc_decode_depth = 1460: Non-Encoded MIME attachment extraction depth { -1:65535 }
+int pop.bitenc_decode_depth = 1460: Non-Encoded MIME attachment extraction depth (-1 no limit) { -1:65535 }
-
-int pop.qp_decode_depth = 1460: Quoted Printable decoding depth { -1:65535 }
+int pop.qp_decode_depth = 1460: Quoted Printable decoding depth (-1 no limit) { -1:65535 }
-
-int pop.uu_decode_depth = 1460: Unix-to-Unix decoding depth { -1:65535 }
+int pop.uu_decode_depth = 1460: Unix-to-Unix decoding depth (-1 no limit) { -1:65535 }
@@ -14226,6 +14739,11 @@ string reputation.blacklist: blacklist file name with IP lists
+string reputation.list_dir: directory for IP lists and manifest file
+
+
+
+
int reputation.memcap = 500: maximum total MB of memory allocated { 1:4095 }
@@ -14743,17 +15261,17 @@ string smtp.auth_cmds: commands that initiate an authentication
-string smtp.binary_data_cmds: commands that initiate sending of data and use a length value after the command
+int smtp.b64_decode_depth = 1460: depth used to decode the base64 encoded MIME attachments (-1 no limit) { -1:65535 }
-int smtp.bitenc_decode_depth = 25: depth used to extract the non-encoded MIME attachments { -1:65535 }
+string smtp.binary_data_cmds: commands that initiate sending of data and use a length value after the command
-int smtp.b64_decode_depth = 25: depth used to decode the base64 encoded MIME attachments { -1:65535 }
+int smtp.bitenc_decode_depth = 1460: depth used to extract the non-encoded MIME attachments (-1 no limit) { -1:65535 }
@@ -14833,12 +15351,12 @@ string smtp.normalize_cmds: list of commands to normalize
-int smtp.qp_decode_depth = 25: quoted-Printable decoding depth { -1:65535 }
+int smtp.qp_decode_depth = 1460: quoted-Printable decoding depth (-1 no limit) { -1:65535 }
-int smtp.uu_decode_depth = 25: unix-to-Unix decoding depth { -1:65535 }
+int smtp.uu_decode_depth = 1460: Unix-to-Unix decoding depth (-1 no limit) { -1:65535 }
@@ -15311,6 +15829,29 @@ int stream.file_cache.pruning_timeout = 30: minimum inactive ti
int stream.file_cache.idle_timeout = 180: maximum inactive time before retiring session tracker { 1: }
+
+
+int stream.trace: mask for enabling debug traces in module
+
+
+
+
+
+-
+
+135:1 (stream) TCP SYN received
+
+
+-
+
+135:2 (stream) TCP session established
+
+
+-
+
+135:3 (stream) TCP session cleared
+
+
@@ -15832,11 +16373,6 @@ int stream_ip.trace: mask for enabling debug traces in module
-
-stream_ip.memory_used: current memory usage in bytes (now)
-
-
--
-
stream_ip.reassembled_bytes: total reassembled bytes (sum)
@@ -15861,11 +16397,6 @@ int stream_tcp.flush_factor = 0: flush upon seeing a drop in se
-
-bool stream_tcp.ignore_any_rules = false: process TCP content rules w/o ports only if rules with ports are present
-
-
--
-
int stream_tcp.max_window = 0: maximum allowed TCP window { 0:1073725440 }
@@ -16062,6 +16593,21 @@ int stream_tcp.session_timeout = 30: session tracking timeout {
-
+stream_tcp.instantiated: new sessions instantiated (sum)
+
+
+-
+
+stream_tcp.setups: session initializations (sum)
+
+
+-
+
+stream_tcp.restarts: sessions restarted (sum)
+
+
+-
+
stream_tcp.resyns: SYN received on established session (sum)
@@ -16229,11 +16775,6 @@ int stream_tcp.session_timeout = 30: session tracking timeout {
int stream_udp.session_timeout = 30: session tracking timeout { 1:86400 }
--
-
-bool stream_udp.ignore_any_rules = false: process UDP content rules w/o ports only if rules with ports are present
-
-
@@ -16467,7 +17008,7 @@ control external agents.
parser. For the reject rule, you can set reject = { } to get the rule to
parse.
-
react
+
react
What: send response to client and terminate session
@@ -16486,7 +17027,7 @@ string
react.page: file containing HTTP response (headers and b
-
reject
+
reject
What: terminate session with TCP reset or ICMP unreachable
@@ -16505,7 +17046,7 @@ enum
reject.control: send ICMP unreachable(s) { network|host|po
-
rewrite
+
rewrite
What: overwrite packet contents
@@ -16870,7 +17411,7 @@ int
byte_test.~count: number of bytes to pick up from the buffe
-string byte_test.~operator: variable name or number of bytes into the buffer to start processing
+string byte_test.~operator: operation to perform to test the value
@@ -20006,7 +20547,7 @@ deleted fast_pattern:only; use fast_pattern, nocase
changed fast_pattern:<offset>,<length> to
- fastpattern_offset: <offset>, fast_pattern_length <length>
+ fast_pattern,fast_pattern_offset <offset>,fast_pattern_length <length>
@@ -20121,6 +20662,12 @@ parse all rules and output all errors before quitting
read rules from conf, separate rules file, or stdin
+
+
+The symbol =< in a byte test is recognized as a syntax error. The correct
+ symbol is <=.
+
+
@@ -20191,6 +20738,42 @@ replacement in Snort 3.X. This is because the rule offered no additional
value over gid:138 rules and was difficult to interpret the result of.
For more information, See Features > Sensitive Data Filtering for details.
+
+
Features Not Yet Supported by Snort 3
+
+-
+
+Support in http_inspect for Original Client IP is limited to the
+ X-Forwarded-For and True-Client-IP headers in that order. It is not
+ possible to configure additional custom headers to search for Original
+ Client IP.
+
+
+-
+
+The -n option does not work properly when perf_monitor is configured. The
+ number of packets processed from the pcap is likely to be more than the
+ number specified with the -n option.
+
+
+-
+
+When a file is transferred via SMB2 it may be allowed even though
+ according to file policy it should be blocked. This occurs when the
+ create and read requests are sent together and then the read and create
+ responses are sent together. Blocking is done correctly if the create and
+ read requests are sent separately or if the file is large enough to
+ require two read responses.
+
+
+-
+
+This user manual is incomplete and does not fully cover many Snort 2.X
+ features that are also supported by Snort 3.
+
+
+
+
@@ -23122,6 +23705,11 @@ these libraries see the Getting Started section of the manual.
+--talos enable Talos inline rule test mode (same as --tweaks talos -Q -q)
+
+
+
+
--treat-drop-as-alert converts drop, sdrop, and reject rules into alert rules during startup
@@ -23132,6 +23720,11 @@ these libraries see the Getting Started section of the manual.
+--tweaks tune configuration
+
+
+
+
--catch-test comma separated list of cat unit test tags or all
@@ -23200,6 +23793,11 @@ these libraries see the Getting Started section of the manual.
--x2s output ASCII string for given byte code (see also --x2c)
+
+
+--trace turn on main loop debug trace
+
+
@@ -23232,7 +23830,7 @@ int
active.max_responses = 0: maximum number of responses { 0:
-int active.min_interval = 255: minimum number of seconds between responses { 1: }
+int active.min_interval = 255: minimum number of seconds between responses { 1:255 }
@@ -23417,6 +24015,11 @@ bool appid.dump_ports = false: enable dump of appid port inform
+int appid.first_decrypted_packet_debug = 0: the first packet of an already decrypted SSL flow (debug single session only) { 0: }
+
+
+
+
int appid.instance_id = 0: instance id - ignored { 0: }
@@ -23442,32 +24045,17 @@ string
appids.~: comma separated list of application names
-addr appid.session_log_filter.dst_ip = 0.0.0.0/32: destination IP address in CIDR format
-
-
-
-
-port appid.session_log_filter.dst_port: destination port { 1: }
-
-
-
-
-bool appid.session_log_filter.log_all_sessions = false: enable logging for all appid sessions
+string appid.tp_appid_config: path to third party appid configuration file
-string appid.session_log_filter.protocol: IP protocol
+string appid.tp_appid_path: path to third party appid dynamic library
-addr appid.session_log_filter.src_ip = 0.0.0.0/32: source IP address in CIDR format
-
-
-
-
-port appid.session_log_filter.src_port: source port { 1: }
+int appid.trace: mask for enabling debug traces in module
@@ -23907,7 +24495,7 @@ string byte_test.~offset: variable name or number of bytes into
-string byte_test.~operator: variable name or number of bytes into the buffer to start processing
+string byte_test.~operator: operation to perform to test the value
@@ -24122,6 +24710,11 @@ int dce_smb.smb_max_compound = 3: SMB max compound size { 0:25
+int dce_smb.trace: mask for enabling debug traces in module
+
+
+
+
multi dce_smb.valid_smb_versions = all: Valid SMB versions { v1 | v2 | all }
@@ -24157,11 +24750,26 @@ int
dce_udp.max_frag_len = 65535: Maximum fragment size for de
+int dce_udp.trace: mask for enabling debug traces in module
+
+
+
+
+int decode.trace: mask for enabling debug traces in module
+
+
+
+
int detection.asn1 = 256: maximum decode nodes { 1: }
+bool detection.enable_address_anomaly_checks = false: enable check and alerting of address anomalies
+
+
+
+
int detection_filter.count: hits in interval before allowing the rule to fire { 1: }
@@ -24232,6 +24840,16 @@ int
dnp3_obj.var = 0: match given DNP3 object header var { 0:25
+string domain_filter.file: file with list of domains identifying hosts to be filtered
+
+
+
+
+string domain_filter.hosts: list of domains identifying hosts to be filtered
+
+
+
+
int dpx.max = 0: maximum payload before alert { 0:65535 }
@@ -24772,6 +25390,11 @@ int
gtp_inspect[].messages[].type = 0: message type code { 0:25
+int gtp_inspect.trace: mask for enabling debug traces in module
+
+
+
+
int gtp_inspect[].version = 2: GTP version { 0:2 }
@@ -25287,22 +25910,22 @@ interval
id.~range: check if the IP ID is in the given range {
-int imap.b64_decode_depth = 1460: base64 decoding depth { -1:65535 }
+int imap.b64_decode_depth = 1460: base64 decoding depth (-1 no limit) { -1:65535 }
-int imap.bitenc_decode_depth = 1460: non-Encoded MIME attachment extraction depth { -1:65535 }
+int imap.bitenc_decode_depth = 1460: non-Encoded MIME attachment extraction depth (-1 no limit) { -1:65535 }
-int imap.qp_decode_depth = 1460: quoted Printable decoding depth { -1:65535 }
+int imap.qp_decode_depth = 1460: quoted Printable decoding depth (-1 no limit) { -1:65535 }
-int imap.uu_decode_depth = 1460: Unix-to-Unix decoding depth { -1:65535 }
+int imap.uu_decode_depth = 1460: Unix-to-Unix decoding depth (-1 no limit) { -1:65535 }
@@ -25722,11 +26345,6 @@ bool output.dump_payload_verbose = false: dumps raw packet star
-bool output.enable_packet_trace = false: enable summary output of state that determined packet verdict
-
-
-
-
int output.event_trace.max_data = 0: maximum amount of packet data to capture { 0:65535 }
@@ -25747,11 +26365,6 @@ bool
output.obfuscate_pii = false: mask all but the last 4 char
-enum output.packet_trace_output = console: select where to send packet trace { console | file }
-
-
-
-
bool output.quiet = false: suppress non-fatal information (still show alerts, same as -q)
@@ -25812,6 +26425,16 @@ bool
packets.vlan_agnostic = false: determines whether VLAN inf
+bool packet_tracer.enable = false: enable summary output of state that determined packet verdict
+
+
+
+
+enum packet_tracer.output = console: select where to send packet trace { console | file }
+
+
+
+
string pcre.~re: Snort regular expression
@@ -25892,22 +26515,22 @@ interval
pkt_num.~range: check if packet number is in given ran
-int pop.b64_decode_depth = 1460: base64 decoding depth { -1:65535 }
+int pop.b64_decode_depth = 1460: base64 decoding depth (-1 no limit) { -1:65535 }
-int pop.bitenc_decode_depth = 1460: Non-Encoded MIME attachment extraction depth { -1:65535 }
+int pop.bitenc_decode_depth = 1460: Non-Encoded MIME attachment extraction depth (-1 no limit) { -1:65535 }
-int pop.qp_decode_depth = 1460: Quoted Printable decoding depth { -1:65535 }
+int pop.qp_decode_depth = 1460: Quoted Printable decoding depth (-1 no limit) { -1:65535 }
-int pop.uu_decode_depth = 1460: Unix-to-Unix decoding depth { -1:65535 }
+int pop.uu_decode_depth = 1460: Unix-to-Unix decoding depth (-1 no limit) { -1:65535 }
@@ -26467,6 +27090,11 @@ string reputation.blacklist: blacklist file name with IP lists
+string reputation.list_dir: directory for IP lists and manifest file
+
+
+
+
int reputation.memcap = 500: maximum total MB of memory allocated { 1:4095 }
@@ -26582,7 +27210,7 @@ bool
search_engine.debug_print_rule_groups_uncompiled = false:
-bool search_engine.detect_raw_tcp = true: detect on TCP payload before reassembly
+bool search_engine.detect_raw_tcp = false: detect on TCP payload before reassembly
@@ -26777,7 +27405,7 @@ string smtp.auth_cmds: commands that initiate an authentication
-int smtp.b64_decode_depth = 25: depth used to decode the base64 encoded MIME attachments { -1:65535 }
+int smtp.b64_decode_depth = 1460: depth used to decode the base64 encoded MIME attachments (-1 no limit) { -1:65535 }
@@ -26787,7 +27415,7 @@ string smtp.binary_data_cmds: commands that initiate sending of
-int smtp.bitenc_decode_depth = 25: depth used to extract the non-encoded MIME attachments { -1:65535 }
+int smtp.bitenc_decode_depth = 1460: depth used to extract the non-encoded MIME attachments (-1 no limit) { -1:65535 }
@@ -26867,12 +27495,12 @@ enum smtp.normalize = none: turns on/off normalization { none |
-int smtp.qp_decode_depth = 25: quoted-Printable decoding depth { -1:65535 }
+int smtp.qp_decode_depth = 1460: quoted-Printable decoding depth (-1 no limit) { -1:65535 }
-int smtp.uu_decode_depth = 25: unix-to-Unix decoding depth { -1:65535 }
+int smtp.uu_decode_depth = 1460: Unix-to-Unix decoding depth (-1 no limit) { -1:65535 }
@@ -27347,11 +27975,26 @@ string snort.-S: <x=v> set config variable x equal to val
+implied snort.--talos: enable Talos inline rule test mode (same as --tweaks talos -Q -q)
+
+
+
+
string snort.-t: <dir> chroots process to <dir> after initialization
+int snort.trace: mask for enabling debug traces in module
+
+
+
+
+implied snort.--trace: turn on main loop debug trace
+
+
+
+
implied snort.--treat-drop-as-alert: converts drop, sdrop, and reject rules into alert rules during startup
@@ -27367,6 +28010,11 @@ implied
snort.-T: test and report on the current Snort configur
+string snort.--tweaks: tune configuration
+
+
+
+
string snort.-u: <uname> run snort as <uname> or <uid> after initialization
@@ -27762,11 +28410,6 @@ int
stream_tcp.flush_factor = 0: flush upon seeing a drop in se
-bool stream_tcp.ignore_any_rules = false: process TCP content rules w/o ports only if rules with ports are present
-
-
-
-
int stream_tcp.max_pdu = 16384: maximum reassembled PDU size { 1460:32768 }
@@ -27827,22 +28470,22 @@ int
stream_tcp.small_segments.maximum_size = 0: limit number of
-int stream.udp_cache.idle_timeout = 180: maximum inactive time before retiring session tracker { 1: }
+int stream.trace: mask for enabling debug traces in module
-int stream.udp_cache.max_sessions = 131072: maximum simultaneous sessions tracked before pruning { 2: }
+int stream.udp_cache.idle_timeout = 180: maximum inactive time before retiring session tracker { 1: }
-int stream.udp_cache.pruning_timeout = 30: minimum inactive time before being eligible for pruning { 1: }
+int stream.udp_cache.max_sessions = 131072: maximum simultaneous sessions tracked before pruning { 2: }
-bool stream_udp.ignore_any_rules = false: process UDP content rules w/o ports only if rules with ports are present
+int stream.udp_cache.pruning_timeout = 30: minimum inactive time before being eligible for pruning { 1: }
@@ -28077,6 +28720,31 @@ interval wscale.~range: check if TCP window scale is in given r
-
+appid.appid_unknown: count of sessions where appid could not be determined (sum)
+
+
+-
+
+appid.ignored_packets: count of packets ignored (sum)
+
+
+-
+
+appid.packets: count of packets received (sum)
+
+
+-
+
+appid.processed_packets: count of packets processed (sum)
+
+
+-
+
+appid.total_sessions: count of sessions created (sum)
+
+
+-
+
arp_spoof.packets: total packets (sum)
@@ -28172,7 +28840,7 @@ interval wscale.~range: check if TCP window scale is in given r
-
-daq.pcaps: total files and interfaces processed (sum)
+daq.pcaps: total files and interfaces processed (max)
-
@@ -28887,6 +29555,16 @@ interval wscale.~range: check if TCP window scale is in given r
-
+domain_filter.checked: domains checked (sum)
+
+
+-
+
+domain_filter.filtered: domains filtered (sum)
+
+
+-
+
dpx.packets: total packets (sum)
@@ -29217,11 +29895,6 @@ interval wscale.~range: check if TCP window scale is in given r
-
-ips.invalid_policy_ids: Number of times an invalid policy ID was provided (sum)
-
-
--
-
ipv4.bad_checksum: nonzero ip checksums (sum)
@@ -30342,11 +31015,6 @@ interval wscale.~range: check if TCP window scale is in given r
-
-stream_ip.memory_used: current memory usage in bytes (now)
-
-
--
-
stream_ip.nodes_deleted: fragments deleted from tracker (sum)
@@ -30517,6 +31185,11 @@ interval wscale.~range: check if TCP window scale is in given r
-
+stream_tcp.instantiated: new sessions instantiated (sum)
+
+
+-
+
stream_tcp.internal_events: 135:X events generated (sum)
@@ -30577,6 +31250,11 @@ interval wscale.~range: check if TCP window scale is in given r
-
+stream_tcp.restarts: sessions restarted (sum)
+
+
+-
+
stream_tcp.resyns: SYN received on established session (sum)
@@ -30612,6 +31290,11 @@ interval wscale.~range: check if TCP window scale is in given r
-
+stream_tcp.setups: session initializations (sum)
+
+
+-
+
stream_tcp.syn_acks: number of syn-ack packets (sum)
@@ -31072,6 +31755,11 @@ interval wscale.~range: check if TCP window scale is in given r
-
+135: stream
+
+
+-
+
136: reputation
@@ -31112,6 +31800,16 @@ interval wscale.~range: check if TCP window scale is in given r
-
+146: file_id
+
+
+-
+
+175: domain_filter
+
+
+-
+
219: http2_inspect
@@ -32167,317 +32865,327 @@ interval wscale.~range: check if TCP window scale is in given r
-
-119:35 (http_inspect) anomalous http server on undefined HTTP port
+119:101 (http_inspect) anomalous http server on undefined HTTP port
+
+
+-
+
+119:102 (http_inspect) invalid status code in HTTP response
+
+
+-
+
+119:103 (http_inspect) unused event number—should not appear
-
-119:36 (http_inspect) invalid status code in HTTP response
+119:104 (http_inspect) HTTP response has UTF charset that failed to normalize
-
-119:37 (http_inspect) unused event number—should not appear
+119:105 (http_inspect) HTTP response has UTF-7 charset
-
-119:38 (http_inspect) HTTP response has UTF charset that failed to normalize
+119:106 (http_inspect) HTTP response gzip decompression failed
-
-119:39 (http_inspect) HTTP response has UTF-7 charset
+119:107 (http_inspect) server consecutive small chunk sizes
-
-119:40 (http_inspect) HTTP response gzip decompression failed
+119:108 (http_inspect) unused event number—should not appear
-
-119:41 (http_inspect) server consecutive small chunk sizes
+119:109 (http_inspect) javascript obfuscation levels exceeds 1
-
-119:42 (http_inspect) unused event number—should not appear
+119:110 (http_inspect) javascript whitespaces exceeds max allowed
-
-119:43 (http_inspect) javascript obfuscation levels exceeds 1
+119:111 (http_inspect) multiple encodings within javascript obfuscated data
-
-119:44 (http_inspect) javascript whitespaces exceeds max allowed
+119:112 (http_inspect) SWF file zlib decompression failure
-
-119:45 (http_inspect) multiple encodings within javascript obfuscated data
+119:113 (http_inspect) SWF file LZMA decompression failure
-
-119:46 (http_inspect) SWF file zlib decompression failure
+119:114 (http_inspect) PDF file deflate decompression failure
-
-119:47 (http_inspect) SWF file LZMA decompression failure
+119:115 (http_inspect) PDF file unsupported compression type
-
-119:48 (http_inspect) PDF file deflate decompression failure
+119:116 (http_inspect) PDF file cascaded compression
-
-119:49 (http_inspect) PDF file unsupported compression type
+119:117 (http_inspect) PDF file parse failure
-
-119:50 (http_inspect) PDF file cascaded compression
+119:201 (http_inspect) not HTTP traffic
-
-119:51 (http_inspect) PDF file parse failure
+119:202 (http_inspect) chunk length has excessive leading zeros
-
-119:52 (http_inspect) not HTTP traffic
+119:203 (http_inspect) white space before or between messages
-
-119:53 (http_inspect) chunk length has excessive leading zeros
+119:204 (http_inspect) request message without URI
-
-119:54 (http_inspect) white space before or between messages
+119:205 (http_inspect) control character in reason phrase
-
-119:55 (http_inspect) request message without URI
+119:206 (http_inspect) illegal extra whitespace in start line
-
-119:56 (http_inspect) control character in reason phrase
+119:207 (http_inspect) corrupted HTTP version
-
-119:57 (http_inspect) illegal extra whitespace in start line
+119:208 (http_inspect) unknown HTTP version
-
-119:58 (http_inspect) corrupted HTTP version
+119:209 (http_inspect) format error in HTTP header
-
-119:59 (http_inspect) unknown HTTP version
+119:210 (http_inspect) chunk header options present
-
-119:60 (http_inspect) format error in HTTP header
+119:211 (http_inspect) URI badly formatted
-
-119:61 (http_inspect) chunk header options present
+119:212 (http_inspect) unrecognized type of percent encoding in URI
-
-119:62 (http_inspect) URI badly formatted
+119:213 (http_inspect) HTTP chunk misformatted
-
-119:63 (http_inspect) unrecognized type of percent encoding in URI
+119:214 (http_inspect) white space adjacent to chunk length
-
-119:64 (http_inspect) HTTP chunk misformatted
+119:215 (http_inspect) white space within header name
-
-119:65 (http_inspect) white space adjacent to chunk length
+119:216 (http_inspect) excessive gzip compression
-
-119:66 (http_inspect) white space within header name
+119:217 (http_inspect) gzip decompression failed
-
-119:67 (http_inspect) excessive gzip compression
+119:218 (http_inspect) HTTP 0.9 requested followed by another request
-
-119:68 (http_inspect) gzip decompression failed
+119:219 (http_inspect) HTTP 0.9 request following a normal request
-
-119:69 (http_inspect) HTTP 0.9 requested followed by another request
+119:220 (http_inspect) message has both Content-Length and Transfer-Encoding
-
-119:70 (http_inspect) HTTP 0.9 request following a normal request
+119:221 (http_inspect) status code implying no body combined with Transfer-Encoding or nonzero Content-Length
-
-119:71 (http_inspect) message has both Content-Length and Transfer-Encoding
+119:222 (http_inspect) Transfer-Encoding not ending with chunked
-
-119:72 (http_inspect) status code implying no body combined with Transfer-Encoding or nonzero Content-Length
+119:223 (http_inspect) Transfer-Encoding with encodings before chunked
-
-119:73 (http_inspect) Transfer-Encoding not ending with chunked
+119:224 (http_inspect) misformatted HTTP traffic
-
-119:74 (http_inspect) Transfer-Encoding with encodings before chunked
+119:225 (http_inspect) unsupported Content-Encoding used
-
-119:75 (http_inspect) misformatted HTTP traffic
+119:226 (http_inspect) unknown Content-Encoding used
-
-119:76 (http_inspect) unsupported Content-Encoding used
+119:227 (http_inspect) multiple Content-Encodings applied
-
-119:77 (http_inspect) unknown Content-Encoding used
+119:228 (http_inspect) server response before client request
-
-119:78 (http_inspect) multiple Content-Encodings applied
+119:229 (http_inspect) PDF/SWF decompression of server response too big
-
-119:79 (http_inspect) server response before client request
+119:230 (http_inspect) nonprinting character in HTTP message header name
-
-119:80 (http_inspect) PDF/SWF decompression of server response too big
+119:231 (http_inspect) bad Content-Length value in HTTP header
-
-119:81 (http_inspect) nonprinting character in HTTP message header name
+119:232 (http_inspect) HTTP header line wrapped
-
-119:82 (http_inspect) bad Content-Length value in HTTP header
+119:233 (http_inspect) HTTP header line terminated by CR without a LF
-
-119:83 (http_inspect) HTTP header line wrapped
+119:234 (http_inspect) chunk terminated by nonstandard separator
-
-119:84 (http_inspect) HTTP header line terminated by CR without a LF
+119:235 (http_inspect) chunk length terminated by LF without CR
-
-119:85 (http_inspect) chunk terminated by nonstandard separator
+119:236 (http_inspect) more than one response with 100 status code
-
-119:86 (http_inspect) chunk length terminated by LF without CR
+119:237 (http_inspect) 100 status code not in response to Expect header
-
-119:87 (http_inspect) more than one response with 100 status code
+119:238 (http_inspect) 1XX status code other than 100 or 101
-
-119:88 (http_inspect) 100 status code not in response to Expect header
+119:239 (http_inspect) Expect header sent without a message body
-
-119:89 (http_inspect) 1XX status code other than 100 or 101
+119:240 (http_inspect) HTTP 1.0 message with Transfer-Encoding header
-
-119:90 (http_inspect) Expect header sent without a message body
+119:241 (http_inspect) Content-Transfer-Encoding used as HTTP header
-
-119:91 (http_inspect) HTTP 1.0 message with Transfer-Encoding header
+119:242 (http_inspect) illegal field in chunked message trailers
-
-119:92 (http_inspect) Content-Transfer-Encoding used as HTTP header
+119:243 (http_inspect) header field inappropriately appears twice or has two values
-
-119:93 (http_inspect) illegal field in chunked message trailers
+119:244 (http_inspect) invalid value chunked in Content-Encoding header
-
-119:94 (http_inspect) header field inappropriately appears twice or has two values
+119:245 (http_inspect) 206 response sent to a request without a Range header
-
-119:95 (http_inspect) invalid value chunked in Content-Encoding header
+119:246 (http_inspect) HTTP in version field not all upper case
-
-119:96 (http_inspect) 206 response sent to a request without a Range header
+119:247 (http_inspect) white space embedded in critical header value
-
-119:97 (http_inspect) HTTP in version field not all upper case
+119:248 (http_inspect) gzip compressed data followed by unexpected non-gzip data
-
@@ -33232,6 +33940,21 @@ interval wscale.~range: check if TCP window scale is in given r
-
+135:1 (stream) TCP SYN received
+
+
+-
+
+135:2 (stream) TCP session established
+
+
+-
+
+135:3 (stream) TCP session cleared
+
+
+-
+
136:1 (reputation) packets blacklisted
@@ -33507,6 +34230,11 @@ interval wscale.~range: check if TCP window scale is in given r
-
+175:1 (domain_filter) configured domain detected
+
+
+-
+
256:1 (dpx) too much data sent to port
@@ -33517,6 +34245,16 @@ interval wscale.~range: check if TCP window scale is in given r
-
+appid.enable_debug(proto, src_ip, src_port, dst_ip, dst_port): enable appid debugging
+
+
+-
+
+appid.disable_debug(): disable appid debugging
+
+
+-
+
packet_capture.enable(filter): dump raw packets
@@ -33527,6 +34265,16 @@ interval wscale.~range: check if TCP window scale is in given r
-
+packet_tracer.enable(proto, src_ip, src_port, dst_ip, dst_port): enable packet tracer debugging
+
+
+-
+
+packet_tracer.disable(): disable packet tracer
+
+
+-
+
snort.show_plugins(): show available plugins
@@ -33557,6 +34305,11 @@ interval wscale.~range: check if TCP window scale is in given r
-
+snort.reload_module(module): reload module
+
+
+-
+
snort.reload_daq(): reload daq module
@@ -34203,6 +34956,11 @@ deleted -> unified2: 'filename'
-
+domain_filter (inspector): alert on configured HTTP domains
+
+
+-
+
dpx (inspector): dynamic inspector example
@@ -34538,12 +35296,12 @@ deleted -> unified2: 'filename'
-
-ipv4 (codec): support for Internet protocol v4
+ipv4 (codec): support for Internet protocol v4 (DLT 228)
-
-ipv6 (codec): support for Internet protocol v6
+ipv6 (codec): support for Internet protocol v6 (DLT 229)
-
@@ -34653,6 +35411,11 @@ deleted -> unified2: 'filename'
-
+packet_tracer (basic): generate debug trace messages for packets
+
+
+-
+
packets (basic): configure basic packet handling
@@ -35128,12 +35891,12 @@ deleted -> unified2: 'filename'
-
-codec::ipv4: support for Internet protocol v4
+codec::ipv4: support for Internet protocol v4 (DLT 228)
-
-codec::ipv6: support for Internet protocol v6
+codec::ipv6: support for Internet protocol v6 (DLT 229)
-
@@ -35223,12 +35986,7 @@ deleted -> unified2: 'filename'
-
-codec::raw4: support for unencapsulated IPv4 (DLT 12) (DLT 228)
-
-
--
-
-codec::raw6: support for unencapsulated IPv6 (DLT 229)
+codec::raw: support for raw IP (DLT 12)
-
@@ -35348,6 +36106,11 @@ deleted -> unified2: 'filename'
-
+inspector::domain_filter: alert on configured HTTP domains
+
+
+-
+
inspector::dpx: dynamic inspector example
@@ -36184,175 +36947,6 @@ deleted -> unified2: 'filename'
-
Bugs
-
-
Build
-
--
-
-Enabling large pcap may erroneously affect the number of packets processed
- from pcaps.
-
-
--
-
-Enabling debug messages may erroneously affect the number of packets
- processed from pcaps.
-
-
--
-
-Building with clang and autotools on Linux will show the following
- warning many times. Please ignore.
-
-
-
-
clang: warning: argument unused during compilation: '-pthread'
-
-
-
-
-
-
Config
-
--
-
-Parsing issue with IP lists. can’t parse rules with $EXTERNAL_NET
- defined as below because of the space between ! and 10.
-
-
-
-
HOME_NET = [[ 10.0.17.0/24 10.0.14.0/24 10.247.0.0/16 10.246.0.0/16 ]]
-EXTERNAL_NET = '! ' .. HOME_NET
-
-
--
-
-Multiple versions of luajit scripts are not handled correctly. The
- first loaded version will always be executed even though plugin manager
- saves the correct version.
-
-
--
-
-When using -c and -L together, the last on the command line wins (-c -L
- will dump; -L -c will analyze).
-
-
--
-
-Modules instantiated by command line only will not get default settings
- unless hard-coded. This notably applies to -A and -L options.
-
-
--
-
---lua can only be used in addition to, not in place of, a -c config.
- Ideally, --lua could be used in lieu of -c.
-
-
-
-
-
-
Rules
-
--
-
-metdata:service foo; metadata:service foo; won’t cause a duplicate service
- warning as does metadata:service foo, service foo;
-
-
--
-
-ip_proto doesn’t work properly with reassembled packets so it can’t be
- used to restrict the protocol of service rules.
-
-
-
-
-
-
snort2lua
-
--
-
-uricontent:"foo"; content:"bar"; → http_uri; content:"foo"; content:"bar";
- (missing pkt_data)
-
-
--
-
-stream_tcp ports and protocols both go into a single binder.when; this is
- incorrect as the when fields are logically anded together (ie must all be
- true). Should create 2 separate bindings.
-
-
--
-
-There is a bug in pps_stream_tcp.cc.. when stream_tcp: is specified
- without any arguments, snort2lua doesn’t convert it. Same for
- stream_udp.
-
-
--
-
-Loses the ip list delimiters [ ]; change to ( )
-
-
-
-
in snort.conf: var HOME_NET [A,B,C]
-in snort.lua: HOME_NET = [[A B C]]
-
-
--
-
-Won’t convert packet rules (alert tcp etc.) to service rules (alert http
- etc.).
-
-
--
-
-alert_fast and alert_full: output configuration includes "file =
- foo.bar", but file is a bool and you cannot specify an output file name
- in the configuration.
-
-
-
-
-
-
Runtime
-
--
-
--B <mask> feature does not work. It does ordinary IP address obfuscation
- instead of using the mask.
-
-
--
-
-Obfuscation does not work for csv format.
-
-
--
-
-The hext DAQ will append a newline to text lines (starting with ").
-
-
--
-
-The hext DAQ does not support embedded quotes in text lines (use hex
- lines as a workaround).
-
-
--
-
-stream_tcp alert squash mechanism incorrectly squashes alerts for
- different TCP packets.
-
-
-
-
-
-
LibDAQ and DAQ Modules
Snort 2.9 introduces the DAQ, or Data Acquisition library, for packet I/O. The
DAQ replaces direct calls to libpcap functions with an abstraction layer that
@@ -36984,7 +37578,7 @@ Note that on OpenBSD, divert sockets don’t work with bridges!