Snort 2.9.0 의 DAQ 라이브러리 기능

원문 : http://vrt-sourcefire.blogspot.com/2010/08/snort-29-essentials-daq.html

Snort 2.9 Essentials: The DAQ
최근 발표된 스노트 2.9 베타에서 Data AcQuistion library (DAQ) 를 소개 하였다. ( 현재 2.9.0 은 stable 되었다 )
DAQ 는 기존 패킷 참조 방식을 대체 하는 역할을 하며, 더욱 쉽게 패킷 캡처를 구현하게 한다.
DAQ 0.1 은 PCAP, AFPACKET, NFQ, IPQ, IPFW 그리고 DUMP 를 지원한다.

바뀐이유는, DAQ 는 필수의 abstraction layer( 하드웨어와 상호 작용 가능 계층 ) 이며, 구동 중 플러그-인 할 수 있는,
선택 가능한 적합한 모듈이기 때문이다.
그래서 passive 에서 inline mode 로의 변경을 쉽게하며, snort core 를 재 컴파일 필요가 없다.

게다가, AFPACKET 을 지원합니다. 쉽게 INLINE (IPS모드)로 IPTABLES, QUEUE SETTING 이 없이 구성 할 수 있습니다.
마지막으로, DAQ는 Snort 모듈로 동작하며, 쉽게 동작 한다.

USAGE : Building the DAQ Library and DAQ Modules
snort.org 사이트로 부터 daq-0.1.tar.gz 파일을 다운 받기
해당 파일 압축 풀기 ( > tar xvfz ./daq-0.1.tar.gz )
다음 최소한의 요구 사항을 만족 시켜야 한다.

PCAP 라이브러리는 1.0.0 ~ 1.1.1 사이 버젼이 적용 가능 하다.
Libdnet 라이브러리는 IPQ 와 NFQ DAQs 를 위해 필요하다. 만약 설치에 에러가 있다면 DAQ 소스에 README 를 확인
Libnet 은 이제 더이상 불 필요

./configure ; make ; sudo make install
 

DAQ 라이브러리를 다 설치 한 후, static 과 dynamic module flavors 는 사용하지 않을 때보다 더 많이 생성 되게 될 것 이다.
다양한 많은 설치 옵션은 다음 명령으로 참조 하라.

./configure –help

Building Snort

Snort 설치를 위해선 DAQ 의 설치 정보가 필요 하다. 만약 DAQ 를 기본이 아닌 경로에 설치 한다면, 반드시 다음 옵션으로 변경 하라

./configure –with-daq-includes=<inc dir>–with-daq-libraries=<lib dir>
 

만약 DAQ 모듈을 기본 경로에 설치 하지 않았다면, 해당 경로를 확실히 지정해 주어야한다.

Snort의 ./configure 명령은 bin/daq-modules-config 파일의 실행을 필요로 한다.
물론 기본 경로에 daq 가 설치 되었다면 그냥 진행 하면된다.

하지만 정상 경로에 설치 했다 하더라고 ldconfig 명령 또는 라이브러리 참조와 관련된 시스템 명령을 실행 해주어야 할 수도 있다.
 

PATH=/daq/install/prefix:$PATH

기본 적으로, Snort 는 몇몇 DAQ 모듈과 PCAP, AFPACKET, DUMP 등을 포함하여 컴파일 된다.
 

Once Snort is built
Snort 가 DAQ 지원 가능 여부를 확인 하기위해 다음을 실행 시켜라 :

snort [–daq-dir <dir>] –daq-list

위 명령은 특정 디렉토리로 부터 DAQ 모듈과 프린트 타입, 버젼, 속성을 검색한다. 만약 BUILT-IN 모듈만을 보고싶다면
–daq-dir 을 빼도 된다.
 
출력 결과는 다음과 같을 것이다.
 
Available DAQ modules:
pcap(v2): readback live multi
unprivnfq(v1): live inline
multiipq(v1): live inline
multiipfw(v1): live inline multi
unprivdump(v1): readback live inline multi
unprivafpacket(v1): live inline multi unpriv

 
6개 정도의 DAQ 가 사용 가능하다는 것을 볼수 있을 것이다.
pcap 은 inline 동작이 불가능하고, nfq, ipq 는 권한 없이 동작이 안된다는 것을 표시 한다.

Configure Snort
모든것이 순서대로 진행 되였다면, Snort 는 DAQ 라이브러리를 포함하여 컴파일 되었다.
여기서 기본 패킷 캡쳐 모듈은 pcap 만을 사용하려는 유저라면 그만 읽어도 된다. 아니면 고온~
 
다음은 DAQ 기능과 관련된 Snort 의 명령 및 config file 옵션이다.
 
snort [–daq <type>] [–daq-mode <mode>]
[–daq-dir <dir>] [–daq-var <var>]
config daq: <type>
config daq_mode: <mode>
config daq_dir: <dir>
config daq_var: <var><type>
::= pcap  afpacket  dump  nfq  ipq  ipfw<mode>
::= read-file  passive  inline<dir>
::= path where to look for DAQ module so’s<var>
::= arbitrary <name>=<value> passed to DAQ
 
주의 사항 :
만약 daq-mode 가 설정 되지 않으면, -Q 옵션이 자동 실행 된다.
만약 daq-mode 가 설정 되지 않으면, -r 역시 자동 실행 된다.
기본 daq-mode 는 passive 이다.

( Running -Q and –daq-mode inline are allowed, but -Q and any other DAQ mode will cause a fatal error at start-up. )

 
USAGE

다음은 세개의 이더넷 인터페이스를 가지고 있으며, eth0 은 관리, eth1,2 는 패킷 통과 용으로 사용한다고 가정한다.
Using the PCAP DAQ
PCAP 은 DAQ의 기본 설정 이다. 패킷 스니핑, PCAP 파일 읽기는 SNORT의 일반적인 사용 법이다.
이것을 하기 위해서 다음의 옵션을 사용 한다.

snort -i <device>
snort -r <file>
snort –daq pcap –daq-mode passive -i <device>
snort –daq pcap –daq-mode read-file -r <file>
 
또한 pcap의 버퍼 사이즈도 조절 할 수 있다.
snort –daq pcap –daq-var buffer_size=<#bytes>
NOTE – PCAP DAQ 는 필터링된 패킷의 수를 카운트 하지 않는다.
 

Using the AFPACKET DAQ
AFPACKET 은 INLINE 모드를 구성하는 가장 쉬운 방법이며 PCAP 인터페이스보다 더 성능이 좋다.

AFPACKET 을 이용하여 passive 모드 ( 패킷 캡쳐, not QUEUEing ) 사용 하기

snort –daq afpacket -i <device>
[–daq-var buffer_size_mb=<#MB>]
[–daq-var debug]

만약 AFPACKET 을 이용하여 INLINE 모드( IPS )를 구성하고자 한다면, 반드시 여러개의 인터페이스 쌍(짝수)을 준비해야 한다.
기존과 다르게 AFPACKET 을 이용하므로, QUEUE, Bridge 를 구성할 필요 없으며, 다음과 같이 인터페이스만 설정 해 주면 된다.
Syntax for inline pairs

eth0:eth1
eth0:eth1::eht2:eth3

Running inline Snort
 
ifconfig eth1 promisc up
ifconfig eth2 promisc up
snort –daq afpacket -i eth1:eth2 -Q -c snort.conf
 

Closing
Snort Rules 모임에 참여하게 되었습니다.

부족한 영어 실력이지만, DAQ 라이브러리의 목적에 대한 궁금증을 해결하고자 번역을 해보았습니다.
오역, 오타가 있다면 댓글 달아주시면 수정 하도록 하겠습니다.

앞으로 열심히 활동 하도록 하겠습니다~ 반갑습니다^^

Advertisements

About this entry