Infomation

Snort 설치

DarkSoul.Story 2013. 1. 30. 13:59
반응형

설치 환경 
- ubuntu-10.04.4-server-i386
- snort 2.9.2  / shortreport-1.3.3.

 

Snort 2.9.2 설치에앞서 ubuntu-10.04.4-server-i386 설치 과정은 생략한다.

 

1. SSH 설치 (생략가능)
원격에서 ubuntu에접속할 때 보안을 강화 하기 위해, SSH를 설치 한다.
 

#apt-get install ssh

 

[그림.1 SSH 설치]

 
위의 [그림.1]에서 Y를 입력후, Enter키를 누르면, SSH가 설치가 된다.

 

2. 기본 패키지 추가 설치

본격적인 Snort 설치하기 전에 몇 가지 필수 패키지를 설치 한다.

#apt-get install gcc                - C/C++ 컴파일러

#apt-get install g++               - C/C++ 컴파일러

#apt-get install m4                - 매크로 분석기

#apt-get install flex                - 구문 분석기

#apt-get install bison              - 구문 분석기

#apt-get install nmap

#apt-get install nbtscan

#apt-get install apache2

#apt-get install php5

#apt-get install php5-mysql

#apt-get install php5-gd

 

지금까지 설치한 패키지들은 컴파일 및 snort 운영을 위해 필요한 패키지로 환경 구성에 따라 필요한 패키지를 추가 설치 하면 된다. 여기서는 최소한의 필요한 패키지만 설치 하였다.

 

3. Libpcap 설치

Portable Packet Capturing Library 약자로 Snort를 사용하는데 있어 필수 라이브러리로, 네트워크에서 패킷을 캡처 하는데 사용된다. 현재(2012.03) 최신 릴리즈는 libpcap-1.2.1이다.

 

Libpcap 다운로드

#wget http://www.tcpdump.org/release/libpcap-1.2.1.tar.gz

 

Libpcap 압축 풀기 & 설치

#tar xvfz libpcap-1.2.1.tar.gz    

#cd libpcap-1.2.1

#./configure

#make

#make install

 

4. Libpcre 설치

Perl-compatible regular expression library 약자로 SNORT에서 payload 데이터의 패턴 매치를 위해 사용 하며, 문자열 정규 표현식 라이브러리이다. 현재(2012.03) 최신 릴리즈는 pcre-8.30이다.

 

Libpcre 다운로드

#wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.30.tar.gz

 

Libpcre<v:shapetype id=_x0000_t202 path="m,l,21600r21600,l21600,xe" o:spt="202" coordsize="21600,21600"> </v:shapetype> 압축 풀기 및 설치

#tar xvfz pcre-8.30.tar.gz

#cd libpcap-1.2.1

#./configure

#make

#make install

 

5. My SQL 설치

Snort 탐지 이벤트를 파일 형태로 저장 할 수 있지만, 파일 형태로 저장 하게 되면 파일 크기가 너무 커져 버릴 수 있으며, 비 효율적으로 운영되지 때문에 Snort MySQL을 연동하여 효율적으로 운영한다.

#apt-get install mysql-server

#apt-get install libmysqlclient16-dev

 

6. JpGraph 설치 (선택)

JpGraph PHP에서 그래프를 그리는데 사용된다. Snort Report에서 통계 등의 결과를 그래프로 확인할 때 필요하다.

 

#wget http://hem.bredband.net/jpgraph/jpgraph-1.27.1.tar.gz

#mkdir /var/www/jpgraph

#tar zxvf jpgraph-1.27.1.tar.gz

#cp –r jpgraph-1.27.1/src  /var/www/jpgraph/

 

7. Snort Report 설치

Snort Report Snort에서 탐지된 이벤트에 대해서, 리포팅 해주는 역할을 한다. 최신 버전은 1.3.3이다.

 

#wget http://www.symmetrixtech.com/ids/snortreport-1.3.3.tar.gz

#tar zxvf shortreport-1.3.3.tar.gz –C /var/www/

 

이제 JpGraph 라이브러리가 MySQL에 접속하여, 탐지된 내용을 가지고 Snort Report에 표시 할 수 있도록 srconf.php 파일을 수정 해 줘야 한다.

 

#vi /var/www/snortreport-1.3.3/srconf.php

 

srconf.php에서 수정할 부분은 아래와 같다.


[그림.2 srconf.php 수정]

 

[그림.2]에서 보듯이 pass부분에 snort라는 유저가 사용할 패스워드를 입력해 주면 된다. (매우 중요하 므로, 꼭! 기억하고있어야 한다.)

 

8. Data Acquisition API 설치

Snoprt 2.9.x부터는 새로운 데이터 수집 API가 적용되어 snort를 설치 하기 전에 설치 해야 한다.

http://www.snort.org/doqnloads/1408에서 daq-0.6.2.tar.gz를 받을 수 있다. wget으로 받을 경우 다음과 같이 다운로드 하면 된다.

 

#wget wget http://www.snort.org/dl/snort-current/daq-0.6.2.tar.gz

# tar zxvf daq-0.6.2.tar.gz

#cd daq-0.6.2.

#./configure

#make

#make install

 

9. Libdnet 설치

네트워크 주소 조작. 커널 ARP 및 경로 테이블 조작, IP 터널링 등을 가능하게 해주는 Libdnet을 설치한다. snort를 운영하는데 필요한 라이브러이 이다.

 

#wget http://libdnet.googlecode.com/files/libdnet-1.12.tgz

# tar zxvf libdnet-1.12.tgz

#cd libdnet-1.12

#./configure

#make

#make install

#ln –s /usr/local/lib/libdnet.1.0.1  /usr/lib/libdnet.1

 

10. snort 설치

Snort는 http://www.snort.org/snort-downloads에서 다운로드 받을 수 있으며, wget으로 다운로드 받을 경우 아래와 같이 다운로드 하면 된다.

 

#wget wget http://www.snort.org/dl/snort-current/snort-2.9.2.tar.gz

# tar zxvf snort-2.9.2.tar.gz

#cd snort-2.9.2

#./configure  --prefix=/usr/local/snort --enable-sourcefure

#make

#make install

#mkdir  /var/log/snort

#mkdir  /var/snort

#groupadd snort                 - snort그룹 생성

#useradd -g snort snort           - snort 라는 계정을 생성 및 snort 그룹에 추가

#chown snort:snort /var/log/snort  - /var/log/snort의 소유자를 snort로 변경

 

snort설치가 되었으면,  MySQL snort 데이터베이스를 생성하기 위해 다음과 같이 진행 한다.

 

#echo “create database snort;” | mysql -u root -p

 

위의 명령어는 MySQL에 사용한 snort DB를 생성해 주는 명령어이다명령어는 입력하면 [그림.3]과 같이 MYSQL Password를 입력하라고 나온다.

[그림.3 snort DB 생성]

 

password를 입력하면, snort라는 DB가 생성된다.

 

다음으로 Snort 하위에 존재하는 schemas 디렉토리로 이동한 후 schemas를 입력해 준다.

#cd snort-2.9.2/schemas

#mysql -u root -p -D snort < create_mysql

위 명령어를 입력하면 DB생성할 때와 같이 MYSQL Password를 입력한다.


[그림.4 schmas 입력]

 

루트로 데몬을 실행하는 것은 좋은 생각이 아니기 때문에, snort를 사용할 수 있도록 추가로 MySQL의 사용자를 만들어주고 권한을 주어야 한다.

 

#mysql -u root -p - password 입력 후 mysql 로그인

mysql>grant, create, insert, select, delete, update on snort.* to [사용자 이름]@localhost

     -> identified by “[임의의 Password]”;

 

[그림5. 사용자 추가 및 명령어 권한 부여]


[그림6. 정상적으로 적용되었는지 확인]

 

이제 snort를 설치 하였으니, Rule을 다운로드 하여 적용해 본다.

 

11. Snort Rules 적용

 

Snort Rule을 적용 하기에 앞서, Rule을 사용할 수 있는 유저는 2가지로 분류된다.

첫 번째는 VRT 가입 유저로일정 금액을 지불하고 Rule을 사용하는 유저 이다두 번째는 Registered 유저로 금액을 지불하지 않고무료로 사용하는 유저 이다.

이 두 유저의 차이점은 Registered 유저가 사용하는 Rule 파일이 VRT가입 유저가 사용하는 Rule파일 보다 30일 전에 생성된 Rule이라는 점이다.  연구 목적으로 설치 하는 것이라면, Registered 유저 파일을 다운로드 하여 적용 하면 된다https://www.snort.org/snort-rules/?에서 Registered User Release 파일을 다운로드 받는다.

 

#tar zxvf snortrules-snapshot-2921.tar.gz -C /user/local/snort

#mkdir /usr/local/snort/lib/snort_dynamicrules 

#cp /usr/local/snort/so_rules/precompiled/Ubuntu-10-4/i386/2.9.2.0/* 한칸 띄고 이어서  /usr/local/snort/lib/snort_dynamicrules

#touch /usr/local/snort/rules/white_list.rules

#touch /usr/local/snort/rules/black_list.rules

#ldconfig

 

Rule이 잘 설치가 되었으면,  snort.conf 파일에서 Rule에 대한 부분을 수정해 준다.

참고로, snort.conf 파일에 대해서는 추후에 자세히 다루겠다.

 

#vi /usr/local/snort/etc/snort.conf

 

Snort.conf 파일을 열어 위에서 적용한 White List Rule Black List Rule의 경로를 다음과 같이 수정해 준다.


[그림.7 White / Black List Rule 수정 전]


[그림.8 White / Black List Rule 수정 후]

 

다음으로 Dynamic Rule에 대한 경로 수정을 한다.

 

[그림9. Dynamic Rule 수정 전]


[그림10. Dynamic Rule 수정 후]

 

이제 마지막으로 Barnyard에 대한 unified2 출력에 대한 설정만 하면, Rule에 관한 설정은 끝이 난다. 


[그림11.output 설정 전]

 

[그림.9]에서 붉은 색 네모 박스 밑 부분에 다음과 같이 추가로 기입해준다.


[그림12. ouput 설정 후]


12. Barnyard2 설치

Barnyard2 snort의 주요 검색 엔진에 부하를 줄여 snort의 효율성을 향상 시켜 주는 역학을 한다. Barnyard2 snort의 새로운 unified2 파일 형식용으로 특별히 고안된 Barnyard Project이다. 현재(2012.03) 최신 릴리스는 Barnyard2-1.9이며, 사용자의 피드백을 바탕으로 계속 업데이트 되고 있다.

 

#wget http://www.securixlive.com/download/barnyard2/barnyard2-1.9.tar.gz

#tar zxvf barnyard2-1.9.tar.gz

#cd narnyard2-1.9

#./configure –with-mysql

#make

#make install

#cp etc/barnyard2.conf /usr/local/snort/etc

#mkdir /var/log/barnyard2

#chmod 666 /var/log/barnyard2

#touch /var/log/snort/barnyard2.waldo

#chow snort.snort /var/log/snort/barnyard2.waldo

 

Barnyard2가 정상적으로 사용되기 위해서는, snort가 사용하는 프로세스의 파일 경로를 설정해 주어야 하는데, 아래와 같이 설정해 주면 된다.

 

#vi /usr/local/snort/etc/barnyard2.conf


[그림13. barnyard2.conf 파일 경로 수정 전]


[그림14. barnyard2.conf 파일 경로 수정 후]

 

다음으로 출력에서 일부 수준의 독창성을 필요로 하는 플러그인을 사용하기 위해서는 인터페이스 및 호스트 이름을 제공해 주어야 한다.

[그림15. barnyard2.conf 파일 호스트 네임 / 인터페이스 수정 전]


[그림16. barnyard2.conf 파일 호스트 네임 / 인터페이스 수정 후]


eth0가 아닌 다른 네트워크 인터페이스를 지정해야 한다.

 

마지막으로, Output Database 부분을 수정해야 한다.

[그림17. barnyard2.conf 파일 output database 수정 전]


[그림18. barnyard2.conf 파일 output database 수정 후]

 

이 부분에서 중요한 것이 user / password / dbname이다.  10. snort 설치 과정 중 MySQL 연동 부분에서 생성한 user password , dbname을 입력해야 한다.

 

13 Network 카드 설정

 

이제 필요한 소프트웨어 설치 및 주요 설정이 끝났다.  IP DHCP 상태로 운영하는 것보다, Static으로 운영 하는 것이 더 효율적이다. 다음과 같이 설정을 변경해 준다.

 

#vi /etc/network/interfaces

auto eth0

iface eth0 inet static

address [IP 주소 설정]

netmask [서브넷 마스크]

network [네트워크 대역]

broadcast [브로드캐스트 IP]

gateway [게이트웨이 IP]

 

새로 추가

 

auto eth1                     - barnyard2.conf에서 설정한 인터페이스

iface eth1 inet maual

ifconfig eth1 up

 

저장 후

 

#/etc/init.d/networking restart


[그림19. 네트워크 확인]

 

14. snort 테스트

 

지금까지Snort  snort rport / 기타 소프트웨어를 설치 하였다. 이제 snort가 정상적으로 동작하는지 확인하기 위해 다음같이 실행한다.

 

#/usr/local/snort/bin/snort -u snort -g snort -c /usr/local/snort/etc/snort.conf -i eth1

 

[그림20. Commecing packet processing]

 

[그림20]과 같이 Commecing packet processing 이라는 문구와 함께 더 이상 진행이 되지 않으면, 정상적으로 동작하는 것이다. 이 상태에서 ctrl + c를 눌러 주면 다음으로 진행된다.

 

아무 이상 없이 [그림21]과 같은 화면이 보이면 정상적으로 종료된 것이다.


[그림21. snort 정상 동작 확인] 

 

Snort Report는 http://[snort report가 설치되어 있는 PC IP]/snortreport-1.3.3/alerts.php으로 접속하면 다음과 같은 화면을 볼 수 있다.


[그림22. Snort Report 메인 화면]

 

그리고, SnortReport에서 탐지결과를 보려면 Snort와Barnyard2가실행 되어야 한다.

 

* Barnyard2실행

/usr/local/bin/barnyard2 -c /usr/local/snort/etc/barnyard2.conf -G /usr/local/snort/etc/gem-msg.map -S /usr/local/snort/etc/sid-msg.map -d /var/log/snort -f snort.u2 -w /var/log/snort/barnyard2.waldo -D

* Snort실행

/usr/loacl/snort/bin/snort -u root -g snort -c /usr/local/snort/etc/snort.conf -i eth0

  

이상 여기 까지 대략 적인 Snort 설치 과정 이다.

 

 

반응형

'Infomation' 카테고리의 다른 글

ADB 유틸리티 설치  (0) 2013.02.06
[안드로이드 패킷 캡처] tPacketCapture  (0) 2013.01.31
Snort 개요  (0) 2013.01.30
NAT (Network Address Translation) - 주소 변환  (0) 2013.01.30
방화벽 (Firewall)  (0) 2013.01.30