본문 바로가기
FortiGate/Log

오래된 세션에서 발생하는 Interim log 제어 방법

by 에티버스이비티 2021. 2. 23.

기본적으로 트래픽로그는 세션이 만료된 후, 주고 받은 트래픽 량 정보를 추가 하여 로그를 남긴다. 이런 경우 오랜시간 연결된 세션의 경우 로그가 남지 않아 실시간 분석하는(FortiView) 같은 곳에서 정확한 분석이 어려울 수 있다.

 

FortiOS 5.6 특정버전 이상에서는 오래된 세션의 경우 2분마다 한번씩 "interim" 로그를 발생 시켜, 실시간 분석에 도움을 준다. 2분 이내에 아무런 트래픽이 없으면 다음 패킷이 수신되면 로그를 발생 시킨다.

"interim" 로그는 logid=20, action=accept 로 구성된다.

 

FortiAnalyzer가 연동되어 있으면, 이런 "interim" 로그가 전송된다. FortiAnalyzer에 Report 생성시 이 "interim" 로그 때문에 잘못된 결과가 나올수 있다.

 

FortiGate에서 로그 필터 기능을 이용하여, "interim" 로그를 FortiAnalyzer로 전송하지 않고 제외시킬 수 있다.

 

# config log fortianalyzer filter
       set filter "logid(00020)"
       set filter-type exclude
 end

 

 

"interim" 로그를 모두 FortiAnlyzer로 보낸 경우에는 Report 생성시 SQL 쿼리문을 조정하여 "interim" 로그를 제외 시킬수 있다.

SQL의 where 문에 아래 필터를 추가하는 방식이다.

   where $filter and (logflag&1>0)

 

실제 예)

select shapersentname, shapingpolicyid, sum(coalesce(shaperdroprcvdbyte, 0)) as dropped_rcvd, sum(coalesce(shaperdropsentbyte, 0)) as dropped_sent, (sum(coalesce(shaperdroprcvdbyte, 0))+sum(coalesce(shaperdropsentbyte, 0))) as dropped_total
from $log

where $filter and (logflag&1>0) and shapingpolicyid is not null
group by shapersentname, shapingpolicyid
order by dropped_total desc
limit 20

댓글