traker/notes

침입탐지 시스템(IDS)

Aapie 2025. 5. 3. 19:55

배치 위치에 따른 분류

  1. 네트워크 기반 침입탐지 시스템 (NIDS)
    • 네트워크를 통과하는 모든 데이터 패킷을 모니터링하여 비정상적인 패턴이나 알려진 공격 시그니처를 탐지함.
    • 네트워크의 중요 지점에 설치되어 광범위한 네트워크 트래픽을 감시함.
  2. 호스트 기반 침입탐지 시스템 (HIDS)
    • 특정 컴퓨터나 서버 내부의 활동을 모니터링하며, 시스템 로그, 파일 시스템의 변경, 기타 이벤트 로그 등을 검사함.
    • 호스트에 설치되어 해당 시스템의 이상 행위나 변경을 감지함.
    • RTOS 시스템 콜 로그나 애플리케이션 로그, 센서 이벤트 로그 같은 기기 내부 로그를 감시하는 구조

 

IDS 탐지방법

  • 서명 기반 탐지(Signature-based)
    • 미리 정의된 공격 패턴(DB)에 맞춰 패킷이나 로그를 매칭해 탐지
    • 낮은 오탐율과 빠른 성능이 장점이지만, 알려지지 않은 새로운 공격(제로데이)에 취약함.
  • 이상 기반 탐지(Anomaly-based)
    • 평소 정상 상태의 통계 모델 혹은 머신러닝 모델을 만들어 두고, 실시간 들어오는 데이터가 정상 범위를 벗어나면 경고를 생성함
    • 신종 공격도 잡아낼 가능성이 있지만, 모델 학습과정이 복잡하고 오탐율 관리가 까다로움.
  • 하이브리드 탐지
    • 서명·이상 두 방식을 조합해 서로의 약점을 보완한다. 먼저 서명 기반으로 빠르게 필터링한 뒤, 이상 여부를 추가 검증하는 흐름을 쓸 수 있음

 

프로토콜 분석 기법

  • 단순 페이로드 매칭을 넘어서
  • TCP 세션 재조립, TLS 복호화, HTTP 필드 이상 분석 같은 ‘상태 기반(stateful) 검사’ 할 줄 알아야 함
  • IoT 환경에선 경량화된 프로토콜(CoAP, MQTT) 상태 분석 방법을 익혀야 함

*payload
네트워크 패킷에서 헤더를 뗀 뒤 실제로 전달되는 데이터. 예) HTTP 요청이라면 메서드·URL 헤더를 뗀 뒤 본문에 담긴 JSON이나 폼 데이터 같은 부분이 payload

 

*payload 매칭
네트워크 패킷에서 헤더를 제외한 실제 데이터 부분에서 미리 정의된 문자열이나 바이너리 패턴을 비교해 공격 여부를 판단하는 기법

 

*TCP 세션

제조립 작은 패킷 여러 개로 분할된 통신을 다시 순서대로 붙여 한 번에 볼 수 있게 만드는 과정

 

*TLS 복호화

암호화된 HTTPS 트래픽을 중간에서 풀어서 평문 상태로 만드는 걸 의미 암호화 자체가 보호 수단이니 중간에 복호화를 넣으려면 서버 쪽 키를 쓰거나 프록시 장비를 거쳐야 해서 성능·구성 부담이 큼.

 

*HTTP 필드

이상 분석 URL, 헤더, 쿠키, 쿼리 스트링 같은 각 필드 값이 정상 패턴에서 벗어났는지 검사하는 것 예) Referer 헤더에 SQL 인젝션 코드가 섞였거나 Content-Type과 실제 바디 포맷이 불일치하는 식

 

*상태 기반(stateful) 검사

패킷 하나하나만 보지 않고 TCP 세션의 상태(세션 수립→데이터 전송→종료)나 애플리케이션 레벨 상태(로그인 세션, 파일 전송 단계)를 유지하면서 분석하는 방식. 단순히 포트와 IP만 보는 stateless 검사보다 훨씬 정교하지만 자원이 더 듦

 

성능 지표

  • 탐지율(Detection Rate)과 오탐율(False Positive Rate)이 핵심 메트릭
  • 리소스에 제약이 많은 임베디드 기기에서는 CPU·메모리 소모를 최소화하면서 이 비율을 최적화하는 게 관건

로그 관리 및 상관 분석

  • 수많은 경고의 효율적 처리를 위해, 이벤트 그룹화, 시간·IP·이벤트 유형별로 상관관계를 찾아내는 기능 필요
  • 이 단계가 없으면 방대한 알림 속에서 진짜 위협을 놓치기 쉬움

대표 오픈소스 툴 이해

  • Snort와 Suricata는 서명 기반 NIDS 예제로, 룰 작성법과 패턴 매칭 내부 구조를 살펴보면 서명 엔진 동작을 이해하는 데 도움
  • Zeek(구 Bro)는 로그 기반 분석 및 스크립팅 확장성을 제공하니 이상 탐지 로직을 작성해보기에 좋음

경량화 고려사항

  • RTOS 환경에서는 대용량 패킷 캡처 대신 핵심 필드만 뽑아 내는 ‘헤더만 분석’ 모드나, 윈도우링 기반 통계 샘플링 기법을 써야 실시간성을 유지할 수 있음
  • TLS 트래픽처럼 암호화된 데이터는 게이트웨이에서 복호화 후 평문을 전달하거나, 메타데이터(패킷 크기·타이밍)만 분석하는 방법을 고민해야 해.

*게이트웨이

ESP32 같은 엣지 장치와 중앙 분석 서버 사이에서 데이터 전송을 중계·암호화 종료·1차 전처리(핵심 필드 추출·압축·로깅) 역할을 하는 중간 단계 장치 예) ESP32가 센서 데이터를 간단히 필터링해 MQTT로 퍼블리시하면, 게이트웨이가 TLS 종료·로깅·추가 분석을 책임지는 구조

 

*중앙 분석 서버

현장에서 전처리된 로그 데이터를 MQTT나 HTTP API로 수집해 고급 머신러닝 모델이나 LLM 기반 분석을 수행하는 원격 시스템 센서 장치나 게이트웨이는 간단한 룰 기반 필터링까지 하고, 세부 분석과 장기 저장은 중앙 서버가 담당

 

*전처리

원시 로그나 센서 데이터를 분석하기 전에 필요한 정보만 뽑아내고 이상치 제거, 포맷 통일, 필드 추출 같은 작업을 하는 걸 뜻함. 예) 긴 텍스트 로그에서 타임스탬프·이벤트 코드·메시지 제목만 남기거나 누락된 값을 채우는 과정

 

이상 탐지 모델과 특징

  • 간단한 통계 임계치(threshold) 모델부터 Autoencoder 기반 재구성 오차 검출, One-Class SVM, Isolation Forest 같은 머신러닝 알고리즘을 임베디드 환경에 올리는 방법도 미리 검토해두면 좋음