차세대 ML IDS: Suricata로 효과적인 침입 탐지 모델 훈련하기
최신 침입 탐지 시스템(IDS)은 시그니처 기반 분석에 의존하기 때문에 새롭거나 변형된 사이버 공격을 식별하는 데 어려움을 겪습니다. 머신러닝(ML)의 발전은 유망한 해결책을 제시하지만, 실제 네트워크에 ML IDS를 배포하는 것은 특히 레이블링된 데이터 생성과 관련하여 여러 난관에 부딪힙니다. 본 글에서는 Suricata가 기록한 보안 이벤트 데이터를 활용하여 모델을 훈련하고 방어 효율성을 높이는 혁신적인 ML IDS 구축 접근 방식을 탐구합니다.
침입 탐지 시스템의 진화: 시그니처에서 지능으로
사이버 공격에 대응하는 정보 보안 도구로는 방화벽, 네트워크 및 호스트 기반 침입 탐지 시스템(IDS), 차세대 방화벽(NGFW), 보안 정보 및 이벤트 관리(SIEM) 시스템 등이 있습니다. 이들은 다양하지만 대부분 시그니처 기반 분석에 의존하는데, 이는 알려진 위협을 효과적으로 식별하지만 새롭거나 변형된 공격에는 무력하다는 한계가 있습니다. 이러한 근본적인 약점은 휴리스틱 또는 지능형 탐지가 가능한 ML IDS 개발의 시급성을 강조합니다.
네트워크 수준 ML IDS 구축 작업은 일반적으로 두 가지 주요 방식으로 접근됩니다:
- 네트워크 트래픽 분류: 트래픽을 '정상'과 '공격' (공격 하위 범주 포함 가능)으로 나눕니다. 이는 레이블링된 데이터셋을 필요로 하는데, 윤리적, 인프라적, 방법론적 제약으로 인해 실제 시나리오에서는 어렵습니다. 보호된 리소스의 정확한 모델을 생성하거나 운영 중인 인프라를 손상시키지 않고 공격 데이터를 수집하는 것은 상당한 난관을 제시합니다.
- 이상 탐지: '정상' 트래픽만 알려진 경우 비정상적인 네트워크 연결 또는 패킷을 식별합니다. 이 접근 방식은 레이블링된 데이터에 대한 요구 사항이 적지만, 오탐(false positive)률이 높아질 수 있습니다.
기존 연구들은 통제된 환경에서 모델을 훈련하고 테스트하는 실험실 환경에서 ML IDS의 높은 정확도를 자주 보여줍니다. 그러나 이러한 모델이 실제 네트워크에 배포될 때 상당한 성능 저하가 관찰됩니다. 이는 훈련에 사용되는 특징 벡터가 종종 물리적 네트워크 구조, 하드웨어 구성, 그리고 데이터가 수집된 네트워크 서비스의 특정 사항에 크게 의존하기 때문입니다. 테스트 환경과 운영 환경 간의 이러한 매개변수 불일치는 분류 오류와 전반적인 모델 정확도 감소로 이어집니다.
가설 및 방법론: 지식 소스로서의 Suricata
이러한 한계를 인식하여, 본 글의 저자들은 리소스에 대한 의도적인 공격을 필요로 하지 않는 데이터를 사용하여 이미 운영 중인 네트워크에서 효과적인 ML IDS를 구축할 수 있는지 여부를 파악하고자 했습니다. 핵심 가설은 Suricata와 같은 전통적인 침입 탐지 시스템이 기록한 보안 이벤트를 데이터셋 레이블링에 사용하는 것이 실현 가능하다는 것입니다. 이 접근 방식은 레이블링된 데이터 생성의 어려움을 우회하며, 실제 환경 조건에 대한 ML IDS의 적응성을 잠재적으로 향상시킬 수 있습니다.
이 가설을 구현하기 위해 session_analyzer라는 독점 도구가 개발되었습니다. 이 도구는 각 네트워크 연결에 대한 네트워크 트래픽의 특징 벡터 값을 계산하도록 설계되었습니다. session_analyzer는 인기 있는 CICFlowMeter(이전 NTLFlowLyzer)와 유사하지만 특정 연구 과제에 맞게 조정되었다는 점에 유의해야 합니다. 초기에는 TCP 프로토콜에 중점을 두지만, 그 아키텍처는 다른 프로토콜로 분석을 확장할 수 있도록 합니다.
session_analyzer의 특징 벡터 생성 원리
session_analyzer는 네트워크 트래픽을 분석하고 의미 있는 특징을 추출하기 위한 엄격한 규칙을 적용하며, 이 특징들은 머신러닝 모델 훈련에 사용됩니다. 이러한 원칙들은 생성된 데이터의 일관성과 관련성을 보장합니다.
- 프로토콜 필터링: Ethernet II, MPLS, VLAN, IPv4, TCP, UDP, ICMPv4 프로토콜의 패킷만 분석됩니다. 다른 모든 링크, 네트워크 및 전송 계층 프로토콜은 무시됩니다.
- 네트워크 세션 식별 (Flow ID): 각 세션은 5가지 구성 요소(5-Tuple) 시퀀스(목적지 IP - 출발지 IP - 목적지 포트 - 출발지 포트 - 프로토콜)를 사용하여 고유하게 식별됩니다.
- 네트워크 세션 정의: 세션은 단일 TCP 연결, UDP 플로우 또는 ICMP 플로우에 속하는 패킷들의 시퀀스로 정의됩니다. 패킷이 세션에 속하는지는 5-Tuple 주소 정보(직접 또는 역방향)를 일치시켜 설정됩니다.
- TCP 세션 시작 기준: SYN=1 및 ACK=0 플래그를 가진 첫 번째 패킷이 수신될 때만 TCP 세션이 등록됩니다. 이 패킷은 또한 데이터 전송 방향(클라이언트-서버)을 결정합니다.
- UDP/ICMP 세션 시작 기준: 새로운 식별자를 가진 첫 번째 패킷이 나타날 때 등록됩니다. 예를 들어, 처음 관찰된 DNS 응답의 경우 방향 결정에 오류가 발생할 가능성이 있습니다.
- 네트워크 세션 종료 기준 (타임아웃): 모든 세션 유형에 대해 마지막으로 수신된 패킷으로부터의 타임아웃이 제공됩니다. 구성 가능한 기본값:
tcp_session_timeout = 60000ms,udp_session_timeout = 60000ms,icmp_session_timeout = 60000ms. - TCP 세션 종료 기준 (종료 플래그): RST 또는 FIN 패킷이 추가적으로 모니터링됩니다. RST를 수신하면 세션은 종료된 것으로 간주됩니다. FIN을 수신하면 양측으로부터의 확인 응답(ACK) 추적 메커니즘이 시작됩니다.
- 네트워크 패킷 플로우 (Flow): 방향과 관계없이 단일 세션 내의 엄격한 패킷 시퀀스입니다.
- 정방향 패킷 플로우 (Fwd): 세션 내에서 클라이언트에서 서버로의 엄격한 패킷 시퀀스입니다.
- 역방향 패킷 플로우 (Bwd): 세션 내에서 서버에서 클라이언트로의 엄격한 패킷 시퀀스입니다.
- 네트워크 세션 지속 시간: 세션 내 첫 번째 패킷부터 마지막 패킷까지, 또는 페이로드 데이터(payload > 0)가 있는 첫 번째 패킷부터 마지막 패킷까지 두 가지 방식으로 계산할 수 있습니다.
is_need_calc_duration_by_last_payload매개변수가 이를 제어합니다. - 네트워크 세션 스트림 (Stream): 단일 출발지 IP와 지정된 네트워크 서비스(목적지 IP | 목적지 포트 | 프로토콜) 간의 세션 집합입니다.
stream_id는 이 네 가지 구성 요소를 연결하여 형성됩니다. "Stream" 접두사가 붙은 특징들은 병렬 세션, 그들의 생성 시간, 그리고 그들 사이의 간격을 특징짓습니다. - 플로우 내 "독립적인" 세션: 세션 생성 간의 시간이
session_simple_timeout(기본값60000000마이크로초)을 초과하는 경우 세션은 독립적인 것으로 간주됩니다. - 플로우 내 세션 간 시간 간격:
* session_time_prev_absent: 현재 세션과 이전 세션 사이의 간격입니다. 현재 세션이 첫 번째이거나 간격이 임계값을 초과하는 경우, session_time_prev_absent 값이 설정됩니다(기본값 60000000 마이크로초).
* session_time_next_absent: 현재 세션과 다음 세션 사이의 간격입니다. 현재 세션이 마지막이거나 간격이 임계값을 초과하는 경우, session_time_next_absent 값이 설정됩니다(기본값 60000000 마이크로초).
이러한 상세한 규칙들을 통해 session_analyzer는 ML 모델 훈련에 사용될 수 있는 풍부한 특징 집합을 생성할 수 있습니다. Suricata를 레이블링에 사용함으로써, 이러한 특징들을 특정 탐지된 위협과 연결하여 실제 공격 없이 레이블링된 데이터셋을 생성할 수 있습니다. 이는 실제 네트워크 인프라의 동적이고 고유한 조건에서 효과적으로 작동할 수 있는 더욱 적응력 있고 정확한 ML IDS를 구축하는 길을 열어줍니다.
접근 방식의 장점과 한계
데이터 레이블링에 Suricata를 사용하는 것은 몇 가지 주요 이점을 제공합니다:
- 데이터 현실성: Suricata가 기록한 실제 트래픽과 실제 사고를 기반으로 훈련이 이루어져 모델의 관련성을 높입니다.
- 자원 효율성: 공격을 시뮬레이션하거나 운영 시스템에 공격을 수행하기 위한 값비싼 테스트베드가 필요 없어집니다.
- 적응성: 특정 네트워크의 데이터를 기반으로 모델이 훈련되므로, 트래픽 및 장비의 고유한 특성에 더 잘 적응할 수 있습니다.
하지만 한계점도 존재합니다. 레이블링의 품질은 Suricata의 효율성과 시그니처의 최신성에 직접적으로 의존합니다. Suricata가 새로운 공격을 탐지하지 못하면, 해당 공격은 데이터셋에 레이블링되지 않으며 ML 모델은 이를 식별하는 방법을 학습하지 못할 것입니다. 또한, session_analyzer에 의한 특징 생성 과정 자체는 자원 집약적일 수 있습니다. 그럼에도 불구하고, 이 접근 방식은 실제 운영 환경을 위한 신뢰할 수 있고 적응성 있는 ML IDS를 생성하는 과제를 해결하는 데 있어 중요한 진전을 나타냅니다.
핵심 요약
- 기존 IDS는 시그니처 기반 접근 방식으로 인해 새롭고 변형된 공격에 취약합니다.
- ML IDS는 유망하지만, 실제 시나리오에서 얻기 어려운 레이블링된 데이터를 필요로 합니다.
- 데이터셋 레이블링을 위해 Suricata 이벤트를 활용하면 실제 공격 없이 실제 트래픽으로 ML IDS를 훈련할 수 있습니다.
session_analyzer도구는 14가지 원칙에 기반하여 네트워크 세션에 대한 상세한 특징 벡터를 생성합니다.- 이 접근 방식은 실제 네트워크의 고유한 특성에 대한 ML IDS의 적응성을 향상시키지만, Suricata 탐지의 품질에 의존합니다.
— Editorial Team
아직 댓글이 없습니다.