Skip to content
C++ C Lua CMake Other
Branch: master
Clone or download
Xiche Merge pull request #1902 in SNORT/snort3 from ~MIALTIZE/snort3:build_…
…267 to master

Squashed commit of the following:

commit 7e4b25ffb40817f3efb272ea62c94f2db92f905b
Author: Michael Altizer <>
Date:   Fri Dec 20 13:09:16 2019 -0500

    build: generate and tag build 267
Latest commit 5dd2afc Dec 21, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
cmake Merge pull request #1888 in SNORT/snort3 from ~MIALTIZE/snort3:catch_… Dec 11, 2019
daqs DAQng: Port Snort and its DAQ modules to DAQ3 May 5, 2019
doc Merge pull request #1902 in SNORT/snort3 from ~MIALTIZE/snort3:build_… Dec 20, 2019
lua Merge pull request #1889 in SNORT/snort3 from ~SHRARANG/snort3:file_m… Dec 12, 2019
piglet/tests Fix compiler search order for OSX. Add Piglet tests for … Sep 10, 2015
src Merge pull request #1902 in SNORT/snort3 from ~MIALTIZE/snort3:build_… Dec 20, 2019
tools Merge pull request #1825 in SNORT/snort3 from ~RUCOMBS/snort3:talos_a… Nov 4, 2019
.clang-tidy Merge pull request #1044 in SNORT/snort3 from catch-update to master Oct 17, 2017
.gitignore Merge pull request #1504 in SNORT/snort3 from ~SHASLAD/snort3:new_bin… Feb 12, 2019
CMakeLists.txt DAQng: Port Snort and its DAQ modules to DAQ3 May 5, 2019
COPYING initial git at version 71 Apr 7, 2014
ChangeLog Merge pull request #1902 in SNORT/snort3 from ~MIALTIZE/snort3:build_… Dec 20, 2019
LICENSE reverted inadvertent cmake change; added missing LICENSE files; use b… Dec 10, 2014 build: Generate and tag build 254 Aug 21, 2019 adding cmake uninstall script Apr 16, 2014 Merge pull request #1867 in SNORT/snort3 from ~SHASLAD/snort3:bye_mal… Dec 3, 2019 Merge pull request #1737 in SNORT/snort3 from ~MIALTIZE/snort3:unvers… Sep 7, 2019
crusty.cfg uncrustify, see crusty.cfg Feb 27, 2015 Merge pull request #1225 in SNORT/snort3 from perf3_edm to master May 15, 2018


Snort 3 is the next generation Snort IPS (Intrusion Prevention System). This file will show you what Snort++ has to offer and guide you through the steps from download to demo. If you are unfamiliar with Snort you should take a look at the Snort documentation first. We will cover the following topics:


This version of Snort++ includes new features as well as all Snort 2.X features and bug fixes for the base version of Snort except as indicated below:

Project = Snort++
Binary = snort
Version = 3.0.0 (Build 250) from 2.9.11

Here are some key features of Snort++:

  • Support multiple packet processing threads
  • Use a shared configuration and attribute table
  • Use a simple, scriptable configuration
  • Make key components pluggable
  • Autodetect services for portless configuration
  • Support sticky buffers in rules
  • Autogenerate reference documentation
  • Provide better cross platform support
  • Facilitate component testing

Additional features on the roadmap include:

  • Use a shared network map
  • Support pipelining of packet processing
  • Support hardware offload and data plane integration
  • Support proxy mode
  • Windows support


If you already build Snort, you may have everything you need. If not, grab the latest:

Additional packages provide optional features. Check the manual for more.


There is a source tarball available in the Downloads section on


You can also get the code with:

git clone git://

There are separate extras packages for cmake that provide additional features and demonstrate how to build plugins. The source for extras is in snort3_extra.git repo.


Follow these steps:

  1. Set up source directory:
  • If you are using a github clone:

    cd snort3/
  • Otherwise, do this:

    tar zxf snort-tarball
    cd snort-3.0.0*
  1. Setup install path:

    export my_path=/path/to/snorty
  2. Compile and install:

  • To build with cmake and make, run It will automatically create and populate a new subdirectory named 'build'.

    ./ --prefix=$my_path
    cd build
    make -j $(nproc) install


  • If you can do src/snort -V you built successfully.
  • If you are familiar with cmake, you can run cmake/ccmake instead of
  • cmake --help will list any available generators, such as Xcode. Feel free to use one, however help with those will be provided separately.


Here are some examples.

  • Snort++ provides lots of help from the command line, including:

    $my_path/bin/snort --help
    $my_path/bin/snort --help-module suppress
    $my_path/bin/snort --help-config | grep thread
  • Examine and dump a pcap. In the following, replace a.pcap with your favorite:

    $my_path/bin/snort -r a.pcap
    $my_path/bin/snort -L dump -d -e -q -r a.pcap
  • Verify a config, with or w/o rules:

    $my_path/bin/snort -c $my_path/etc/snort/snort.lua
    $my_path/bin/snort -c $my_path/etc/snort/snort.lua -R $my_path/etc/snort/sample.rules
  • Run IDS mode. In the following, replace pcaps/ with a path to a directory with one or more *.pcap files:

    $my_path/bin/snort -c $my_path/etc/snort/snort.lua -R $my_path/etc/snort/sample.rules \
        -r a.pcap -A alert_test -n 100000
  • Let's suppress 1:2123. We could edit the conf or just do this:

    $my_path/bin/snort -c $my_path/etc/snort/snort.lua -R $my_path/etc/snort/sample.rules \
        -r a.pcap -A alert_test -n 100000 --lua "suppress = { { gid = 1, sid = 2123 } }"
  • Go whole hog on a directory with multiple packet threads:

    $my_path/bin/snort -c $my_path/etc/snort/snort.lua -R $my_path/etc/snort/sample.rules \
        --pcap-filter \*.pcap --pcap-dir pcaps/ -A alert_fast --max-packet-threads 8

Additional examples are given in doc/usage.txt.


Take a look at the manual, parts of which are generated by the code so it stays up to date:


It does not yet have much on the how and why, but it does have all the currently available configuration, etc. Some key changes to rules:

  • you must use comma separated content sub options like this: content:"foo", nocase;
  • buffer selectors must appear before the content and remain in effect until changed
  • pcre buffer selectors were deleted
  • check the manual for more on Snort++ vs Snort
  • check the manual reference section to understand how parameters are defined, etc.

It also covers new features not demonstrated here:

  • snort2lua, a tool to convert Snort 2.X conf and rules to the new form
  • a new HTTP inspector
  • a binder, for mapping configuration to traffic
  • a wizard for port-independent configuration
  • improved rule parsing - arbitrary whitespace, C style comments, #begin/#end comments
  • local and remote command line shell



We hope you are as excited about Snort++ as we are. Although a lot of work remains, we wanted to give you a chance to try it out and let us know what you think on the snort-users list. In the meantime, we'll keep our snout to the grindstone.

You can’t perform that action at this time.