The Snort Team
Revision History
-Revision 3.1.6.0 2021-06-16 07:30:48 EDT TST
+Revision 3.1.7.0 2021-06-30 09:58:50 EDT TST
---------------------------------------------------------------------
For proper functioning of the AppId inspector, at a minimum stream
flow tracking must be enabled. In addition, to identify TCP-based or
-UDP-based applications then the appropriate stream inspector must be
+UDP-based applications, the appropriate stream inspector must be
enabled, e.g. stream_tcp or stream_udp.
-In addition, in order to identify HTTP-based applications, the HTTP
-inspector must be enabled. Otherwise, only non-HTTP applications will
-be identified.
+In order to identify HTTP-based applications, the HTTP inspector must
+be enabled. Otherwise, only non-HTTP applications will be identified.
AppId subscribes to the inspection events published by other
inspectors, such as the HTTP and SSL inspectors, to gain access to
the data needed. It uses that data to help determine the application
ID.
+AppId subscribes to the events published by SIP and DCE/RPC
+inspectors to detect applications on expected flows.
+
6.2.3. Configuration
The AppId feature can be enabled via configuration. To enable it with
artifacts:
* Application detectors in the Lua language.
- * Port detectors, which are port only application detectors, in
- meta-data in YAML format.
* appMapping.data file containing application metadata. This file
should not be modified. The first column contains application
identifier and second column contains application name. Other
columns contain internal information.
- * Lua library files DetectorCommon.lua, flowTrackerModule.lua and
- hostServiceTrackerModule.lua
+ * Lua library file DetectorCommon.lua.
A user can install the ODP package in any directory and configure
this directory via the app_detector_dir option in the appid
When installed, ODP will create following sub-directories:
- * odp/port //Cisco port-only detectors
* odp/lua //Cisco Lua detectors
* odp/libs //Cisco Lua modules
Users must organize their Lua detectors and libraries by creating the
following directory structure, under the ODP installation directory.
- * custom/port //port-only detectors
* custom/lua //Lua detectors
* custom/libs //Lua modules
None of the directories below /usr/local/lib/openappid/ would be
added for you.
-6.2.8. Application Detector Creation Tool
+6.2.8. Application Detector Reload
+
+Both ODP detectors and user created detectors can be reloaded using
+the command appid.reload_detectors(). Detectors are expected to be
+updated in the path appid.app_detector_dir before this command is
+issued. The command takes no parameters.
+
+6.2.9. Application Detector Creation Tool
For rudimentary Lua detectors, there is a tool provided called
appid_detector_builder.sh. This is a simple, menu-driven bash script
request and the server response? Or different requests in the same
session? These things are possible.
-Another new feature on the horizon is HTTP/2 analysis. HTTP/2 derives
-from Google’s SPDY project and is in the process of being
-standardized. Despite the name, it is better to think of HTTP/2 not
-as a newer version of HTTP/1.1, but rather a separate protocol layer
-that runs under HTTP/1.1 and on top of TLS or TCP. It’s a perfect fit
-for the new Snort 3 architecture because a new HTTP/2 inspector would
-naturally output HTTP/1.1 messages but not any underlying packets.
-Exactly what http_inspect wants to input.
-
http_inspect is taking a very different approach to HTTP header
fields. The classic preprocessor divides all the HTTP headers
following the start line into cookies and everything else. It
--------------
-Snort 3 is developing an inspector for HTTP/2.
+New in Snort 3, the HTTP/2 inspector enables Snort to process HTTP/2
+traffic.
-You can configure it by adding:
+6.11.1. Overview
+
+Despite the name, it is better to think of HTTP/2 not as a newer
+version of HTTP/1.1, but rather a separate protocol layer that runs
+under HTTP/1.1 and on top of TLS or TCP. It supports several new
+features with the goal of improving the performance of HTTP requests,
+notably the ability to multiplex many requests over a single TCP
+connection, HTTP header compression, and server push.
+
+HTTP/2 is a perfect fit for the new Snort 3 PDU-based inspection
+architecture. The HTTP/2 inspector parses and strips the HTTP/2
+protocol framing and outputs HTTP/1.1 messages, exactly what
+http_inspect wants to input. The HTTP/2 traffic then undergoes the
+same processing as regular HTTP/1.1 traffic discussed above. So if
+you haven’t already, take a look at the HTTP Inspector section; those
+features also apply to HTTP/2 traffic.
+
+6.11.2. Configuration
+
+You can configure the HTTP/2 inspector with the default configuration
+by adding:
http2_inspect = {}
-to your snort.lua configuration file.
+to your snort.lua configuration file. Since processing HTTP/2 traffic
+relies on the HTTP inspector, http_inspect must also be configured.
+Keep in mind that the http_inspect configuration will also impact
+HTTP/2 traffic.
+
+6.11.2.1. concurrent_streams_limit
+
+This limits the maximum number of HTTP/2 streams Snort will process
+concurrently in a single HTTP/2 flow. The default and minimum
+configurable value is 100. It can be configured up to a maximum of
+1000.
+
+6.11.3. Detection rules
-To smooth the transition to inspecting HTTP/2, rules that specify
-service:http will be treated as if they also specify service:http2.
-Thus:
+Since HTTP/2 traffic is processed through the HTTP inspector, all of
+the rule options discussed above are also available for HTTP/2
+traffic. To smooth the transition to inspecting HTTP/2, rules that
+specify service:http will be treated as if they also specify
+service:http2. Thus:
alert tcp any any -> any any (flow:established, to_server;
http_uri; content:"/foo";