2013년 12월 2일 월요일

[Linux] Snort 설치 및 활용

Snort란?
snort는 실시간 트래픽 분석과 IP 네트워크 상에서 패킷 로깅이 가능한 가벼운(lightweight) 네트워크 침입탐지시스템이다. snort는 프로토콜 분석, 내용 검색/매칭을 수행할 수 있으며 오버플로우, Stealth 포트스캔, CGI 공격, SMB 탐색, OS 확인 시도 등의 다양한 공격과 스캔을 탐지할 수 있다.

테스트서버: OS ; RedHat Linux 9.0

1. 필요한 파일이 2개 또는 3개 일 수 있다.
1) snort-2.1.0.tar.gz : www.snort.org에서 최신버젼을 받을 수 있다.
2) libpcap-0.7.2-1.i386.rpm : Linux9.0시디에서 구했다... www.rpmfind.com에서도 구할 수 있다.
3) pcre-4.5.tar.gz : ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/ 에서 구할 수 있다.

2. pcre는 이미 설치되어 있을 수도 있으니..이 파일은 snort를 configure할때 에러가 난다면(없으믄 에러..ㅡㅡ;;) 다운 받자.

3. 이제 설치해보도록 한다.

1) 적당한 위치에 파일들을 옮긴 후 그 위치로 이동한다.
mv ./snort-2.1.0.tar.gz /usr/local/src
mv ./libpcap-* /usr/local/src
mv ./pcre-* /usr/local/src
cd /usr/local/src

2) libpcap을 설치한다.
rpm -Uvh libpcap-0.7.2-1.i386.rpm

3) snort의 압축을 해제 후, 디렉토리 통째로 이동시킨다. 그 후 해당 디렉토리로 이동.
tar xvfz snort-2.1.0.tar.gz
mv snort-2.1.0 /usr/local/snort
cd /usr/local/snort

4) configure , make , make install을 한번에 한다.
./configure && make && make install
* 팁1: &&와 ;의 차이점 --> &&로 명령어를 묶을경우 에러가 나면 실행을 중지하지만, ;로 묶을경우 무시하고 설치한다.

5) 만약 여기서 에러가 난다면(pcre에러) pcre를 설치해야한다.
pcre의 설치는 간단하므로 간략하게만 설명한다.
압축해제 -> configure -> make -> make install
tar xvfz pcre-4.5.tar.gz -> cd pcre-4.5 -> ./configure && make && make install

6) snort의 설치가 4)번처럼 잘 되었다면 로그 기록을 위한 설정이 필요하다.
   A) 로그기록을 위한 디렉토리 설정
      ㄱ) mkdir /var/log/snort
      ㄴ) chmod 700 /var/log/snort
   B) /usr/local/snort/etc/snort.conf 파일의 환경설정
      ㄱ) var HOME_NET 의 IP부분을 any -> 자기서버IP로 변경해준다.
      ㄴ) include $RULE_PATH/web-iis.rules 부분은 IIS를 위한 설정이므로, 주석처리한다. (#)

4. 이제 실행해보자.

/usr/local/snort/src/snort -l /var/log/snort -A fast -c /usr/local/snort/etc/snort.conf -D -N

명령어 설명 : ( 이부분은 phpschool에서 참조... )

참조시작 {
-l 은 로그 디렉토리 설정 부분이고
-c 는 설정파일 부분이고
-A 는 로그기록을 어떻게 할꺼냐 .. full,none,fast 세가지가 있습니다.
-D 는 데몬으로 동작한다는것이고
-N 은 로그를 남기지 않고 경고메시지만 남긴다는 의미입니다.
※. -N 옵션을 주지 않으면 서버에 접근하는 아이피를 디렉토리로 만들어서 로그가 남게 된다.(조심)

snort 실행 옵션은 아래와 같습니다.

-A Set alert mode: fast, full, or none (alert file alerts only)
-a Display ARP packets
-b Log packets in tcpdump format (much faster!)
-c <rules> Use Rules File <rules>
-C Print out payloads with character data only (no hex)
-d Dump the Application Layer
-D Run Snort in background (daemon) mode
-e Display the second layer header info
-F <bpf> Read BPF filters from file <bpf>
-g <gname> Run snort gid as <gname> group (or gid) after initialization
-h <hn> Home network = <hn>
-i <if> Listen on interface <if>
-I Add Interface name to alert output
-l <ld> Log to directory <ld>
-n <cnt> Exit after receiving <cnt> packets
-N Turn off logging (alerts still work)
-o Change the rule testing order to Pass|Alert|Log
-O Obfuscate the logged IP addresses
-p Disable promiscuous mode sniffing
-P <snap> set explicit snaplen of packet (default: 1514)
-q Quiet. Don't show banner and status report
-r <tf> Read and process tcpdump file <tf>
-s Log alert messages to syslog
-S <n=v> Set rules file variable n equal to value v
-t <dir> Chroots process to <dir> after initialization
-u <uname> Run snort uid as <uname> user (or uid) after initialization
-v Be verbose
-V Show version number
-X Dump the raw packet data starting at the link layer

rule 파일은 http://www.snort.org/downloads/snortrules.tar.gz 에서 받으시면 되고
rule 에 대한 자세한 설명은 http://www.snort.org/cgi-bin/done.cgi 에서 확인 하실 수 있습니다.


5. snort에 의한 로그파일은 /var/log/snort에 쌓이게 된다.

댓글 없음:

댓글 쓰기