Splunk에서 로그를 내보내 보안 분석하는 방법

Splunk에서 로그를 내보내 보안 분석하는 방법

SOC Prime Team
SOC Prime Team linkedin icon 팔로우

짧은 답변: 검색을 실행하고, 클릭하세요 내보내기 검색 바 아래의 작업 도구 모음에서, 그리고 선택하세요 원시 이벤트, CSV or JSON. 몇 천 개의 이벤트는 그것만으로 충분합니다. 더 큰 양의 이벤트를 추출하려면 브라우저를 건너뛰고 Splunk 검색 CLI나 REST 내보내기 엔드포인트를 사용하세요. 둘 다 결과를 스트리밍하므로 Splunk 웹에서 하나의 거대한 파일을 만들지 않습니다.

데이터가 이미 인덱싱된 상태에서도 Splunk에서 내보내는 이유는 무엇입니까? 보통은 Splunk 외부의 누군가가 데이터를 봐야 하기 때문입니다: IR 파트너, 다른 팀의 동료, 또는 SPL을 작성하지 않고 한 시간 동안 노트북에서 작업해야 할 때 당신 자신. Prime Core는 Splunk에 대해 23,674개의 탐지 규칙을 보유하고 있으며, 676개의 MITRE ATT&CK 기술에 매핑되어 있습니다. 데이터를 내보내고 나면 작은 데이터 조각에 대한 많은 탐지 논리를 실행할 수 있습니다. 아래는 그 조각을 얻고, 정제하며, LogTotal에서 무료로 조사하는 방법입니다.

무료로 시작하기

요약

경로사용할 때필요한 것
Splunk Web → 내보내기일회성, 작은 내보내기, 이미 검색이 열려 있음인덱스에 대한 검색 접근
splunk 검색 CLISplunk Enterprise 검색 헤드에서 셸이 있음OS 접근 + Splunk 자격 증명
REST 검색/작업/내보내기대형 내보내기, 스크립팅 또는 Splunk Cloud관리 포트(8089) 접근 + 토큰

시작하기 전에

세 가지가 어떤 경로가 당신에게 적합한지 결정합니다: Splunk가 실행되는 위치, 역할이 검색할 수 있는 것, 그리고 데이터를 가져갈 수 있는지 여부.

  • 인덱스 접근. 역할이 검색할 수 있는 것만 내보낼 수 있습니다. 검색이 빈 결과를 반환했지만 데이터가 있다는 것을 알고 있다면, SPL을 다시 작성하기 전에 역할의 허용된 인덱스를 확인하세요. 검색에 index=를 명시적으로 넣으세요; 기본 인덱스에 의존하지 마세요.
  • Splunk Cloud vs. Enterprise. Splunk Cloud Platform에서는 셸이 없으므로 CLI 경로를 사용할 수 없습니다. REST API도 기본적으로 제공되지 않으므로 누군가가 스택에 대한 접근을 요청해야 하고, 무료 평가판에서는 사용할 수 없습니다. Splunk 웹 내보내기는 어디서나 작동합니다.
  • 내보낼 권한. 원시 로그에는 사용자 이름, 호스트 이름, 내부 IP가 포함되며, 때때로 URL에 토큰도 포함됩니다. LogTotal은 분석 전에 업로드를 정제하지만, 회사의 데이터 처리 정책은 여전히 적용됩니다. 확인을 받으세요. 5분 걸리며, 사건이 될 경우에는 서면으로 필요할 것입니다.

아래 명령은 2026년 10월에 확인된 Splunk Enterprise 및 Splunk Cloud Platform에 대한 Splunk의 최신 문서를 따릅니다. 사용한 모든 페이지의 링크는 끝에 있습니다.

1단계: 아무 것도 내보내기 전에 검색 범위 설정

가장 흔한 실수는 ‘혹시 몰라서’ 전체 인덱스를 내보내는 것입니다. 아무도 열고 싶지 않은 파일을 만들게 됩니다. 무엇을 해결하려는 질문인지 결정하고, 인덱스, 소스타입, 호스트, 시간을 고정하세요:

index=linux sourcetype=linux_secure host=web-03 earliest=-24h@h latest=@h

XML 모드로 Splunk 추가 기능을 사용하여 수집한 Windows 보안 이벤트:

index=wineventlog source="XmlWinEventLog:Security" host=dc-01 earliest=-24h@h latest=@h

유용한 내보내기를 유지하는 두 가지 규칙.

유지 _raw. 검색이 통계, 테이블 또는 차트로 끝나면 요약이 내보내지는 것이지 로그가 아닙니다. Splunk 웹은 원시 이벤트 형식을 회색으로 표시할 것입니다. 결과가 아닌 이벤트를 내보내세요. JSON으로 내보낼 경우 파일 크기가 세 배로 늘지 않도록 추출된 필드들을 다듬으세요:

... | 필드 _time host source sourcetype _raw

절대 시간을 사용하세요, 언제 필요한지. earliest=-24h는 매분 다르게 해석됩니다. Splunk가 내보내는 동안 검색을 다시 실행해야 한다면(아래에서 더 설명) 상대적 창은 약간 다른 집합의 이벤트를 반환할 수 있습니다. 사건 관련 사항일 경우, 정확한 타임스탬프를 사용하세요.

Windows 데이터에 대해 알아야 할 한 가지: Splunk는 원본 .evtx 파일을 유지하지 않습니다. 렌더링된 이벤트 텍스트를 인덱싱하며, XML 또는 고전적인 key=value 형식입니다. 따라서 내보내는 것은 텍스트이며, 바이너리 EVTX가 아닙니다.

2a 단계: Splunk 웹에서 내보내기

검색이 이미 화면에 있는 경우 작은, 일회성 내보내기에 적합합니다.

  1. 검색을 실행하고 작업이 끝날 때까지 기다리세요. 실행 중인 작업을 내보내면 불완전한 그림만 얻습니다.
  2. 클릭하세요 내보내기 (검색 바 아래의 작업 행에서 다운로드 화살표).
  3. 형식을 선택하세요. 원시 이벤트 는 인덱스된 대로의 원본 로그 줄을 그대로 제공합니다. linux_secure 같은 syslog 스타일의 소스에는 이것이 필요합니다. JSON 는 각 이벤트 옆에 호스트, 소스, 소스타입을 유지합니다. 여러 호스트에 걸쳐 내보내기를 할 때 도움이 됩니다.
  4. 파일 이름을 다음 주에도 인식할 수 있도록 지정하세요, 예를 들어 web-03_sshd_2026-10-19.log.
  5. 남겨두기 결과 수 검색 반환되는 모든 항목을 내보내려면 비워 두세요. 500을 입력하면 처음 500개만 받으며 더 많은 것이 있을 경우 아무 것도 알 수 없습니다.
  6. 클릭하세요 내보내기.

사람들을 혼란스럽게 하는 세부 사항: 내보내기는 브라우저에서 보는 것이 아니라 검색 작업 아티팩트에서 작동합니다. Splunk가 작업과 함께 모든 결과를 유지하지 않았다면 대화 상자는 검색이 먼저 다시 실행될 것이라고 경고합니다. 일반적인 행동입니다. 단지 시간이 더 걸리며, 1단계의 절대 시간 범위가 중요한 이유입니다. 매우 긴 내보내기는 또한 Splunk 웹 세션 시간 초과에 도달할 수 있습니다. 내보내기가 몇 분간 지속된다면 CLI나 REST로 전환하세요.

2b 단계: Splunk CLI로 내보내기 (Enterprise 전용)

검색 헤드에서 셸이 있는 경우 가장 빠른 경로이자 스크립트로 작성하기 가장 쉽습니다. 먼저 로그인하세요, 그렇지 않으면 -auth를 사용하는 방식으로 패스워드가 셸 히스토리에 남게 됩니다:

$SPLUNK_HOME/bin/splunk login

$SPLUNK_HOME/bin/splunk search
  'index=linux sourcetype=linux_secure host=web-03 earliest="10/19/2026:00:00:00" latest="10/20/2026:00:00:00"'
  -preview 0 -maxout 0 -output rawdata > web-03_sshd.log

각 플래그가 하는 일:

  • -maxout 0은 상한을 제거합니다. 기본적으로 CLI는 100 이벤트 을 내보내고 조용히 멈춥니다. 파일에 정확히 100줄이 있다면, 이것 때문이며 조용한 호스트 때문이 아닙니다.
  • -preview 0은 미리 보기 결과를 파일에서 제외합니다.
  • -output rawdata는 원본 줄을 씁니다. 메타데이터를 가진 구조화된 이벤트를 원한다면 -output json을 사용하세요.

또한 관리 포트가 도달할 수 있는 한 -uri https://:8089로 원격 검색 헤드를 대상으로 CLI를 실행할 수 있습니다.

업로드 전에 간단한 두 가지 검토:

wc -l web-03_sshd.log
head -3 web-03_sshd.log

linux_secure 같은 단일 줄 소스의 경우, 줄 수는 Splunk 웹에 같은 검색에 대해 표시된 이벤트 수와 대략 일치해야 합니다. 첫째 줄은 로그 줄처럼 보여야 하며 오류 메시지가 아니어야 합니다.

2c 단계: REST API를 통해 결과 스트리밍

이는 대형 내보내기, 예약된 일정 및 Splunk Cloud를 위한 경로입니다 (스택에 대한 REST 접근이 활성화된 후). 내보내기 엔드포인트는 검색이 실행되는 동안 결과를 스트리밍하므로 폴링할 작업이 없고, 결과 페이지를 통과할 필요도 없습니다.

사용자 이름과 암호 대신 인증 토큰을 사용하세요. 관리자가 토큰 인증을 켜 둔 경우 설정 → 토큰에서 하나를 생성하세요.

export SPLUNK_TOKEN=''

curl -sS
  -H "Authorization: Bearer $SPLUNK_TOKEN"
  https://sh01.example.com:8089/services/search/v2/jobs/export
  --data-urlencode search='search index=linux sourcetype=linux_secure host=web-03'
  -d earliest_time='2026-10-19T00:00:00.000+00:00'
  -d latest_time='2026-10-20T00:00:00.000+00:00'
  -d output_mode=raw
  -o web-03_sshd.log

사람들이 빠지는 함정:

  • 검색 문자열은 search(또는 | tstats 같은 생성 명령어)로 시작해야 합니다. 그것 없이 쿼리를 붙여넣으면 Splunk는 이를 거부합니다.
  • output_mode=raw는 원본 줄을 제공하며, 가장 빠른 모드입니다. output_mode=json은 결과 키 아래의 이벤트와 함께 JSON 객체를 한 줄씩 스트리밍합니다. 이벤트 자체만 원한다면 jq로 봉투를 제거하세요: jq -c ‘select(.result) | .result’ export.json > events.ndjson. LogTotal 업로드의 경우, 원시 모드를 유지하세요.
  • 랩 인스턴스는 종종 자가 서명 인증서를 사용하고, 모든 Stack Overflow 답변은 -k를 추가하라고 할 것입니다. 프로덕션에서는 curl을 CA에 –cacert 표기를 추가하여 양호한 인증서로 지정하세요.
  • search/v2/jobs로 POST하고 /results에서 읽을 경우, 서버는 요청당 행 수를 제한하며, 오프셋으로 페이지를 지정해야 합니다. 그러나 export는 그렇지 않아서 여기서 사용하는 이유입니다.

3단계: LogTotal에 업로드, 정제 및 리뷰

LogTotal은 설정 없이 로그 파일에 대한 탐지 논리를 실행할 수 있는 SOC Prime의 무료 서비스입니다. 업로드한 것을 정제하고 파일을 보존하지 않습니다.

  1. 업로드. 열기 logtotal.com 그리고 2단계에서 만든 파일을 드래그하고 놓으세요.
  2. 정제. 계속하기 전에 검토하세요. 마스킹 규칙보다 자신의 환경을 더 잘 알고 있습니다.
  3. 리뷰. 

내보내기가 잘못되었을 때

증상가능한 원인Fix
CLI 파일에 정확히 100 이벤트가 있음기본 -maxout은 100-maxout 0을 추가하세요
내보내기 대화상자에서 원시 이벤트가 회색으로 표시됨검색이 변환 명령으로 끝남(통계, 테이블, 차트)이벤트 내보내기를 선택하거나 JSON을 선택하세요
검색이 아무것도 반환하지 않는데 데이터가 존재함인덱스가 역할의 허용된 인덱스 또는 기본 인덱스에 없거나, 잘못된 시간 범위index=를 명시적으로 추가하세요; 역할에 대해 관리자에게 문의하세요
대화상자가 검색이 재실행될 것이라고 말함작업 아티팩트가 모든 결과를 유지하지 않음기대되는 행동; 절대 시간 범위를 사용하여 재실행이 같은 이벤트를 반환하게 하세요
브라우저 내보내기가 멈추거나 파일이 잘림긴 내보내기에서 Splunk 웹 세션 시간 초과CLI 또는 REST로 전환하세요
curl에서 401 권한 없음토큰이 만료됐거나 비활성화됐거나 토큰 인증이 꺼짐설정 → 토큰에서 새 토큰을 생성하세요
curl이 8089에서 연결 거부되거나 멈춤관리 포트가 차단되어 있거나, Splunk Cloud에서 REST가 활성화되지 않음방화벽 규칙을 확인하세요; Cloud 스택에 대해 REST 접근을 요청하세요
REST에서 검색 구문 오류 반환쿼리가 search로 시작하지 않음search로 접두사 붙이세요
JSON 파일이 예상보다 훨씬 큼모든 추출된 필드가 내보내짐| fields _time host source sourcetype _raw를 추가하세요

FAQ

Splunk Cloud에서 로그를 내보낼 수 있나요?

네. Splunk 웹 내보내기는 Enterprise와 동일하게 작동합니다. REST 내보내기 엔드포인트는 스택에 대한 API 접근이 활성화된 후 작동합니다; 무료 평가판에서는 사용할 수 없습니다. CLI는 옵션이 아닙니다, Splunk Cloud에는 셸이 없습니다.

Splunk에서 원본 EVTX 파일을 다시 꺼낼 수 있나요?

아니요. Splunk는 바이너리 .evtx가 아니라 렌더링된 이벤트 텍스트를 저장합니다. 원시 이벤트나 JSON으로 텍스트를 내보낼 수 있습니다. 실제 EVTX 파일의 경우, Windows 호스트 자체에서 내보내세요.

원시 이벤트 또는 JSON: LogTotal에는 무엇을 선택해야 하나요?

원시. 호스트에 있는 줄과 동일한 줄을 얻을 수 있으며, LogTotal은 syslog 형식의 파일을 그대로 읽습니다. JSON은 각 이벤트를 Splunk의 구조로 감싸며, 매 이벤트 옆에 호스트와 소스타입이 필요할 때 유용하지만, LogTotal 업로드의 경우, 원시 모드가 안전한 선택입니다.

Splunk 내보내기를 온라인 도구에 업로드하는 것이 안전한가요?

LogTotal은 분석 전에 업로드를 정제하며, 파일을 보관하지 않습니다.

얼마나 많은 이벤트를 내보낼 수 있나요?

Splunk 측에서는 원하는 만큼 가능합니다: Splunk 웹에서 결과 수를 비워 두거나 CLI에서 -maxout 0을 설정하세요. 실제로는 다른 쪽의 업로드 크기 한도가 있습니다. 따라서 1단계에서 검색 범위를 적절히 설정하는 것이 유리합니다.

SOC Prime의 Detection as Code 플랫폼에 가입하세요 귀사의 비즈니스에 가장 중요한 위협에 대한 가시성을 개선하세요. 시작을 돕고 즉각적인 가치를 제공하기 위해 지금 SOC Prime 전문가와의 회의를 예약하세요.