Snort是一个广泛使用的开源网络入侵检测系统,能够实时分析网络流量并识别潜在的攻击。它支持自定义规则,可以根据特定的威胁情报进行配置。

Yurii Chalov -X (ychalov - SOFTSERVE INC at Cisco) e0261e2fdf Pull request #4450: js_norm: allow processing complex nested PDF objects 3 周之前
cmake 1c57479356 Pull request #4403: build: generate and tag 3.3.2.0 2 月之前
daqs 889c7bd6ac Pull request #4377: src: resolve various warnings 2 月之前
doc 4ea371bf72 Pull request #4458: build: generate and tag 3.3.7.0 3 周之前
lua 5e17f2b327 Pull request #4244: appid: Updating file_magic.rules with some new file types added to the VDB. 5 月之前
src e0261e2fdf Pull request #4450: js_norm: allow processing complex nested PDF objects 3 周之前
tools 97d57281b0 Pull request #4327: src: udpate to resolve new issues 4 月之前
.clang-tidy ccfa1626d8 Merge pull request #1044 in SNORT/snort3 from catch-update to master 7 年之前
.gitignore 2eb20232ad Merge pull request #1504 in SNORT/snort3 from ~SHASLAD/snort3:new_binder_ports_type to master 5 年之前
CMakeLists.txt 4ea371bf72 Pull request #4458: build: generate and tag 3.3.7.0 3 周之前
COPYING 75a57075e8 initial git at version 71 10 年之前
ChangeLog.md 4ea371bf72 Pull request #4458: build: generate and tag 3.3.7.0 3 周之前
LICENSE 0da45b77e7 reverted inadvertent cmake change; added missing LICENSE files; use blog posts for READMEs 10 年之前
README.md 9f92b01b5d Pull request #3419: doc: User documentation update for obfuscate_pii and --help-module 2 年之前
cmake_uninstall.cmake.in b5f6ecded4 adding cmake uninstall script 10 年之前
config.cmake.h.in 67bf7c8b73 Pull request #4389: flow: added compile-time option to disable tenant_id 3 月之前
configure_cmake.sh 67bf7c8b73 Pull request #4389: flow: added compile-time option to disable tenant_id 3 月之前
crusty.cfg ee4f1f23cb style: change max line length to 120 including \n 2 年之前
snort.pc.in 67bf7c8b73 Pull request #4389: flow: added compile-time option to disable tenant_id 3 月之前

README.md

Snort++

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:


OVERVIEW

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
  • Use a shared network map

Additional features on the roadmap include:

  • Support pipelining of packet processing
  • Support hardware offload and data plane integration
  • Support proxy mode
  • Windows support

DEPENDENCIES

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.

DOWNLOAD

There is a source tarball available in the Downloads section on snort.org:

snort-3.0.0-a3.tar.gz

You can also get the code with:

git clone https://github.com/snort3/snort3.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.

BUILD SNORT

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*
    
  2. Setup install path:

    export my_path=/path/to/snorty
    
    1. Compile and install:
    • To build with cmake and make, run configure_cmake.sh. It will automatically create and populate a new subdirectory named 'build'.
    ./configure_cmake.sh --prefix=$my_path
    cd build
    make -j $(nproc) install
    

Note:

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

RUN SNORT

Here are some examples. If you are using Talos rules and/or configs, you should first set any needed variables at the top of snort.lua and snort_defaults.lua.

  • 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.

DOCUMENTATION

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

$my_path/share/doc/snort/snort_manual.pdf
$my_path/share/doc/snort/snort_manual.html
$my_path/share/doc/snort/snort_manual/index.html

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

SQUEAL

o")~

We hope you are as excited about Snort++ as we are. Let us know what you think on the snort-users list. In the meantime, we'll keep our snout to the grindstone.