• Snort-2.9.1 버전에 대해..
대표적인 IDS/IPS 오픈소스인 스노트가 2.9.xx 버전이 나온지도 한참 지났네요.
2.8.xx 버전과 비교해서 많은 기능이 추가되었고, 수 많은 버그 또한 수정 되었지요. 
(물론, 모든 버그가 수정된건 아니겠지만..)

어쨌든.. 
지속적으로 추가되는 기능들 때문에.. 
처음 접하는 사람들에게는 조금 부담 스러울 수도 있을 정도로 복잡해져 가는것 같습니다. 

설치 과정부터 사용법까지 차근차근 포스팅 해보려고 합니다. 


혹시 몰라 페도라 17에 snort 설치 하는 법에 대한 영문 매뉴얼을 첨부했으니 필요하신분은 참고하세요.
  • 설치 과정
먼저, 사전에 설치 해야할 rpm 들이 있습니다. 'rpm.pbone.net' 혹은 구글링을 통해 다운 받아둡니다. 
'# rpm -i <패키지 이름>' 으로 설치 합니다. 
libpcap
libpcap-devel
pcre
pcre-devel
libdnet
libdnet-devel 


1.  daq 다운 

우선 아래 홈페이지에 접속해서 snort와 필수 유틸인 daq를 다운 받아야 합니다. 


스노트(snort) 공식 홈페이지 

rpm을 받으셔도 되고 tar로 묶인 소스 파일을 받으셔도 됩니다.


2. daq를 설치


1) tar파일을 받으셨다면..
압축을 풀어주시고..
README 파일에 나와있는 설치 순서에 따라 실행해주면 됩니다. 


   # ./configure

   # make

   # sudo make install


2) rpm을 받으셨다면 rpm명령으로 설치하시면 됩니다. 

# rpm -ivh daq-*.rpm 

이 과정에서 libpcap(버전 1.0.0 이상) 이나 
다른 필요 항목들이 설치되어 있는지 확인하는 과정을 거치게 됩니다.  

daq는 패킷을 처리하기 위한 필수 유틸로
이를 설치하지 않으면 snort가 정상적으로 설치되지 않습니다. 

(2.8.xx 버전에는 없었으나.. 2.9.xx에서 추가된 기능 같더군요. )


3. snort 설치


snort 홈페이지에서 tar확장자로 압축된 snort 파일을 다운 받아 압축을 풀고..
 
snort-2.9.1/doc/INSTALL 파일에 나와있는 설치 순서에 따라 실행해주면 됩니다.


1) 이전 버전의 snort가 설치되어 있다면.. 이를 제거해줘야 겠죠?

# sudo make uninstall


2) 필수 유틸들이 정상적으로 설치되어 있는지 확인합니다. 

libdnet, libpcap, libpcre 가 확인해야할 유틸들입니다. 

또한, 'which' 명령어를 써서 dnet-config, pcre-config, daq-modules-config 가 존재 하는지 확인합니다. 


예) # which daq-modules-config

/usr/local/bin/daq-modules-config


만약, 위의 것들중 없거나 설치되지 않은게 있다면 먼저 설치해 주어야 합니다. 


3) 설치를 시작합니다. 

snort 폴더에 있는 configure 를 실행합니다. 

만약 설정을 바꾸고 싶은게 있다면 '-h' 명령어로 세부 내용을 확인 후 설정값을 넣어주면 됩니다. 


예)

 # ./configure --enable-active-response --enable-reload --enable-react


4)  설치를 진행합니다. 

# make && sudo make install


5) 정상적으로 설치 되었는지 확인 후 실행하시면 됩니다. 

실행파일은 'src/snort' 파일로 생성되며,

'make install' 후에는 '/usr/local/bin/snort' 에도 들어가게 됩니다. 

※ bin 폴더에 넣어줌으로써 어떤 경로에서든 snort를 자유롭게 실행할 수 있게 되는 겁니다. 


daq가 정상적으로 설치 되었는지 확인 해보는 작업을 예로 들어보겠습니다. 


예) 

# snort --daq-list


Available DAQ modules:

pcap(v3): readback live multi unpriv 

ipq(v5): live inline multi 

ipfw(v2): live inline multi unpriv 

dump(v1): readback live inline multi unpriv 

afpacket(v4): live inline multi unpriv


만약 DAQ 모듈에 대한 정보가 정상적으로 출력되지 않는다면.. 

설치 과정에서 DAQ가 정상적으로 설치되지 않은 것입니다. 


6) 설정 적용 및 시그니처 파일 설정

기본적으로 '/etc/snort/snort.conf' 파일에서 원하는 설정 정보를 수정 및 적용 가능합니다. 

또한, '/etc/snort/rules/' 폴더에서 'rules'라는 확장자를 가진 파일에서는 시그니처를 설정 및 적용 할 수 있습니다. 


아래와 같이 설정 파일(snort.conf)에 시그니처 파일의 경로를 지정하면 해당 시그니처 파일의 경로를 찾아서 시그니처를 로드하게 됩니다. 

'/etc/'snort/rules'폴더를 변수로 설정 하고, 해당 경로의 'my.rules'를 include 함으로써 snort가 해당 시그니처 파일을 읽도록 설정해주는 내용입니다. 

var RULE_PATH /etc/snort/rules 

include $RULE_PATH/my.ruels 


7) 실행 옵션 지정

실행에 필요한 옵션 정보는 다음과 같이 조회가 가능합니다. 


# snort -?


'-D' 옵션은 데몬모드로 실행하도록 하는 옵션입니다. 

이런 내용은 위 명령어를 쓰면 모두 조회가 가능합니다. 



4. snort 사용 및 검증

우선 '-D'옵션을 사용해서 데몬 모드로 실행합니다. 


# snort -D -Q --daq afpacket -i eth1:eth2 --daq-var buffer_size_mb=64 -c /etc/snort/snort.conf 


시그니처가 정상적으로 탐지되고 있는지 확인하기 위해 snort에서 생성하는 alert 파일을 열어봅니다. 

# tail -f /var/log/snort/alert
  
[**] [1:225:7] test [**]
[Priority: 0]
11/04-17:36:58.370718 192.168.11.101:445 -> 192.168.9.148:49220
TCP TTL:127 TOS:0x0 ID:96 IpLen:20 DgmLen:1500 DF
***A**** Seq: 0x911E284F  Ack: 0x1E88D7E9  Win: 0xFC4E  TcpLen: 20


이벤트가 발생할 때마다 위와 같은 포맷의 결과를 확인할 수 있습니다. 

만약 snort가 동작중에 시그니처를 변경했다면.. 
다음 명령어로 snort를 종료하지 않고 설정을 다시 읽어들일 수 있습니다. 
 
# kill -SIGHUP <snort pid> 


만약 reload가 되지 않는다면..
'--enable-reload' 옵션을 주고 configure를 다시 수행 해보시기 바랍니다.  

이제 열심히 snort를 즐기기만 하면 됩니다!!
HAVE FUN! 


 

Posted by KT한
,