반응형

출처: https://peemangit.tistory.com/365

1. 데이터 나열 변환

1) table

필드명과 결합해 검색 결과를 테이블 형식으로 보여준다.

 

 
index="book" sourcetype="access_combiend_wcooke"
 
| table clientipm method, productId, status

 

 

원하는 결과에서 내가 원하는 필드를 테이블 형태로 만들어서 출력할 수 있다.

 

2) rename

필드명을 다른 이름으로 변경한다.

로그에서 필요한 필드명에 의미를 부여하거나 필드에 한글을 쓰고 싶을 경우 사용할 수 있다.

변환하고자 하는 필드명을 띄어쓰기도 포함하고 싶다명 따옴표(")를 붙여주면 된다.

 
index="book" sourcetype="access_combined_wcookie"
 
| table clientip, method, productId, status
 
| rename clientip AS SourceIP, method AS "Get Or Post", productId AS ProductID, status AS "Web Status"

 

 

테이블에 있는 필드명이 기존의 필드명이 아닌 rename을 통해 변경된 이름으로 바뀐것을 확인할 수 있다.

 

3) fields

검색 결과에서 특정 필드를 포함시키거나 제거할 경우 사용한다.

 

 
index=book sourcetype="access_combined_wcookie" status="200"
 
|fields clientip

검색 결과에서 원하는 필드만 추출할 수 있다.

이벤트의 개수는 필드를 적지 않아도 같지만 불필요한 필드를 사용하지 않음으로써 검색 시간을 줄일 수 있다.

 

 

- 옵션을 이용해서 원하는 필드만 제거도 가능하다.

 
index=book sourcetype="access_combined_wcookie" status="200"
 
|fields - clientip

4) dedup

검색결과에서 중복제거를 할 때 사용한다.

지정한 필드의 중복을 제거하면 다른 필드의 값은 중복이 아닌데도 앞의 중복된 결과를 제거하면석 역시 사라지니 주의해야 한다.

 

 
index=book sourcetype="access_combined_wcookie" status="200"
 
| dedup clientip

 

출력된 Client IP가 중복되지 않았음을 확인할 수 있다.

 

5) sort

검색 결과를 정렬한다.

+(default) 옵션은 오름차순이고 -옵션은 내림차순이다.

 
index=book sourcetype="access_combined_wcookie" status="200"
 
| table date_hour, clientip, productId, method, status
 
| sort date_hour, -method

 

테이블을 생성한 후 시간을 오름차순 methiod를 내림차순으로 정렬하였다.

시간은 00시부터, method는 POST방식이 먼저 출력된것을 확인할 수 있다.

 

6) 데이터 나열 변환 명령어 정리

명령어 옵션 설명
table   결과를 테이블 형태로 출력
rename   필드명을 다른 이름으로 재정의
fields +(default) 추가 , - 제거 원하는 필드만 추출, 원하는 필드만 제거
dedup   중복제거
sort +(default) 올림차순 , - 내림차순 검색 결과 정렬

2. 통계 계산

1) stats

각종 통계 함수를 이용해 통계를 계산한다.

stats [count|dc|sum|avg|list|value] by [Field name]

 

stats 옵션 설명
count 개수
dc 중복을 제거한 개수
sum 합계
avg 평균
list 목록
values 중복제거 목록
max 최대 값
median 중간 값
min 최소 값

 

clientip 기준으로 전송한 bytes의 합계, 평균, 최대 값, 중간 값, 최소 값의 통계를 구할 수 있다.

중간 값은 데이터가 홀수개일 경우 (n-n/2) 짝수개일 경우(n/2번째 값 +(n/2) +1번째값)/2 이다

 
index=book sourcetype="access_combined_wcookie"
 
| stats sum(bytes), avg(bytes), max(bytes), median(bytes), min(bytes) by clientip

 

각각의 통계 값의 결과가 출력된것을 확인할 수 있다.

 

 

stats 명령어와 sort 명령어를 이용하여 해당 시간대의 가장 많은 패킷을 보낸 사람을 내림차순으로 확인할 수 있다.

 
index=book sourcetype="access_combined_wcookie"
 
| stats sum(bytes) by clientip
 
| sort -sum(bytes)

 

특정 시간대의 이상징후를 파악할 때 유용하다.

 

2) top

지정한 필드에서 가장 많이 나오는 값을 보여준다.

 

<검색어> | top limit=<숫자> [showperc=T/F] [showcount=T/F] [useother=T/F] Field1, field2, by field
top 옵션 설명 기본 값
limit 반환되는 결과 지정 10
showperc 해당 값이 차지하는 비율 출력 T
showcount 해당 값의 개수 출력 T
userother Top 10 이외의 다른 숫자 확인  

 

 

상태 값이 200인 로그 중 클라이언트 IP가 91.205.189.15를 출력하는데 시간 기준으로 접근한 클라이언트의 Top10을 Count로 표시하지 않고 비율로 표시하는 명령어이다.

 

 
index=book sourcetype="access_combined_wcookie" status="200" clientip="91.205.189.15"
 
| top limit=10 showperc=T showcount=F date_hour by clientip

 

1시, 13시, 17시 순으로 해당 사용자가 많이 접근한것을 확인할 수 있고 각각 접속 비율을 16, 12, 9퍼센트인것을 확인할 수 있다.

 

 

상태 값이 200인 로그 중에 클라이언트 IP가 접근 한 횟수의 Top5를 출력한다.

rename 명령어를 추가로 사용하여 테이블 가독성을 높혔다.

 

 
index=book sourcetype="access_combined_wcookie" status="200"
 
| top limit=5 showcount=T showperc=F clientip
 
| rename clientip AS "출발지 주소", count AS "접근 횟수"

 

접근 횟수의 Top5가 출력된는것을 확인할 수 있다.

 

 

접속 실패를 가장 많이 한 사용자 Top10 출력

 
index=book sourcetype="access_combined_wcookie" status="40*"
 
| top limit=10 clientip

3) rare

top 명령어의 정반대 결과인 빈도가 적은 값의 순서를 보여준다.

필수 프로그램을 설치하지 않은 PC를 확인하거나, 허가받지 않은 프로그램을 찾아내기 유용하다.

 

<검색어> | rare limit=<숫자> [showperc=T/F] [showcount=T/F] [useother=T/F] Field1, field2, by field

 

반응형

'IT기술 관련 > 정보보안 관련' 카테고리의 다른 글

SMTP의 보안 시스템 :: SPF, DKIM, DMARC 란?  (0) 2024.01.16
Splunk stats 함수  (0) 2023.09.13
Splunk - eval 함수  (0) 2023.09.13
Splunk 란?  (0) 2023.09.13

+ Recent posts