스노트 사이트는 : http://www.snort.org

http://www.onurmark.co.kr/107 
참조: http://blog.naver.com/nonce4?redirect=l ··· 28166905 
참조: http://dan.drydog.com/apache2php.html 

작성일시: 2008년 2월 1일
작성자   : 박재영(jypark@secuwiz.net)

Snort는 네트워크 침입탐지 프로그램으로 libpcap 라이브러리를 사용하여 네트워크 패킷을 검사하여 불법적인 네트워크 접근이나 스니핑, 스캔 등등 네트워크 공격을 탐지하는 툴이다. 전세계적으로 가장 많이 사용되는 IDS로써 사실표준(De facto)이다. (자세한 정보: http://www.snort.org/ )

네트워크 구성
사용자 삽입 이미지
 

네트워크 구성도

위와 같이 DMZ 구역에 설치 할 예정이며 외부에서 들어온 패킷들 중 방화벽을 통과한 트래픽에 대하여 침입탐지를 수행하게 된다.

필요한 라이브러리
libpcap(패킷 캡춰 라이브러리) 다운로드: http://www.tcpdump.org 
pcre(Perl 호환 정규식 라이브러리) 다운로드: http://www.pcre.org  

어플리케이션
Snort 다운로드: http://www.snort.org  
Snortrules 다운로드: http://www.snort.org 
Apache 다운로드: http://www.apache.org  
PHP 다운로드: http://www.php.org  
MySQL 다운로드: http://www.mysql.org 
ADODB(php로 작성된 ADO객체): http://sourceforge.net/projects/adodb/ 
BASE 다운로드: http://sourceforge.net/projects/secureideas/ 

동작방식을 간단히 보면 Snort가 libpcap을 사용하여 패킷을 캡춰하고 정규식으로 작성된 룰을 기반으로 pcre를 사용하여 매칭을 한다. 공격으로 판단된 로그는 MySQL DB에 남기게 되고 사용자는 PHP로 작성된 BASE로 접속하여 웹페이지에서 로그를 쉽게 볼 수 있게된다.

1) 라이브러리 설치
libpcap과 pcre설치는 아래와 같은 명령으로 설치 할 수 있다.
/usr/local/src 밑에서 압축을 해제 한 다음 아래와 같이 명령어를 입력한다.
> ./configure
> make && make install

2) 어플리케이션 설치
MySQL 설치는 생략한다. 웹 문서에도 많이 나와 있으며 홈페이지에서도 쉽게 나와 있으므로 참조를 하자.
MySQL 설치: http://www.onurmark.co.kr/4 

Snort를 /usr/local/src에 압축을 해제하고 아래와 같은 명령어를 입력한다. 이때 --with-mysql 옵션은 MySQL이 설치된 디렉토리를 지정한다.(위치가 다를 수 있으니 확인)
> ./configure --with-mysql=/usr/local/mysql --enable-dynamic
> make && make install

snort라는 그룹과 사용자를 등록하고 룰과 로그를 남길 디렉토리를 만든다.
> groupadd snort
> useradd -g snort snort -s /sbin/nologin
>
> mkdir -p /etc/snort/rules
> mkdir /var/log/snort
>
> cp etc/* /etc/snort

snortrules는 /etc/snort에 압축을 해제하면 된다.

MySQL 설정은 다음과 같이한다. 다른 이름으로 줘도 상관없다.
User: snort
PW: snort
DB: snort

사용자 계정과 패스워드를 지정하고 snort라는 DB를 생성하여 사용자가 snort라는 DB에 권한을 가지도록 설정한다. 기본적인 내용이므로 이 문서에는 설명하지 않도록 하겠다.

snort 소스파일에 schems/create_mysql이라는 DB 덤프 파일이 들어 있다. 아래의 명령어로 테이블들을 생성한다.

> mysql -u snort -p snort < create_mysql
Enter password: *****


snort DB를 확인해보면 테이블들이 생성된 것을 확인 할 수 있다.

Apache 와 PHP 설치
아파치를 /usr/local/src에 압축 해제 후 다음 명령어로 설치를 진행하자

> ./configure --prefix=/usr/local/apache \
 --enable-so \
 --enable-cgi \
 --enable-info \
 --enable-rewrite \
 --enable-speling \
 --enable-usertrack \
 --enable-deflate \
 --enable-ssl \
 --enable-mime-magic
> make && make install

빌드 옵션에 대한 내용은 Apache홈페이지의 Document에 자세하게 나와 있으니 참조하자

PHP를 /usr/local/src에 압축 해제 후 아래와 같이 입력하자

> ./configure \
 --with-apxs2=/usr/local/apache/bin/apxs \
 --with-mysql=/usr/local/mysql \
 --prefix=/usr/local/apache/php \
 --with-config-file-path=/usr/local/apache/php \
 --enable-force-cgi-redirect \
 --disable-cgi \
 --with-zlib \
 --with-gettext
> make && make install
> cp -p php.ini.recommended /usr/local/apache/php/php.ini


Apache와 PHP가 설치 되었으면 /usr/local/apache/conf/httpd.conf파일을 아래와 같이 수정한다.

# Make sure there's only **1** line for each of these 2 directives:
# Use for PHP 4.x:
#LoadModule php4_module        modules/libphp4.so
#AddHandler php-script   php

# Use for PHP 5.x:
LoadModule php5_module        modules/libphp5.so
AddHandler php5-script php

# Add index.php to your DirectoryIndex line:
DirectoryIndex index.html index.php

AddType text/html       php

# PHP Syntax Coloring
# (optional but useful for reading PHP source for debugging):
AddType application/x-httpd-php-source phps

ADODB와 BASE를 /usr/local/apache/htdocs에 압축을 해제하면 모든 설치가 완료 되었다.

마지막으로 snort와 BASE의 환경 설정만 남았다. /etc/snort/snort.conf 파일을 자신의 환경에 맞게 설정한 후 다음의 내용을 추가한다.

var RULE_PATH=/etc/snort/rules
output database:log,mysql,user=snort password=snort dbname=snort host=localhost


/usr/local/apache/htdocs/base/base_conf.php.dist 파일을 base_conf.php파일로 복사한 다음 수정한다.

$DBlib_path="/usr/local/apache/htdocs/adodb";
$DBtype="mysql";

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

설정이 완료 된 후 MySQL을 실행하고 Apache를 실행하고 snort를 실행한 후 http://[설치된IP]/base 로 접속하면 다음과 같은 화면이 보일 것이다.

> /usr/local/mysql/bin/mysqld_safe &
> /usr/local/apache/bin/apachectl start
> snort -i eth0 -c /etc/snort/snort.conf -D
-i 옵션은 감시할 NIC카드를 선택하고 -c는 설정파일을 지정하고 -D는 데몬으로 띄우겠다는 옵션이다.

사용자 삽입 이미지


다른 호스트에서 스노트가 설치된 PC로 nmap으로 포트 스캐닝을 수행하고 로그가 남는지 확인해 보자
> nmap -O -sS [snort IP]

자 이제 모든 설치가 완료 되었고 정상적으로 수행하는 것도 확인을 했다. 이제 마지막으로 남은 것은 브릿지 유틸을 사용하여 NIC카드 2개를 브릿지 한다음 snort가 브릿지를 탐지하도록 설정하면 완료가 된다. brctl을 사용하여 브릿지를 구성한 후 snort를 실행할 때 -i [브릿지 이름] 옵션을 주면 된다.

브릿지 설치에 대한 자세한 정보: http://www.onurmark.co.kr/109 

+ Recent posts