jyamethyst21 님의 블로그
생성형AI를 활용한 AI 보안관제 및 통합로그분석 본문
Splunk(스플렁크)
로그를 수집-저장-검색-분석-시각화까지 하나의 파이프라인으로 처리할 수 있는 플랫폼
4가지 핵심 기능
| 컴포넌트 | 역할 |
| 인덱서 | 데이터 저장(인덱싱) 및 가공 |
| 포워더 | 데이터 수집, 전송 및 가공 |
| 검색 헤드 | 검색 관리 |
| 마스터 | 클러스터 관리 |
배포 구조
1) 단독 노드: 검색 헤드, 인덱서, 포워더가 하나의 서버에 모두 올라감, 테스트나 소규모 환경에 적합
2) 클러스터: 노드 1개가 마스터와 검색 헤드 역할을 맡고, 나머지 노드가 인덱서와 포워더로 동작
데이터가 저장되는 방식
Hot 버킷
- 데이터 읽기·쓰기 모두 가능한 현재 활성 버킷
- 아래 조건 중 하나라도 충족되면 Warm으로 이동
- 서비스 재시작
- maxDataSize 초과 (기본값: 750MB)
- maxHotBuckets 초과 (기본값: 3개)
- maxHotSpanSecs 초과 (기본값: 90일)
Warm 버킷
- 읽기만 가능한 상태
- 아래 조건 충족 시 Cold로 이동
- maxHotSpanSecs 초과 (기본값: 90일)
- maxWarmDBCount 초과 (기본값: 300개)
Cold 버킷
- 읽기만 가능, 접근 빈도가 낮은 오래된 데이터
- 아래 조건 충족 시 Frozen으로 이동(사실상 삭제)
- maxTotalDataSizeMB 초과 (기본값: 500GB)
- frozenTimePeriodInSecs 초과 (기본값: 6년)
데이터 연동 방법
1. 파일 업로드: 수동으로 파일을 업로드하는 방식, 일회성 분석에 사용
2. 실시간 모니터: 인덱서 자체에서 특정 파일 경로를 실시간으로 감시, 아래 명령으로 설정
splunk add monitor -source 파일경로 -index 인덱스명 -sourcetype 소스타입명
3. 포워더 연동: 에이전트(포워더)를 배포하여 원격 서버에서 데이터를 수집하는 방식, 실제 운영 환경에서 가장 많이 쓰이며 포워더의 데이터 수신 서버 지정과 수신 포트 활성화는 다음과 같이 설정
# 포워더에서 수신 서버 지정
splunk add forward-server 서버IP:9997
# 인덱서에서 수신 포트 활성화
splunk enable listen 9997
SPL(Search Processing Language)
SPL은 UNIX 파이프라인과 SQL의 개념을 결합한 스플렁크 전용 쿼리 언어, 파이프로 명령을 연결하여 검색, 가공, 집계, 시각화로 이어지는 분석 흐름을 만들음
검색(search)
- 검색창에 처음 입력하는 구문은 search 명령 없이도 자동으로 search 구문으로 인식
- 필드="값" 구조로 검색하며, AND, OR, NOT, IN 연산자를 조합
- 인용부호를 생략해도 필드="값" 구조로 인식 (단, 타 명령어는 인용부호가 있어야만 인식)
- 필드를 지정하지 않으면 전체 원본 데이터가 저장된 _raw 필드가 자동 지정
- 연산자를 생략하면 AND 연산자가 자동 적용
- 필드명과 연산자는 대소문자를 구분하지만, 검색어 자체는 구분하지 않음
- 와일드카드(*) 사용이 가능
index=apache_sample
| rename uri_path as url
위 예시는 apache_sample 인덱스에서 데이터를 검색한 후, uri_path 필드명을 url로 변경하는 쿼리
가공(eval)
eval 명령은 기존 필드를 조합하거나 새 필드를 생성할 때 사용, 문자열 연결, 숫자 연산, replace, split 등 다양한 함수를 지원
반복적으로 쓰는 eval 표현식은 웹 UI에서 설정 > 필드 > 계산된 필드 메뉴를 통해 저장해 재사용 가능
index=apache_sample
| eval newfield=method."-".status
method 필드와 status 필드를 -로 연결한 새 필드 newfield를 생성하는 예시
통계(stats, chart, timechart)
집계 명령어는 세 가지가 주로 쓰임
stats: 단순 집계, by 절로 그룹핑 기준을 지정
index=apache_sample
| stats count by method
결과: GET 요청 298,479건, HEAD 1,379건, POST 103건 등으로 HTTP 메서드별 요청 수를 집계
index=apache_sample
| stats count by method, status
두 개 이상의 필드를 기준으로 그룹핑할 때는 by 뒤에 나열
chart: 특정 축을 기준으로 피벗 형태의 집계 결과를 만든다. span 옵션으로 시간 단위를 지정할 수 있음
index=apache_sample
| chart count by _time span=1d
timechart: 시간 축을 자동으로 처리하는 시계열 집계 명령, bin _time으로 시간을 먼저 버킷화한 후 stats로 집계하는 방식과 결과가 동일하지만, timechart가 더 간결
index=apache_sample
| timechart count
보안관제 관점에서 timechart는 특정 이벤트의 발생 추이를 시각화하여 이상 징후를 탐지할 때 핵심적으로 쓰임
'보안 & IT 지식 🌺' 카테고리의 다른 글
| 개인정보 영향평가 수행안내서 part2(영향평가 수행절차) (1) | 2026.04.11 |
|---|---|
| 생성형 AI를 활용한 AI 보안관제 및 통합로그분석(Splunk 명령어 정리) (0) | 2026.04.10 |
| 생성형AI를 활용한 AI 보안관제 및 통합로그분석 (0) | 2026.04.07 |
| 생성형AI를 활용한 AI 보안관제 및 통합로그분석 (0) | 2026.04.06 |
| 생성형AI를 활용한 악성코드 분석 및 대응 (0) | 2026.04.01 |
