jyamethyst21 님의 블로그

생성형 AI를 활용한 AI 보안관제 및 통합로그분석(Splunk 명령어 정리) 본문

보안 & IT 지식 🌺

생성형 AI를 활용한 AI 보안관제 및 통합로그분석(Splunk 명령어 정리)

jyamethyst21 2026. 4. 10. 17:48

Splunk

머신 데이터(로그, 이벤트, 메트릭 등)를 수집, 인덱싱, 분석, 시각화하는 플랫폼으로 서버 로그, 네트워크 트래픽, 애플리케이션 로그 등 거의 모든 형태의 데이터를 실시간으로 검색하고 모니터링할 수 있음

핵심 기능

1) 다양한 소스(파일, 시스템로그, API, DB 등)에서 데이터를 자동으로 수집하고 빠르게 검색 가능한 형태로 인덱싱

2) 실시간 검색 SPL(Search Processing Language)을 사용해 수억 건의 이벤트 중 원하는 데이터를 빠르게 찾아낼 수 있음

3) 대시보드 & 시각화 검색 결과를 차트, 테이블, 지도, 게이지 등 다양한 형태로 시각화하고 대시보드로 구성할 수 있음

4) 알림 특정 조건이 충족되면 이메일, Slack, 웹훅 등으로 자동 알림을 보낼 수 있음

5) 보고서 검색 쿼리를 저장하고 스케줄링해서 정기 보고서를 자동 생성할 수 있음

6) 보안 모니터링|이상 징후 탐지, 위협 헌팅, 보안 이벤트 상관관계 분석 등 보안 운영에 널리 활용됨

주요 기능

데이터 수집 및 인덱싱

Splunk는 다양한 방식으로 데이터를 수집함

  • 파일/디렉토리 모니터링 : 로그 파일이 업데이트될 때 자동으로 읽어들임
  • Forwarder : Universal Forwarder를 서버에 설치해서 로그를 중앙 Splunk로 전송함, 에이전트 방식이라 원격 서버 로그 수집에 많이 씀
  • Syslog : 네트워크 장비, 리눅스 서버 등에서 syslog 프로토콜로 바로 수신할 수 있음
  • HTTP Event Collector(HEC) : REST API 방식으로 애플리케이션에서 직접 이벤트를 전송
  • 스크립트 입력 : 커스텀 스크립트를 주기적으로 실행해서 그 출력값을 수집할 수 있음

DB 연동 (DB Connect)

Splunk DB Connect 앱을 설치하면 DB와 연동할 수 있음

  • Oracle, MySQL, PostgreSQL, MSSQL, DB2 등 JDBC 지원 DB는 대부분 연결 가능함
  • DB 테이블 데이터를 주기적으로 가져와 인덱싱하거나, 검색 시점에 실시간으로 쿼리를 날릴 수 있음
  • SPL 안에서 dbquery 명령어로 SQL을 직접 실행할 수도 있음
  • 예를 들어 로그에 있는 user_id를 DB의 사용자 테이블과 조인해서 이름을 같이 보여주는 식으로 활용함

외부 시스템 연동

REST API 연동 Splunk는 자체적으로 REST API를 완전히 지원함, 외부 시스템에서 Splunk 검색을 실행하거나 결과를 가져오는 게 가능, 반대로 Splunk에서 외부 API를 호출하는 것도 curl 스크립트나 커스텀 명령어로 구현할 수 있음

  • ITSI(IT Service Intelligence) : IT 서비스 상태를 KPI 기반으로 모니터링하는 프리미엄 앱
  • Enterprise Security(ES) : SIEM 특화 앱으로 보안 이벤트 분석, 위협 인텔리전스 연동, 인시던트 관리 등을 지원함

티켓 시스템 연동 Splunk 알림이 발생하면 Jira, ServiceNow, PagerDuty 등으로 자동으로 티켓을 생성하도록 연동할 수 있음

Slack / 이메일 알림 알림 조건이 충족되면 Slack 채널이나 이메일로 자동 발송됨

index=app | dbquery "SELECT name FROM users WHERE id='$user_id$'"

대시보드 & 시각화

  • 드래그앤드롭으로 패널을 배치하고, 검색 쿼리를 연결해서 실시간 대시보드를 만들 수 있음
  • 차트, 테이블, 지도, 게이지, 싱글밸류 등 다양한 시각화 타입을 지원함
  • Dashboard Studio (신버전) : XML 대신 JSON 기반으로 더 유연한 레이아웃과 커스텀 디자인이 가능함
  • 토큰(Token) 기능으로 드롭다운, 입력 폼 등을 만들어 동적으로 필터링되는 대시보드 구성이 가능함

알림 & 스케줄링

  • 검색 쿼리를 저장하고 주기적으로 실행해서 조건에 맞으면 알림을 보냄
  • 실시간 알림 : 이벤트 발생 즉시 트리거
  • 스케줄 알림 : 매 5분, 매 시간, 매일 등 원하는 주기로 실행
  • 알림 액션으로 이메일, Slack, 웹훅, 스크립트 실행, 티켓 생성 등을 설정할 수 있

주요 SPL 명령어

검색 & 필터링

명령어                      설명                                                       예시
search 기본 키워드 검색 search error
index= 특정 인덱스 지정 index=main sourcetype=syslog
host= 특정 호스트 필터링 host=webserver01
source= 특정 소스 파일 지정 source=/var/log/auth.log
where 조건식으로 필터링 where status > 400

데이터 변환

명령어             설명                                                                  예시
stats 통계 계산 (count, avg, sum 등) stats count by host
eval 새 필드 생성 또는 계산 eval size_mb = size / 1024 / 1024
rex 정규식으로 필드 추출 rex field=_raw "user=(?<username>\w+)"
rename 필드 이름 변경 rename src_ip AS 출발지IP
fields 표시할 필드 지정 또는 제외 fields host, status, uri
table 결과를 테이블 형식으로 출력 table _time, host, status

집계 & 분석

명령어                  설명                                                                         예시
timechart 시간대별 통계 시각화 timechart count by status
chart 다차원 통계 차트 chart avg(response_time) by host
top 가장 많이 등장하는 값 상위 출력 top limit=10 uri
rare 가장 적게 등장하는 값 출력 rare src_ip
dedup 중복 이벤트 제거 dedup session_id
sort 결과 정렬 sort -count

시간 관련

명령어                                               설명                                                        예시
earliest= / latest= 검색 시간 범위 지정 earliest=-1h latest=now
bucket 시간을 구간으로 묶음 bucket _time span=5m
now() 현재 시각 반환 eval cur_time = now()

조인 & 서브서치

명령어             설명                                                                                       예시
join 두 검색 결과를 특정 필드로 합침 join user [search index=auth]
append 두 검색 결과를 아래로 이어붙임 append [search index=backup]
lookup 외부 CSV 또는 KV Store와 데이터 매핑 lookup user_info.csv user_id

기타 유용한 명령어

명령어                        설명                                                                                          예시
transaction 관련 이벤트를 하나의 트랜잭션으로 그룹화 transaction session_id
iplocation IP 주소에서 지리 정보 추출 iplocation src_ip
inputlookup 룩업 파일 내용을 직접 검색 inputlookup user_info.csv
outputlookup 검색 결과를 룩업 파일로 저장 outputlookup result.csv
makeresults 테스트용 더미 이벤트 생성 makeresults count=5

쿼리 패턴

에러 로그 상위 10개 URI 뽑기

index=web sourcetype=access_log status>=400
| stats count by uri
| sort -count
| head 10

 

시간대별 에러 추이 보기

index=web error
| timechart span=1h count

 

특정 사용자의 로그인 실패 탐지

index=auth action=login status=fail
| stats count by user
| where count > 5