선 밖에 선 자유인

Snort ( Netwrok Intrusion Detection System ) 설치 본문

IT/System & Network

Snort ( Netwrok Intrusion Detection System ) 설치

Hotman 2010. 3. 8. 10:20

 

 

snort 설치전 libpcap 라이브러리와 pcre가 설치되어있는지 rpm -qa|grep libpcap pcre로 확인
깔려있지 않다면 yum 을 이용하여 설치

 

# yum install libpcap libpcap-devel

# yum install pcre pcre-devel

 

snort 최신 버전 다운


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

 

컴파일 환경설정 및 컴파일, 설치

 

# ./configure --prefix=/usr/local/snort --sysconfdir=/etc/snort --with-mysql=/usr/local/mysql –enable

-dynamic

# make && make install


만일 snort IDS와 웹/DB 서버를 따로 설치하여 연동한다면 snort 가 설치될 서버에 mysql-devel yum으로 설치하고 –with-mysql 의 경로를 지정하지 않는다.

 

 

로그 생성 디렉토리 생성


snort
그룹과 사용자를 등록하고 룰과 로그를 남길 디렉토리 생성

#groupadd snort
#useradd -g snort snort -s /sbin/nologin
#mkdir -p /etc/snort/rules
#mkdir /var/log/snort
# cp
압축해제디렉토리/etc/* /etc/snort

 

룰셋 설치

# wget http://www.snort.org/pub-bin/downloads.cgi/Download/vrt_os/snortrules-snapshot-2.8.tar.gz
압축을 /etc/snort에 해제해놓는다.

 

MySQL 사용자 snort PW지정, snortdb 생성하고 사용자(snort) snort DB에 권한을 가지도록 설정

mysql> GRANT ALL PRIVILEGES ON snortdb.* to snort@localhost identified by ‘1234’;

mysql> flush privileges;

 

snort 소스파일에 schems/create_mysql이라는 DB덤프파일이 들어있다. 테이블들을 생성.

# /usr/local/mysql/bin/mysql -u snort -p snortdb < create_mysql

 

ADODB BASE를 다운후 /usr/local/apache2/htdocs에 압축 해제


ADODB(php
로 작성된 ADO객체): http://sourceforge.net/projects/adodb/
BASE :
http://sourceforge.net/projects/secureideas/

tar xvzf 소스파일명.gz
편하게 사용하기 위해 디렉토리명 변경


# mv base-1.3.6 base
# mv adodb5 adodb

 

snort.conf 파일 다음과 같이 수정(패턴검색(/) 이용해서 검색)

# vi /etc/snort/snort.conf
var HOME_NET any
var EXTERNAL_NET any
var DNS_SERVERS $HOME_NET
var SMTP_SERVERS $HOME_NET
var HTTP_SERVERS $HOME_NET
var SQL_SERVERS $HOME_NET
var TELNET_SERVERS $HOME_NET
var HTTP_PORTS 80
var SHELLCODE_PORTS !80
var ORACLE_PORTS 1521
var AIM_SERVERS $HOME_NET
var RULE_PATH /etc/snort/rules

 

 

# dynamicpreprocessor directory 전부다 /usr/local/snort/lib로 변경

output database:log,mysql,user=snort password=PW dbname=snort host=localhost

 

base_conf.php 파일 수정

# cp base/base_conf.php.dist base_conf.php 파일명 변경후
# vi base_conf.php
$DBlib_path="/usr/local/apache2/htdocs/adodb";
$DBtype="mysql";

$alert_dbname="snortdb";
$alert_host="localhost";
$alert_port="3306";
$alert_user="snort";
$alert_password="PW";

 

base sql 스크립트를 snort DB에 넣어준다.

 

# cd /usr/local/apache2/htdocs/base/sql

# mysql –u snort –p snortdb < acid2base_tbls_mysql.sql

 

 

Snort IDS 가동

 

/usr/local/snort/bin/snort -i eth0 -c /etc/snort/snort.conf  –D 로 실행 후 프로세스 확인

 

# ps –ef | grep snort

 

/var/log/snort 에 로그가 남아야 정상적인 작동

정상적인 작동을 확인하고 snort 재실행

 

# /usr/local/snort/bin/snort –vdbe –i eth0 –c /etc/snort/snort.conf -D –l /var/log/snort 

 

http:// 서버 IP/base 로 접속한 후 create 버튼 누른후 HOME 링크 누르기

 

 

oinkmaster 를 이용한 rule 자동 업데이트 하기

 

http://oinkmaster.sourceforge.net -> 다운로드 클릭 -> oinkmaster-2.0.tar.gz

 

# mv oinkmaster ids/

# cd ids

# tar xvfz oinkmaster-2.0.tar.gz

# cd oinkmaster-2.0

# ls -> oinkmaster.pl파일이 제일 중요

# cp oinkmaster.pl /usr/local/bin

# cp oinkmaster.conf /etc/snort

# cd contrib

 

makesindex.pl -> 이미다운받은것을 제외하고 받을수 있게하는 스크립트 파일

 

# makesindex.pl /etc/snort/rules/ > autodisables.conf

# cp autodisables.conf /etc/snort

# cd /etc/snort

 

http://snort.org ->로그인후 맨밑에 코드 복사

 

# vi oinkmaster.conf  

# Example for Snort 2.4

url = http://www.snort.org/pub-bin/oinkmaster.cgi/<oinkcode>/snortrules-snapshot-2.4.tar.gz

->url = http://www.snort.org/pub-bin/oinkmaster.cgi/<코드붙여넣기>/snortrules-snapshot-2.4.tar.gz

# groupadd snort

# useradd -g snort -s /sbin/nologin snort

# cd .. -> pwd => /etc

# chown -R snort.snort snort/ -> snort디렉토리 아래의 것을 소유자snort소유권snort로 변경

# oinkmaster.pl -C /etc/snort/oinkmaster.conf -C /etc/snort/autodisables.conf -o /etc/snort/rules/

# vi /etc/snort/oinkmaster.conf  아까거 지우고

Example for Snort-current

url = http://www.snort.org/pub-bin/oinkmaster.cgi/<oinkcode>/snortrules-snapshot-2.4.tar.gz->

url=http://www.snort.org/pub-bin/oinkmaster.cgi/<코드붙여넣기>/snortrules-snapshot-CURRENT.tar.gz 로 수정

 

크론탭을 이용하여 주기적 자동 업데이트 하기

 

# vi /etc/crontab -

37 12 * * * root /usr/local/bin/oinkmaster.pl -C /etc/snort/oinkmaster.conf -C /etc/snort/autodisables.conf

 -o /etc/snort/rules/

# service crond restart

 

* 만약 base 웹 및 DB가 다른 서버에 설치되어 있다면 /etc/snort/snort.conf 등 여러가지 설  정을 변경해 주어야 한다.


  

Comments