가상환경 생성

 

snort 환경을 구성할 Server와, 악성코드 행위 분석용  Client(Victim) 각각 가상환경을 구성하였다.

 

 

네트워크 통신을 원활히 하기 위해 방화벽을 해제하였으며,

 

 

 

ipconfig 명령어로 가상환경의 IP 주소를 확인한 뒤,
ping [IP주소] 명령어로 네트워크 연결을 확인하였다.


Snort 환경 구성 준비물

Snort: 네트워크 패킷 분석 및 침입 탐지 도구

WinPcap: 네트워크 패킷 캡처를 위한 라이브러리 및 드라이버

XAMPP: Apache, MySQL, PHP, Perl 등을 포함한 통합 개발 환경

Base: Snort 이벤트 데이터를 웹 인터페이스로 분석 및 표시하는 도구

ADOdb: Snort 로그 데이터를 MySQL로 저장하고 PHP로 처리하기 위한 라이브러리

Notepad++: Snort 규칙 및 구성 파일을 수정할 수 있는 코드 편집기

* (PHP는 웹사이트를 만들 때 서버에서 작동하는 프로그래밍 언어이다.
주로 데이터베이스와 연동해 동적인 웹 페이지를 생성하는 데 사용된다.)

 


Snort 설치

Snort 2.9.2.3 버전을 설치하였다.(3버전은 리눅스 버전이므로 주의!)

SQL과 연계 설치 여부는 추후 데이터베이스 직접 연결을 위해 "I do not plan to log to database" 옵션을 선택하였다.

설치 완료


WinPcap 설치

최신 버전인 WinPcap 4.1.3을 설치하였다.


XAMPP 설치

MySQL과 호환 가능한 버전으로 설치하였다.(최신 버전 설치 했는데 환경구성에서 호환이 안되는 경우가 생겨서 안전하게 1.7.1버전 사용을 추천!)

XAMPP Control Panel에서 Apache, MySQL 등을 통합 관리할 수 있다.

사용할 모듈들을 체크해서 실행 시켜준다.


Base 설치

Base를 설치 후 C:\xampp\htdocs\base 경로에 압축 해제하여 저장하였다.


ADOdb 설치

ADOdb를 C:\xampp\htdocs\adodb 경로에 압축 해제하여 저장하였다.


Notepad++ 설치

Snort 규칙 파일 수정 및 구성 파일 편집을 위해 설치하였다.


MySQL 비밀번호 설정

 

1.MySQL 경로로 이동

cd C:\xampp\mysql\bin
 

2.root 사용자로 접속

mysql -u root -p mysql
 

3.비밀번호 설정

update user set password = password('비밀번호') where user = 'root';
 
4.현재 사용중인 MYSQL캐시를 지우고 새로운 설정을 적용
flush privileges;
 

5.MySQL 종료

quit
 

 


MySQL 스키마 생성

 

스키마 파일 복사

C:\snort\schemas의 create_mysql 파일을 C:\xampp\mysql\bin으로 복사하였다.

 

 

 

Snort DB 생성

mysqladmin -u root -p create snort
 

스키마 적용

mysql -D snort -u root -p < create_mysql
 

테이블 확인

use snort; show tables;

Base 설정

step0

c:\xampp\htdocs\base\includes 경로에 base_action.inc.php 파일을 notepad++를 열어준다.

 

메일 관련 29번, 30번 라인을 주석 처리하였다.

결과를 메일로 알려주는 29번과 30번 라인을 주석처리하여 비활성화
(받을 메일이 없기 때문에 해당 라인이 활성화되면 오류가 발생)

 

웹 인터페이스 설정

http://localhost/base에 접속하여 Snort DB 및 경로 정보를 설정하였다.

(XAMPP에서 Apache와 MySQL을 켜야 접속이 된다.)

 

step1

Pick a Language : 한국어가 없어 여어로 설정

Path to ADODB : adodb5  아까  저장해둔 C:\xampp\htdocs\adodb 경로로 설정

 

step2

Pick a Database type :
MySQL DB를 사용할 것이므로 MySQL 선택

Database Name : snort
이전에 명령프롬프트에서 설정한 DB명 ‘snort’

Database Host : localhost
현재 접속한 host 주소

Database Port :
DB 접속 시 어떤 포트로 접속할 것인지 결정
입력하지 않아도 무방

Database User Name, Password :
MySQL 계정 정보 입력

밑에 Archive Database는 사용하지 않을 것이므로 생략

 

step3

Use Authentication System : 인증 시스템 사용 여부 (체크)

Admin User Name : 로그인할 때 사용할 아이디

Password : 로그인할 때 사용할 비밀번호

Full name : base에서 사용할 닉네임


step4

 

‘Create BASE AG’ 버튼 클릭

 

 

'DONE'
'Successfully created user'
문구가 떴다면 성공적으로 Base 설정 완료

 

 

step5

설정을 모두 완료하고 마지막 단계 Step 5로 넘어가면 로그인 창 생성

Step 3에서 설정한 계정

Login : base_admin

Password : 비밀번호

입력하면 위에 화면이 뜨면 로그인 성공


Snort.conf 파일 설정

 

 

 

불필요한 라인 주석 처리

IDS 모드에서 사용하지 않는 라인을 주석 처리하였다.

rules 파일 작성

C:\snort\rules 경로에 사용 규칙 파일을 생성하였다.

MySQL 연계 설정

 

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

 

변수 설정 변경

ipvar와 portvar를 모두 var로 변경하였다.

var: JavaScript 언어에서 ‘변수’ 설정의 역할 (C언어의 int와 비슷한 역할)

ipvar: IP 주소 또는 IP 주소의 목록/범위를 나타내는 목적으로 사용

portvar: 포트 번호 또는 포트 번호의 목록/범위를 나타내는 목적으로 사용

 

경로 수정

리눅스 초기 경로를 윈도우 경로인 C:\snort\ 경로로 변경하였다.

 

 

247, 250, 253번 라인의 경로도 초기 경로 설정값을 윈도우 경로로 변경 후, C:\snort\lib 경로에 접속해보면 dynamicpreprocessor파일과 dynamicengine 파일은 있지만 dynamicrulese 파일은 없기 때문에 이 파일을 직접 생성

 

265 ~ 269번 라인은 Snort IDS 모드에서는 사용할 수 없기 때문에
맨 앞에 # 을 입력해 주석 처리

 

510, 511번 라인 또한 윈도우 형식으로 변경 ( / → \ ) 후,


cmd를 통해 C:\snort\rules 경로에 해당 이름의 rules 파일 생성

 

 

MySQL연계설정

533, 534번 라인을 참고하여
output database: alert, mysql, user=root password=(비밀번호) dbname=snort host=localhost
output database: log, mysql, user=root password=(비밀번호) dbname=snort host=localhost
위 문장을 535, 536번에 이어서 작성

 

541, 542번 라인도 초기 경로 설정값을 윈도우 경로로 변경
(C:\snort\etc)

553번 라인에 사용할 rules 파일 입력 후, C:\Snort\rules 경로에 사용하고자 하는 rules 파일 생성

 

그 밑의 라인은 사용하지 않을 예정이므로 모두 주석 처리

 

 

sc.rules


Snort IDS 테스트

Snort.conf 검증

 

사용할 rules파일인 sc.rules파일을 열어 테스트 룰을 입력한다.

alert icmp any any -> any any (msg:"ICMP_TEST"; sid:10000001;)

 

이 Snort 규칙은 ICMP 프로토콜을 사용하는 모든 트래픽을 탐지하는 역할을 한다.

출발지와 목적지 IP 및 포트에 제한을 두지 않으며, 탐지된 패킷에 "ICMP_TEST"라는 메시지를 출력하고 고유 식별 번호(sid)로 10000001을 사용한다.

이 규칙은 주로 Ping 요청/응답 같은 ICMP 트래픽을 모니터링할 때 활용된다.

 

 

파일 위치로 이동 -> cd C:\Snort\bin

NIC 번호 확인 명령어를 입력 -> snort.exe –W

NIC 번호는 **네트워크 인터페이스 카드(Network Interface Card)**를 식별하는 번호이다.
한 시스템에 여러 네트워크 인터페이스가 있을 경우 Snort와 같은 도구가 모니터링할 네트워크 인터페이스를 지정하기 위해 사용한다.

 

snort.exe -T -c c:\snort\etc\snort.conf -l c:\snort\log -i 1
: Snort.conf 파일 검증 테스트 진행

‘Snort successfully validated the configuration!’
문구가 확인되면 설정이 잘 진행되었다는 의미

 

‘snort.exe -c c:\snort\etc\snort.conf -l c:\snort\log -i 1’
명령어로 Snort 실행한 화

(-c : snort 설정 파일 위치 지정)
(-l : 로그 파일 저장 위치 지정)
(-i : 모니터링할 NIC 번호 지정)
(NIC : 네트워크 인터페이스 카드)

 

‘Commencing Packet Processing (pid = )’ 문구를 보아 Snort가 정상적으로 실행 완료된 것을 확인

 

 

Server 가상환경의 IP주소를 확인하고, Client(Victim) 가상환경에서 Server 환경으로 ping을 보내 정상적으로 수신하는지 확인

 

 


http://localhost/base 도메인에 접속하면 전 슬라이드에서 보낸 Ping 패킷이 대한 로그가 ICMP 프로토콜 형태로 탐지된 것을 확인할 수 있음.

 

 

이렇게 Snort 환경 설정 완료.

 

 

참고 자료

https://velog.io/@pingu_9/%EB%B3%B4%EC%95%88%EA%B4%80%EC%A0%9C-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B81#25-base-%EC%84%A4%EC%B9%98

https://maker5587.tistory.com/25

https://velog.io/@secloud/17.-Snort-%ED%99%98%EA%B2%BD-%EA%B5%AC%EC%84%B1#xampp-%EC%84%A4%EC%B9%98

 

 

ppt

[19주차]snort 환경 구성.pptx
4.57MB

'Security > 보안관제' 카테고리의 다른 글

SNORT  (2) 2024.11.22
악성코드 샘플 분석2  (0) 2024.11.10
악성코드 샘플 분석  (0) 2024.11.03
정적, 동적 Tool 실습  (4) 2024.10.26
샘플 분석 환경 구성  (4) 2024.10.12

+ Recent posts