728x90
SPL?
: 검색 처리 언어로 데이터 세트에서 원하는 결과를 얻기 위해 작성된 많은 함수, 명령, 인수 등을 포함하는 언어다.
즉, 구체적으로 검색하고 싶을 때 사용하는 필터링 언어.
ex)
host="mailsecure_log" | head 3
=> head 명령으로 상위 3개 결과만 검색
파이프라인["|"] : 리눅스와 동일한 개념
명령어
- top <ㅡ> rare
: 필드명 기준으로 가장 데이터가 많은 값 10개 표시
index="sales_system" sourcetype="access_combined_wcookie" | top clientip
- stats
필드명과 function을 기준으로 통계 작성. [함수 종류 : count, sum, avg...] 등..
index="sales_system" sourcetype="access_combined_wcookie" | stats count by clientip
index="sales_system" sourcetype="access_combined_wcookie" | stats dc(status)
=> 중복을 제거한 status 개수
index="sales_system" sourcetype="access_combined_wcookie" | stats sum(bytes) by clientip | sort - sum(bytes)
=> clientip별 bytes를 더해서 통신량을 확인
index="sales_system" sourcetype="access_combined_wcookie" | stats count, list(uri), list(status) by clientip | sort - count limit=10
=> 에러코드가 400번대인 데이터의 개수, 파일(사용자가 접속한 uri) 등을 clienip기준 상위 10개 출력
- table명령
필드명을 기준으로 데이터를 테이블 형태로 출력
index=test_01 sourcetype="access_combined_wcookie" | table status, uri
- rename
필드명을 사용자가 이해하기 쉬운 형태로 변환(변경 전 필드명 재사용x)
index=test_01 sourcetype="access_combined_wcookie" | table clientip | rename clientip as "user ip"
=> 필드명을 clientip에서 user ip로 변경
- fields
특정 필드를 빼거나 넣는 명령
Fields + 필드식별이 되기 전 동작하며 검색성능에 영향있음
Fields - 필드 식별 이후 동작하며 검색 성능에 영향없음
- dedup
필드명을 기준으로 중복 제거
- sort
필드명을 기준으로 정렬(+는 오름차순, -는 내림차순)
index=test_01 sourcetype="access_combined_wcookie" | table clientip | dedup clientip | sort clientip
실습
f1data[access.log, linux_secure, db_audit]
- 3개 로그 각각의 필드 확인
index="sales_system"
- 에러없이 정상 통신된 웹 서버 로그 조회
index="sales_system" sourcetype="access_combined_wcookie" status=200
- 상기 조회 결과에 대해 호출된 파일명 및 파일별 호출 빈도 확인
- 웹서버 로그 중 물품 구매 기록만 조회
index="sales_system" sourcetype="access_combined_wcookie" status=200 file="success.do"
- 상기 구매기록 중, aciton, JSESSIONID, status 필드만 표시
index="sales_system" sourcetype="access_combined_wcookie" | table action, JSESSIONID, status
- JSESSIONID가 가장 먼저 표시되도록 변경
index="sales_system" sourcetype="access_combined_wcookie" | table JSESSIONID, action, status
- JSESSIONID 필드명을 UserSessions으로 변경
index="sales_system" sourcetype="access_combined_wcookie" | table JSESSIONID, action, status | rename JESSIONID as UserSessions
- UserSession을 기준으로 정렬 - sort
index="sales_system" sourcetype="access_combined_wcookie" | table JSESSIONID, action, status | rename JSESSIONID as UserSessions | sort = UserSessions
- UserSessions 값의 중복을 제거하여 출력 - dedup
index="sales_system" sourcetype="access_combined_wcookie" | table JSESSIONID, action, status | rename JSESSIONID as UserSessions | sort = UserSessions | dedup UserSessions
- 화면에 action, status를 제거하고 UserSessions만 출력 - fields
index="sales_system" sourcetype="access_combined_wcookie" | table JSESSIONID, action, status | rename JSESSIONID as UserSessions | sort = UserSessions | dedup UserSessions | fields - action, status
- 사용자들이 가장 많이 구매한 제품 목록 상위 5개 출력
index="sales_system" sourcetype="access_combined_wcookie" status=200 | stats count by clientip | sort - count limit=5
- 정상적으로 통신된 모든 웹 로그 조회
index="sales_system" sourcetype="access_combined_wcookie" status=200 | stats count by file
- 호출 빈도가 가장 낮았던 파일 출력
index="sales_system" sourcetype="access_combined_wcookie" status=200 | stats count by file | sort count
- 검색 결과를 월별로 분할하여 출력
index="sales_system" sourcetype="access_combined_wcookie" status=200 | stats count by file, date_month | sort count
=> 월에 해당하는 필드 찾아 넣기
- 구매되었거나 장바구니에 물건을 넣은 웹 로그를 추출
index="sales_system" sourcetype="access_combined_wcookie" status=200 (file=sucess.do OR file=cart.do) | stats count by file
참고
https://www.tutorialspoint.com/splunk/splunk_search_language.htm
'교육 및 자격증 > 빅데이터 기반 보안로그분석[splunk]' 카테고리의 다른 글
EDR 구축 (osquery설치, sysmon 설치) (0) | 2023.10.04 |
---|---|
웹 해킹 로그 분석(sql, 파일 다운로드/업로드 ..) (0) | 2023.10.04 |
splunk 데이터 인덱싱 및 로그 분석[palo alto, v3] (0) | 2023.09.30 |
splunk 설치 (0) | 2023.09.30 |
빅데이터 기반 보안 로그 분석 (0) | 2023.09.30 |