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에 업로드하고, 정리하고, 검토하세요
- 업로드. 열기 logtotal.com 파일을 드롭하세요.
- 정리.
- 검토.
실제 데이터에서 어떻게 보이는지.
문제가 발생했을 때
| 증상 | 가능한 원인 | Fix |
|---|---|---|
| 401 | 사용자 이름에서 조직 누락 | super/<user> 또는 <org>/<user> 사용 |
| 쿼리가 ID 대신 오류를 반환 | XML 구문 또는 알 수 없는 속성 이름 | Analytics에서 필터 테스트; 속성 이름 확인 |
| 진행 상황이 100에 도달하지 않음 | 쿼리가 너무 광범위함 | 시간 범위를 좁히고 필터링 |
| rawEventMsg 비어 있음 | 속성이 선택되지 않았음 | rawEventMsg를 AttrList에 추가 |
| 오래된 이벤트 누락 | 아카이브 저장소에 있음 | 아카이브 옵션 확인 |
FAQ
왜 XML인가요?
그것이 FortiSIEM API가 사용하는 형식입니다. Python 단계를 통해 원래의 원시 라인으로 변환되며, 이는 일반적으로 업로드를 원하는 것입니다.
대신 사건을 내보낼 수 있나요?
사건에는 별도의 API 호출이 있습니다. LogTotal에서는 그 뒤에 있는 이벤트를 내보내세요.