보안관제 프로젝트를 시작해보려고 합니다.
이번 프로젝트의 목적은 악성코드 행위를 분석하고 Snort를 이용하여 탐지하는 것 입니다.
환경구성 먼저 해보겠습니다.
CONTENTS
1. 가상환경 두개 구성
1.2 네트워크 연결
- Client와 server의 ip주소 확인
- 네트워크 연결 확인
2.1 라이브러리 설치
- Snort를 설치하기 전에 실제 네트워크로 전송되는 패킷을 탐지하기 위해 Pcap 라이브러리가 필요합니다.
2.2 Snort 설치
- 3 버젼은 리눅스 전용이며, 윈도우에서는 2.9.20이 최신 버전임
- 최신버전은 안정적이지 않으며, 오류가 많음
- 2.9.2.3은 안정적이며 자체적으로 스키마 파일을 제공해주는 가장 마지막 버전
2.3 Xampp 설치
- Apache Web Server, MySQL, PHP를 사용할 수 있는 프로그램을 단기간에 빠르게 설치 가능하게함.
- Snort 로그 파일이 2진수 형태로 저장되기에 분석하는데 힘듦으로 Snort를 DB와 연동시켜 좀 더 쉽게 분석하기 위함
- xampp 최신버전은 mariadb를 지원 -> mariadb로 snort 환경 구성 해보려했지만 정보가 많이 없어 mysql인 1.7.1 버전을 선택
2.4 ADOdb 설치
- PHP 데이터베이스 클래스 라이브러리로 데이터베이스 관리를 위한 기능을 제공하는 파일
- 파일 다운로드
- 파일 압축해제
- C:\xampp\htdocs\adodb5 경로에 압축을 푼 파일을 모두 저장
2.5 Base 설치
- Snort 시스템 탐지 로그를 분석하는데 웹 프로트 엔드를 제공해주는 파일
- C:\xampp\htdocs\adodb5 경로에 압축을 푼 파일을 모두 저장
- 그러면 base 프로그램이 adodb5 라이브러리를 이용하여 snort db에 접근한 뒤, 저장된 탐지로그를 불러와서 웹 프론트엔드상에 집계를 해줌
2.6 Notepad++ 설치
- Notepad++가 있어야 snort.conf 수정이라든가 snort.rule 생성등을 할 수가 있음
- 메모장으로 열면 해당 파일이 깨짐
3.1 MySQL 비밀번호 설정
- XAMPP 설치 후 MySQL 초기 비밀번호가 설정이 되어있지 않기 때문에 아래 명령어를 입력해 비밀번호를 설정합니다.
- cd C:\xampp\mysql\bin
- mysql -u root -p mysql
- update user set password = password(’원하는 비밀번호') where user = 'root';
- flush privileges;
- quit 또는 Ctrl + C
3.2 Snort DB 생성 후 MySQL 스키마 생성
- C:\snort\schema 경로에 create_mysql 파일을 C:\xampp\mysql\bin 폴더에 복사
-
cd c:\xampp\mysql\bin
-
mysqladmin -u root -p create snort
-> Snort DB 생성
-
mysql -D snort -u root -p < create_mysql
->mysql 전용 스키마 적용
-
mysql -u root -p 입력 후 비밀번호 입력
->mysql 콘솔 로그인
-
use snort;
->snort DB 접근
-
show tables;
->snort DB의 테이블 출력
3.3 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 버튼을 누른다.
- "Create Base AG" 클릭 시 사전에 한 Table 등록으로 인해서
Status에 "Done Succesfully created user" 표시로 Base 설정이 완료된 것을 확인할 수 있다.
3.4 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 파일을 생성한다.
- 535~536번째 줄에 본인 DB정보를 입력
- 541, 542번 라인은 사진과 같이 수정
- C:\Snort\rules 경로에 사용하고자 하는 rules 파일 생성 후, 554번 줄에 해당 룰 파일로 경로를 수정한다.
- 사용할 룰파일명을 열어서 테스트 룰을 입력
- 파일 위치로 이동 -> cd C:\Snort\bin
- NIC 번호 확인 명령어를 입력 -> snort.exe –W
- Snort.conf 오류 확인
- Snort.exe –T –c c:\snort\etc\snort.conf –l c:\snort\log –i1 입력
- Snort successfully validated... 가 떳다면 성공적으로 구축 완료.
- 위와 같은 화면이 나온다면 정상적으로 작동 된 것
- 다른 가상환경에서 ping을 보내 정상적으로 보내지는지 확인
- 정상적으로 ICMP 패킷이 탐지가 되는 것을 확인