17. Snort 환경 구성

SJH·2024년 7월 20일
0

가상환경 생성

Snort 환경을 구성할 Server와, 악성코드 행위 분석용 클라이언트인 Client (Victim) 각각 두 개의 가상환경을 세팅해주었습니다.

Snort 환경 생성 준비물

1. Snort
: 분석의 메인이 되는 도구

2. WinPcap
: 네트워크로 전송되는 패킷을 탐지하기 위한 라이브러리 및 드라이버

3. XAMPP
: Apache Web Server, MySQL, PHP, Perl을 포함한 통합 개발 환경
(시간 단축에 유용)

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

5. ADOdb
: Snort의 로그 데이터를 데이터베이스에 저장하고, 이를 PHP를 사용하여 처리 및 표시가 가능하게 하는 도구
(*PHP:전 세계 수많은 웹 시스템의 기반이 되는 언어)

6. Notepad++
: 텍스트 편집기 및 코드 편집기.
Snort 규칙 파일을 수정하거나 구성 파일을 편집하는 데 사용

Snort 설치

Snort 버전 3는 리눅스 전용 버전이므로,
가장 안정적이며 자체적으로 스키마 파일을 제공해주는 2.9.2.3 버전으로 Snort 설치

중간에 SQL과 연계해서 설치할 것인지 묻는 선택이 나오는데,
추후 데이터베이스와 직접 연결할 계획이므로 “I do not plan to log to database.....” 선택

Snort를 성공적으로 다운로드했으나 “Snort also requires WinPcap...”
WinPcap을 요구하는 것을 볼 수 있음.
주소도 상세하게 나와있으니 홈페이지에 접속해 바로 다운

WinPcap 설치

www.winpcap.org에 접속해 가장 최신버전인 WinPcap 4.1.3 버전 다운

XAMPP 설치

다음은 통합개발환경 도구인 XAMPP를 설치해줄 차례
XAMPP 환경에서 필요한 도구들을 한번에 이용할 수 있으므로 작업 시간 단축에 큰 도움이 됨.
Apache Web Server, MySQL, PHP, Perl 등 필요 도구들 한꺼번에 설치

설치가 끝나면 XAMPP Control Panel에서 사용하려는 도구들을 통합 관리 가능
(신버전 xampp는 MySQL과 호환되지 않고 MariaDB와 호환되기 때문에,
MySQL과 호환되는 xampp 버전으로 다운 받아야함)

Base 설치

Base는 Snort의 이벤트 데이터를 웹 인터페이스를 통해 분석 및 표시하기 위한 도구로, Snort가 탐지한 이벤트를 시각적으로 확인하고 분석하기 위해 사용

C:\xampp\htdocs\base 경로에 압축을 푼 파일을 저장

ADOdb 설치

ADOdb는 PHP에서 데이터베이스에 대한 추상화 계층을 제공하는 라이브러리.
Snort의 로그 데이터를 데이터베이스에 저장하고 이를 PHP를 사용하여 처리 및 표시가 가능하게 도와주는 역할

ADOdb 또한 Base와 마찬가지로 압축을 푼 파일을 C:\xampp\htdocs\adodb 경로로 이동

Notepad++ 설치

Notepad++는 텍스트 편집기 및 코드 편집기로서,
Snort 규칙 파일을 수정하거나 구성 파일을 편집하는 데 사용.
Notepad++를 통해 snort.conf 수정 혹은 snort.rule 생성 가능

Notepad++ 설치 완료 후 화면
메모장과 유사한 모습.

MySQL 비밀번호 설정

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

  1. cd C:\xampp\mysql\bin
    해당 경로로 이동

  2. mysql -u root -p mysql
    MySQL 서버에 root 사용자로 접속

  3. update user set password = password('비밀번호') where user = 'root'; 
    root 사용자로 비밀번호 설정

  4. flush privileges;
    현재 사용중인 MySQL의 캐시를 지우고 새로운 설정을 적용

  5. quit 또는 Ctrl + C
    종료

MySQL 스키마 생성

xampp에 MySQL 스키마 생성을 위해 C:\snort\schemas에 있는 create_mysql 파일을 C:\xmapp\mysql\bin로 복사

파일 복사 후 cmd를 열어 아래 명령어를 순서대로 입력

  1. cd c:\xampp\mysql\bin
    경로 이동

  2. mysqladmin -u root -p create snort
    root계정에 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의 테이블 확인을 위한
    테이블 출력

16개의 테이블이 정상적으로 보인다면, MySQL 스키마 생성 완료

Base 설정

Step 0

c:\xampp\htdocs\base\includes 경로에 base_action.inc.php 파일을 열고,

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

Step 1

Step 0에서 mail 라인 주석처리 후 http://localhost/base에 접속
(XAMPP에서 Apache와 MySQL을 켜야 접속됨)

  • Pick a Language : 한국어가 없기 때문에 영어로 선택
  • Path to ADODB : adodb5 설치 후 이동해주었던 경로인 C:\xampp\htdocs\adodb5 입력

Step 2

  • 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는 사용하지 않을 것이므로 생략

Step 3

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

  • Admin User Name : 로그인할 때 사용할 아이디
  • Password : 로그인할 때 사용할 비밀번호
  • Full name : base에서 사용할 닉네임

Step 4

Step 4까지 넘어왔으면 ‘Create BASE AG’ 버튼 클릭

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

Step 5

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

Step 3에서 설정한 계정

  • Login : base_admin
  • Password : 1234

입력하면 로그인 성공

Snort.conf 파일 설정

C:\Snort\etc 경로에 snort.conf 파일을 notepad++ 로 열고,
ipvar, portvar를 모두 var로 변경

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

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

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

104, 105, 106, 113, 114번 라인의 경로가 모두 리눅스 초기 설정인 ../rules  으로 되어있으므로윈도우 경로인  c:\snort\rules 로 변경

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

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

510, 511번 라인 또한 윈도우 형식으로 변경 ( / → \ ) 후,
C:\snort\rules 경로에 해당 이름의 rules 파일 생성

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 파일 생성

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

Snort IDS TEST

Snort IDS 테스트 중 오류 탐지를 위한 목적으로,
테스트 용도로 생성했던 sjh.rules 파일에서 모든 ICMP 프로토콜을 탐지하도록 룰 수정

cmd 실행 후

  1. cd C:\snort\bin
    : snort.exe 라이브러리 파일 위치로 경로 이동

  2. snort.exe -W
    : Snort의 네트워크 인터페이스 확인

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

(-W : 네트워크 인터페이스 확인)
(-T : 파일 검증 테스트 진행 옵션)

‘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 환경 설정 완료.

profile
보안, 클라우드 공부정리 블로그

0개의 댓글