본문 바로가기

교육 및 자격증/빅데이터 기반 보안로그분석[splunk]

splunk 데이터 인덱싱 및 로그 분석[palo alto, v3]

728x90

ex)로그 포맷

 

ex) 웹 로그 분석

199.15.234.66 - - [22/Sep/2023:18:24:31] "GET /cart.do?action=view&itemId=EST-6&productId=SC-MG-G10&JSESSIONID=SD5SL9FF2ADFF4958 HTTP 1.1" 200 3033 "http://www.google.com" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.28) Gecko/20120306 YFF3 Firefox/3.6.28 ( .NET CLR 3.5.30729; .NET4.0C)" 177

 

199.15.234.66 : 클라이언트의 ip주소
- - : 웹 사용자 식별자(Remote User필드)는 클라이언트가 요청한 웹 페이지를 요청한 사용자의 식별자나 사용자 이름을 나타냄. 사용하지 않는 경우 "-"나 "- -"로 표시
[22/Sep/2023:18:24:31]  : 타임 스탬프로 로그가 기록된 시간 
GET : HTTP 요청 메서드
" /cart.do?action=view&itemId=EST-6&productId=SC-MG-G10&JSESSIONID=SD5SL9FF2ADFF4958 HTTP 1.1" :  클라이언트가 요청한 URL
200 : HTTP 응답 상태 코드로 성공적인 응답

3033 : 응답 바이트 크기

 "http://www.google.com" : Referer로 클라이언트가 현재 요청을 하기 전에 방문한 웹 페이지의 URL.즉, 이전 페이지
"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.28) Gecko/20120306 YFF3 Firefox/3.6.28 ( .NET CLR 3.5.30729; .NET4.0C)" : User-Agent로 클라이언트 브라우저 및 운영체제 정보
177 : 클라이언트 요청에 대한 응답으로 전송된 데이터의 바이트 크기

 

splunk 데이터 인덱싱

설정 > 데이터 추가에서 파일 형식의 데이터를 분석할 수 있다.

 파일 업로드하면 splunk에 설치된 환경에 업로드가 된다.

 다음으로 넘어가면 source_type이 알고있는 로그면 자동으로 설정된다.

 다음과 같이 secure.log를 넣었을 때 기본값이면 splunk에서 어떤 로그인지 몰라서 다음과 같이 찾아서 설정해야 한다.

다음으로 넘어가면 호스트와 인덱스 설정이 있다.

호스트는 로그에 해당하는 웹서버  ip값 입력

인덱스는 visualstudio에서 프로젝트를 만드는 것과 비슷하다

이름을 정해주고 나머지 기본으로 하고 다음

검토까지 완료하고 넘어가면 splunk에 저장하는 작업 완료.

검색 시작을 눌러 분석하기

 

메타데이터 설정

데이터가 인덱싱 될 때, 메타데이터가 자동으로 할당된다.

source : 파일 경로

host : 서버 ip

sourcetype : 로그 종류

index : RBMS 이름

 

RDMBS는 스키마에 맞춰 데이터를 넣어 관리가 쉽지만 구조화되지 않은 비정형 데이터는 관리하지 못한다.

반면에 splunk 같은 no sql은 정형, 비정형 데이터가 섞여 데이터 관리가 어려워 tag같은 관리가 필요하다.

여기서 tag는 source, host, sourcetype, index이 4개의 값.

 

다음과 같이 시간, 날짜, 고급 등으로 필터링 할 수 있다

 

index=[아까 만든 인덱스] => 프로젝트에 입력한 모든 로그를 검색하는 명령

필드를 보면 선택한 host, source, sourcetype별로 분석할 수 있고 로그에 있는 필드에 따라 분석할 수 있고 분석 시간을 단축 시킬 수 있다.

메타데이터를 활용하면 여러장비들이 있는 시스템에 외부망1, 외부망2로 구분하여 분석할 수 있다.

 

실습1

paloalto_traffic를 인덱싱

splank가 source_type을 구분하지 못하기 때문에 source type 다른 이름으로 저장 후

 

splunk에서 팔로알토에 관한 정보가 적어 로그를 못읽고 필드도 적어 splunkbase에서 paloalto에 관한 앱을 다운받아 필드를 추가한다[palo alto add-on 검색]

https://splunkbase.splunk.com/

 

다운로드 받은 파일을 왼쪽 상단에 앱 > 앱관리 > 앱 설치로 앱을 splunk에 적용하면 팔로알토 필드들이 증가한 것을 볼 수 있다.

 

실습2

v3_malware

필드가 부족해서 splunkbase에서 찾아보면 방화벽밖에 없다.

=> 새 필드 추출로 직접 추출해야한다.

해당 로그를 클릭하고 다음으로 넘어가면 다음과 같이 정규표현식, 구분자 둘 중 하나를 택할 수 있다.

  • http 로그 중 GET방식의 로그 검색
index=test_01 sourcetype="access_combined_wcookie" method=GET
 => test_01프로젝트이고 sourcetype으로 웹서버 로그를 가져오고 GET 형태를 검색

띄어쓰기를 하면 &로 해석

  • 전송된 웹 접속의 데이터가 500 이상인 로그 검색
index=test_01 sourcetype="access_combined_wcookie" bytes >= 500
  • http 로그 중 응답 코드가 4xx, 5xx 인 로그 검색
index=test_01 sourcetype="access_combined_wcookie" (status=4* OR status=5*)
  • 크롬으로 접속한 사용자 중, 물건을 구매한 사용자 수
index=test_01 sourcetype="access_combined_wcookie" useragent=*chrome* file="success.do"
  • 전체 index 명
index=*
  • Mongodb계정이 메일 서버에서 로그인 실패한 건수
index=test_01 mongodb "Failed password"