본문 바로가기
IT_정보보안/보안관제 프로젝트

19. Snort 환경 구성

by jys275 2024. 3. 24.

이전 글에서는 Snort 이론적 내용을 다루면서 Snort가 어떠한 개념의 소프트웨어인지 알 수 있었다.

 

이번 글에서는 Snort를 직접 사용하기 위해 환경 구성을 실시하는 과정을 다룰 것이다.

Snort는 환경 구성에 있어서 상당히 민감한 편이기 때문에, 수많은 오류가 발생할 수 있다.

 

 


 

 

Snort 환경 구성 - 필요 프로그램 설치

 

 

먼저 Vmware에 두 가지 가상 환경을 추가로 생성하여 

한쪽을 Server, 다른 한쪽을 Client(Victim)로 이름을 명명한 후에, Server 환경에 아래 프로그램을 설치한다.

 

 

Snort

 

버전 3은 리눅스 전용이므로, Snort 2.9.2.3 ver 설치

Snort_2_9_2_3_Installer.exe
3.50MB



Winpcap(https://www.winpcap.org/)

 

윈도우 운영체제에서 패킷을 캡처하기 위한 라이브러리 및 드라이버

 

WinPcap - Home

For many years, WinPcap has been recognized as the industry-standard tool for link-layer network access in Windows environments, allowing applications to capture and transmit network packets bypassing the protocol stack, and including kernel-level packet f

www.winpcap.org



Xampp(https://sourceforge.net/projects/xampp/files/XAMPP%20Windows/1.7.1/)

 

웹 서버, MySQL 데이터베이스, PHP, Perl을 포함한 통합 개발 환경으로,

 

Snort를 이용할 때 탐지된 이벤트를 로그로 저장하거나

웹 인터페이스를 통해 분석하려면 데이터베이스 및 웹 서버가 필요한 이유로 사용한다.

 

XAMPP - Browse /XAMPP Windows/1.7.1 at SourceForge.net

A platform built for a new way of working The Work OS that lets you shape workflows, your way

sourceforge.net

 

 

Base(https://sourceforge.net/projects/secureideas/)

 

Snort의 이벤트 데이터를 웹 인터페이스를 통해 분석 및 표시하기 위한 도구로,

Snort가 탐지한 이벤트를 시각적으로 확인하고 분석하기 위해 사용한다.

 

BASE

Download BASE for free. BASE is the Basic Analysis and Security Engine. It is based on the code from the Analysis Console for Intrusion Databases (ACID) project.

sourceforge.net

 

C:\xampp\htdocs\base 경로에 'base' 이름 파일 생성 후 압축 풀기

 


Adodb(https://sourceforge.net/projects/adodb/)

 

PHP에서 데이터베이스에 대한 추상화 계층을 제공하는 라이브러리로

Snort의 로그 데이터를 데이터베이스에 저장하고 이를 PHP를 사용하여 처리 및 표시가 가능하다.

 

ADOdb

Download ADOdb for free. PHP database abstraction layer. ADOdb is a PHP database class library to provide more powerful abstractions for performing queries and managing databases. ADOdb also hides the differences between the different databases so you can

sourceforge.net

 

C:\xampp\htdocs\adodb5로 adodb5 파일 생성 후 압축 풀기 (최신 버전 오류로 인한 5.20.21 버전 사용)

 


Notepad ++(https://notepad-plus-plus.org/downloads/)

 

텍스트 편집기 및 코드 편집기로서, Snort 규칙 파일을 수정하거나 구성 파일을 편집하는 데 사용한다.

 

Downloads | Notepad++

 

notepad-plus-plus.org

 

 


 

 

Snort 환경 구성 - MySQL 비밀번호 설정

 

 

MySQL 초기 비밀번호 설정을 위해 아래 명령어를 순서대로 입력한다.

1. cd C:\xampp\mysql\bin

경로 이동

 

2. mysql -u root -p mysql

‘Enter password’ 무시 후 엔터 입력

 

3. update user set password = password(’원하는 비밀번호') where user = 'root';

특수문자 사용 주의

4. flush privileges;

권한 테이블 업데이트

5. quit 또는 Ctrl + C

종료

 

 


 

 

Snort 환경 구성 - Snort DB 생성 및 MySQL 스키마 생성

 

 

위의 C:\snort\schema 경로에 존재하는 create_mysql 파일 복사 후,

 

C:\xampp\mysql\bin 경로에 붙여넣는다.

 

위와 같이 cmd 실행 후, 아래 명령어를 순서대로 입력한다.

 

1. cd c:\xampp\mysql\bin

 

2. mysqladmin -u root -p create snort

Snort DB 생성

 

3. mysql -D snort -u root -p < create_mysql

mysql 전용 스키마 적용

 

4. mysql -u root -p  입력 후 비밀번호 입력

mysql 콘솔 로그인

 

5. use snort;

snort DB 접근

 

6. show tables;

snort DB의 테이블 확인을 위한 테이블 출력

 

 


 

 

Snort 환경 구성 – Base 설정

 

 

위의 c:\xampp\htdocs\base\includes 경로에 존재하는 base_action.inc.php 파일을

아래와 같이 Notepad++을 통해 실행한다.

 

위와 같이 29번 및 30번 라인을 주석으로 처리한다.

"http://localhost/base" 웹 사이트에 접속 후 Continue 버튼을 눌러 Base 설정을 시작한다.
위와 같은 화면이 나오면, Path to ADODB에 “C:\xampp\htdocs\adodb5” 입력 후 Continue 버튼을 누른다.

Pick a Database(사용할 DB 설정)에 'MySQL' 입력 후, 사진과 같이 진행하고 Continue 버튼을 누른다.

위와 같은 화면이 나오면 원하는 로그인 정보를 생성한 후 Continue 버튼을 누른다.
"Use Authentication System" 체크박스를 활성화해야 한다.

 

다음에 나오는 화면에서 "Create Base AG" 클릭 시 사전에 한 Table 등록으로 인해서

Status에 "Done Succesfully created user" 표시로 Base 설정이 완료된 것을 확인할 수 있다.

 


 

 

Snort 환경 구성 - Snort.conf 파일 수정

 

 

C:\Snort\etc\ 경로에서 snort.conf 파일을 Notepad++을 통해 열고, 

Ctrl+F 후 ipvar, portvar 두 가지 키워드를 'var'로 모두 바꾸어 준다.

 

리눅스 형식 경로로 설정되어 있는 104~106, 113~114, 247, 250, 253 라인을

모두 윈도우 형식의 경로로 변경해 준다.

 

265 ~ 269 라인은 IDS 모드에서 사용할 수 없으므로 주석 처리를 해준다.

 

510, 511번 라인  또한 윈도우 형식으로 변경 후,

C:\snort\rules 경로에 이름에 맞게 빈 rules 파일을 생성한다.

 

534번 다음 라인에 사진과 같이 두 라인에 DB 정보를

이전에 설정했던 비밀번호 및 사용자 정보를 포함하여 추가로 입력한다.

 

541, 542번 라인은 사진과 같이 수정해 준다.

 

C:\Snort\rules 경로에 사용하고자 하는 rules 파일 생성 후, 553번 줄에 해당 룰 파일로 경로를 수정한다.

필자는 'my_test.rules'로 이름을 지정하였다.

 

 


 

 

Snort IDS TEST

 

 

지금까지 완료된 Snort 설정을 테스트하기 앞서, 만들었던 테스트 용 룰 파일에 사용할 룰을 입력한다.

 

snort.exe 라이브러리 파일 위치로 이동 후 –W 옵션을 통해 네트워크 인터페이스를 확인하고,

“snort.exe -T -c c:\snort\etc\snort.conf -l c:\snort\log -i 1” 명령어를 통한 snort.conf 파일 검증 테스트를 진행한다.

 

위의 사진과 같이 “Snort succesfully validated the configuration!”이라는 메시지가 뜰 경우,

지금까지 해왔던 설정이 올바르게  진행되었다는 의미이다.

 

혹시나 에러가 발생하면 에러 메시지를 참고해서 snort.conf 파일 수정 필요하다.

메시지에는 어느 라인에서 오류가 발생했는지 정보를 알려주므로, 해당 정보를 참고하도록 하자.

 

필자의 경우, 대소문자 구분과 경로 입력 실수로 오류가 발생한 것을 확인할 수 있었다.

 

이후에 “snort.exe -c c:\snort\etc\snort.conf -l c:\snort\log -i 1” 명령어를 통해 snort를 실행한다.
“Commencing packet processing <pid = >”라는 메시지가 발생하면 정상적인 실행이 완료된 것이다.

 

Client (Victim) 가상환경에서 cmd를 통해 Server 가상환경 IP로 Ping을 보내어 탐지 여부를 확인한다.

 

"http://localhost/base" 웹 사이트에서 위와 같이 Source Address와 Dest. Address가

각각 Client 및 Server IP주소인 것과 my_test.rules에서 설정했던 'ICMP_TEST' alert이 발생한 것을 확인할 수 있었다.

 

 


 

 

위 과정으로 Snort 환경 구성 과정이 올바르게 이루어졌다.

 

다음 글에서는 악성코드 샘플 분석을 구성한 Snort 환경 또한 같이 활용하여 진행할 예정이다.