
규칙 기반 탐지, 프로토콜 인식 검사 및 pcap 분석을 지원하는 멀티스레드 네트워크 침입 탐지·차단 시스템으로, 기업 트래픽 모니터링을 위한 도구입니다.
Snort 3는 차세대 Snort IPS(Intrusion Prevention System)입니다. 이 파일은 Snort++가 제공하는 기능을 보여주고 다운로드에서 데모까지의 단계를 안내합니다. Snort에 익숙하지 않다면 먼저 Snort 문서를 살펴보시기 바랍니다. 다음 주제를 다룰 것입니다:
이 버전의 Snort++는 아래에 표시된 경우를 제외하고 모든 Snort 2.X 기능과 기본 버전의 Snort에 대한 버그 수정뿐만 아니라 새로운 기능을 포함합니다:
Project = Snort++
Binary = snort
Version = 3.0.0 (Build 250) from 2.9.11
다음은 Snort++의 주요 기능 중 일부입니다:
로드맵에 포함된 추가 기능은 다음과 같습니다:
이미 Snort를 빌드하고 있다면 필요한 모든 것을 갖추고 있을 수 있습니다. 그렇지 않다면 최신 버전을 받으세요:
추가 패키지는 선택적 기능을 제공합니다. 자세한 내용은 매뉴얼을 확인하세요.
snort.org의 다운로드 섹션에서 소스 tarball을 사용할 수 있습니다:
snort-3.0.0-a3.tar.gz
다음과 같이 코드를 받을 수도 있습니다:
git clone https://github.com/snort3/snort3.git
cmake용 별도의 extras 패키지가 있으며, 추가 기능을 제공하고 플러그인 빌드 방법을 보여줍니다. extras의 소스는 snort3_extra.git 저장소에 있습니다.
다음 단계를 따르세요:
github 클론을 사용하는 경우:
cd snort3/
그렇지 않으면 다음과 같이 합니다:
tar zxf snort-tarball
cd snort-3.0.0*
설치 경로를 설정합니다:
export my_path=/path/to/snorty
컴파일하고 설치합니다:
cmake와 make로 빌드하려면 configure_cmake.sh를 실행하세요. 자동으로 'build'라는 새 하위 디렉터리를 생성하고 채웁니다.
./configure_cmake.sh --prefix=$my_path
cd build
make -j $(nproc) install
참고:
다음은 몇 가지 예입니다. Talos 규칙 및/또는 구성을 사용하는 경우 snort.lua와 snort_defaults.lua 상단에서 필요한 변수를 먼저 설정해야 합니다.
Snort++는 명령줄에서 다양한 도움말을 제공합니다, 예를 들면:
$my_path/bin/snort --help
$my_path/bin/snort --help-module suppress
$my_path/bin/snort --help-config | grep thread
pcap을 검사하고 덤프합니다. 다음에서 a.pcap을 원하는 파일로 바꾸세요:
$my_path/bin/snort -r a.pcap
$my_path/bin/snort -L dump -d -e -q -r a.pcap
규칙 유무에 관계없이 구성을 검증합니다:
$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
IDS 모드를 실행합니다. 다음에서 pcaps/를 하나 이상의 *.pcap 파일이 있는 디렉터리 경로로 바꾸세요:
$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
1:2123을 억제해 보겠습니다. conf를 편집하거나 다음과 같이 하면 됩니다:
$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 } }"
여러 패킷 스레드로 디렉터리를 전체 처리합니다:
$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
추가 예제는 doc/usage.txt에 있습니다.
Snort는 다양한 구성 요소를 테스트하기 위한 libFuzzer 퍼즈 타깃을 포함합니다. 퍼저를 빌드하고 실행하려면 Clang이 필요합니다.
AddressSanitizer로 퍼저를 빌드합니다:
CC=clang CXX=clang++ ./configure_cmake.sh --enable-fuzz-sanitizer --enable-fuzzers \
--enable-address-sanitizer
cd build
make fuzz -j $(nproc)
DAQ include 및 라이브러리 경로를 지정해야 하는 경우:
CC=clang CXX=clang++ ./configure_cmake.sh --enable-fuzz-sanitizer --enable-fuzzers \
--enable-address-sanitizer --with-daq-includes=/path/to/daq/include --with-daq-libraries=/path/to/daq/lib
cd build
make fuzz -j $(nproc)
코퍼스 디렉터리를 제공하여 퍼즈 타깃을 실행합니다. 각 타깃은 build/fuzz/ 아래에 빌드됩니다:
mkdir file_olefile_fuzz_corpus
./fuzz/file_olefile_fuzz ./file_olefile_fuzz_corpus
DAQ 라이브러리가 기본 라이브러리 경로에 없으면 LD_LIBRARY_PATH를 설정하세요:
LD_LIBRARY_PATH=/path/to/daq/lib ./fuzz/file_olefile_fuzz ./file_olefile_fuzz_corpus
Ctrl+C를 눌러 퍼저를 중지합니다. 저장된 코퍼스 파일을 나열하려면:
ls ./file_olefile_fuzz_corpus
퍼저가 실행하는 코드 경로를 측정하려면 AddressSanitizer 대신 커버리지 계측으로 빌드합니다:
코드에 의해 생성되어 최신 상태로 유지되는 매뉴얼을 살펴보세요:
$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
아직 '방법'과 '이유'에 대한 내용은 많지 않지만, 현재 사용 가능한 모든 구성 등을 포함하고 있습니다. 규칙의 주요 변경 사항은 다음과 같습니다:
또한 여기서 소개되지 않은 새로운 기능도 다룹니다:
o")~
우리만큼 Snort++에 대해 기대하고 계시기를 바랍니다. snort-users 리스트에서 여러분의 생각을 알려주세요. 그동안 우리는 계속해서 열심히 작업하겠습니다.
CC=clang CXX=clang++ ./configure_cmake.sh --enable-fuzz-sanitizer --enable-fuzzers \
--enable-fuzz-coverage
cd build
make fuzz -j $(nproc)
기존 코퍼스에 대해 커버리지 빌드를 실행합니다 (-runs=0을 사용하여 새 입력을 생성하지 않고 재생):
LLVM_PROFILE_FILE="file_olefile_fuzz.profraw" ./fuzz/file_olefile_fuzz \
file_olefile_fuzz_corpus -runs=0 -detect_leaks=0
HTML 커버리지 보고서를 생성합니다:
llvm-profdata merge -sparse file_olefile_fuzz.profraw -o file_olefile_fuzz.profdata
llvm-cov show -format=html -instr-profile=file_olefile_fuzz.profdata \
./fuzz/file_olefile_fuzz -output-dir=file_olefile_fuzz_cov_html
보고서를 보려면 브라우저에서 file_olefile_fuzz_cov_html/index.html을 여세요.