출처: 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
'정보보안 관련 > Splunk' 카테고리의 다른 글
Splunk stats 함수 (0) | 2023.09.13 |
---|---|
Splunk - eval 함수 (0) | 2023.09.13 |
Splunk 란? (0) | 2023.09.13 |