FortiSIEM 로그 내보내기 방법

FortiSIEM 로그 내보내기 방법

SOC Prime Team
SOC Prime Team linkedin icon 팔로우

FortiSIEM의 REST 이벤트 쿼리 API를 사용하세요. /phoenix/rest/query/eventQuery에 XML 쿼리를 게시하면 쿼리 ID가 반환되며, 진행 상황이 100에 도달할 때까지 진행을 확인한 후 이벤트를 가져옵니다. 결과는 XML로 되돌아옵니다. 각 이벤트의 원본 로그 라인은 rawEventMsg 속성에 있으므로 몇 줄의 Python 코드를 사용하여 결과를 원시 로그로 변환할 수 있습니다. 오늘날 LogTotal에서 읽지 않는 형식으로 분석 화면에서의 내보내기 작업이 수행됩니다. 

Fortinet이 네트워크를 운영하는 곳에서는 FortiSIEM이 흔히 사용되며, 방화벽 로그 이상을 보유하는 경우가 많습니다. Prime Core는 664개의 MITRE ATT&CK 기법에 매핑된 19,692개의 FortiSIEM 탐지 규칙을 보유하고 있습니다. 아래는 이벤트를 추출하고, 이를 정리하며, 무료로 LogTotal에서 조사하는 방법입니다.

무료로 시작하기

시작하기 전에

API 사용자. 분석 쿼리를 실행할 수 있는 권한이 있는 계정을 사용하세요. API는 기본 인증으로 인증되며, 사용자 이름에 조직이 포함됩니다: 기업 설치에서는 super/<user>, 서비스 제공자 설치에서 특정 조직에 대해서는 <org>/<user>.

보존. 온라인 이벤트 저장소는 제한적입니다. 오래된 이벤트는 추가 단계가 필요한 아카이브 저장소에 있을 수 있습니다. 

속성 이름. FortiSIEM 쿼리는 reptDevName(보고 장치), reptDevIpAddr, eventType, phRecvTime 등 자체 속성 이름을 사용합니다. 먼저 Analytics에서 필터를 작성하세요.

이벤트 쿼리 API로 내보내기

쿼리를 query.xml로 저장하세요:

<?xml version=”1.0″ encoding=”UTF-8″?>
<Reports><Report><Name>LogTotal export</Name><Description/>
  <SelectClause><AttrList>phRecvTime,reptDevIpAddr,eventType,rawEventMsg</AttrList></SelectClause>
  <ReportInterval><Low>1792368000</Low><High>1792454400</High></ReportInterval>
  <PatternClause><SubPattern id=”1″ name=”Filter”>
    <SingleEvtConstr>reptDevName = “web-03″</SingleEvtConstr>
  </SubPattern></PatternClause>
</Report></Reports>

간격은 2026-10-19 00:00 UTC부터 2026-10-20 00:00 UTC까지의 에포크 초입니다. 그런 다음 실행하세요:

FSM=”https://fortisiem.example.com”
AUTH=”super/apiuser:$FSM_PASS”

QID=$(curl -sS -u “$AUTH” -X POST -H ‘Content-Type: text/xml’ –data @query.xml “$FSM/phoenix/rest/query/eventQuery”)
until [ “$(curl -sS -u “$AUTH” “$FSM/phoenix/rest/query/progress/$QID”)” = “100” ]; do sleep 5; done
curl -sS -u “$AUTH” “$FSM/phoenix/rest/query/events/$QID/0/1000” > fsm_web03_1019.xml

마지막 두 경로 세그먼트는 시작 오프셋과 개수입니다. 1,000단위로 큰 결과를 페이지로 나누세요. 그런 다음 원시 메시지를 추출하세요:

import xml.etree.ElementTree as ET

root = ET.parse(“fsm_web03_1019.xml”).getroot()
with open(“fsm_web03_1019.log”, “w”) as out:
    for attr in root.iter(“attribute”):
        if attr.get(“name”) == “rawEventMsg” and attr.text:
            out.write(attr.text.strip() + “n”)

LogTotal에 업로드하고, 정리하고, 검토하세요

  1. 업로드. 열기 logtotal.com 파일을 드롭하세요.
  2. 정리.
  3. 검토.

실제 데이터에서 어떻게 보이는지. 

문제가 발생했을 때

증상가능한 원인Fix
401사용자 이름에서 조직 누락super/<user> 또는 <org>/<user> 사용
쿼리가 ID 대신 오류를 반환XML 구문 또는 알 수 없는 속성 이름Analytics에서 필터 테스트; 속성 이름 확인
진행 상황이 100에 도달하지 않음쿼리가 너무 광범위함시간 범위를 좁히고 필터링
rawEventMsg 비어 있음속성이 선택되지 않았음rawEventMsg를 AttrList에 추가
오래된 이벤트 누락아카이브 저장소에 있음아카이브 옵션 확인

FAQ

왜 XML인가요?

그것이 FortiSIEM API가 사용하는 형식입니다. Python 단계를 통해 원래의 원시 라인으로 변환되며, 이는 일반적으로 업로드를 원하는 것입니다.

대신 사건을 내보낼 수 있나요?

사건에는 별도의 API 호출이 있습니다. LogTotal에서는 그 뒤에 있는 이벤트를 내보내세요.

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