📚 네트워크 · 패킷 분석 › 06. 방화벽 · IDS 기초 — 275편
이전 글: 274. 비정상 Firewall Event · 다음 글: 276. IPS란 무엇인가
IDS(Intrusion Detection System, 침입 탐지 시스템) 는 네트워크 트래픽이나 호스트 활동을 관찰해 공격·정책 위반으로 의심되는 행위를 탐지하고 Alert(경보)를 생성하는 시스템입니다. 센서의 대역 외 배치, SPAN·TAP 같은 장비 측 구조는 04 영역 156. IDS란 무엇인가와 188. IDS 동작 구조에서 다뤘습니다.
이 글부터 06 영역은 방화벽에서 IDS·IPS로 넘어갑니다. 방화벽이 "누가 어디로 가도 되는가"를 판단한다면, IDS는 "허용된 트래픽 안에 공격의 흔적이 있는가" 를 판단합니다.
| 비교 | Firewall | IDS |
|---|---|---|
| 판단 대상 | 헤더·연결 상태 | 헤더 + 페이로드 + 행위 패턴 |
| 결과물 | 허용·차단 로그 | Alert |
| 차단 | 함 | 하지 않음(탐지만) |
| 배치 | 트래픽 경로 위(인라인) | 보통 복사본 관찰(대역 외) |
| 주된 오류 | 잘못된 정책 | 오탐·미탐 |
IDS가 차단하지 않는다는 점은 약점이자 장점입니다. 오탐이 있어도 서비스에 영향을 주지 않으므로, 넓고 민감하게 탐지하도록 운영할 수 있습니다. 차단 기능은 276. IPS란 무엇인가에서 다룹니다.
네트워크 IDS가 패킷을 받아 Alert를 만들기까지의 흐름입니다.
SPAN / TAP 으로 복사된 패킷
↓
[패킷 디코딩] Ethernet → IP → TCP/UDP
↓
[흐름 추적·재조립] 같은 연결의 패킷을 묶고 TCP 스트림 재조립
↓
[프로토콜 해석] HTTP, DNS, TLS 등 응용 계층 필드 추출
↓
[탐지 엔진] 시그니처 비교 / 이상 행위 판단
↓ 일치
[Alert 생성] 규칙 ID, 메시지, 분류, 심각도, 5-tuple, 시각
↓
로그 파일 / SIEM 전송 → 관제자 분석
탐지 방식과 IDS 유형은 이어지는 글에서 각각 다룹니다.
IDS의 탐지 결과는 실제 상황과 비교해 네 가지로 분류됩니다.
| 분류 | 실제 공격 | IDS 판단 | 의미 |
|---|---|---|---|
| True Positive (정탐) | 있음 | Alert | 올바른 탐지 |
| False Positive (오탐) | 없음 | Alert | 정상 트래픽을 공격으로 오인 (285. False Positive) |
| False Negative (미탐) | 있음 | 없음 | 공격을 놓침 (286. False Negative) |
| True Negative | 없음 | 없음 | 정상을 정상으로 판단 |
Suricata가 남기는 Alert의 형식 예시입니다(값은 환경마다 다름, 규칙은 실습용 로컬 규칙 가정).
# 형식 예시 — fast.log (한 줄 요약형)
09/30/2026-16:02:11.482113 [**] [1:1000001:1] LOCAL ICMP echo request to HOME_NET [**] [Classification: Misc activity] [Priority: 3] {ICMP} 192.168.10.50:8 -> 192.168.10.20:0
# 형식 예시 — eve.json alert 이벤트 (주요 필드만)
{"timestamp":"2026-09-30T16:02:11.482113+0900","flow_id":1234567890,"event_type":"alert",
"src_ip":"192.168.10.50","dest_ip":"192.168.10.20","proto":"ICMP",
"alert":{"action":"allowed","signature_id":1000001,"rev":1,
"signature":"LOCAL ICMP echo request to HOME_NET","category":"Misc activity","severity":3}}
실습 예시 — Suricata가 설치된 센서 VM에서 Alert를 확인합니다(Rocky/Ubuntu 공통, 패키지 기본 경로 기준).
sudo tail -f /var/log/suricata/fast.log
sudo jq -c 'select(.event_type=="alert") | [.timestamp, .src_ip, .dest_ip, .alert.signature]' /var/log/suricata/eve.json
alert.action이 allowed인 것은 IDS 모드에서 탐지만 하고 통과했다는 뜻입니다. IPS 모드에서 차단하면 blocked로 기록됩니다. flow_id는 같은 연결의 다른 이벤트(flow, http, dns 등)와 Alert를 연결하는 열쇠입니다.
관제자가 Alert를 받으면 확인할 질문
flow_id의 응용 계층 로그(HTTP 응답 코드 등)는 무엇을 보여 주는가?Alert 수신 → 규칙 의미 확인 → 방향·자산 확인
↓
방화벽 로그: 연결 허용 여부 → 패킷·응용 로그: 실제 내용
↓
판단: 오탐 / 시도(실패) / 성공 가능성 → 대응 또는 종결
오탐 주의: 취약점 스캐너, 모니터링 도구, 개발·테스트 트래픽은 공격 시그니처와 자주 일치합니다. IDS Alert 분석 절차는 283. IDS Alert, 05 영역의 스캔 Alert 확인은 235. IDS에서 Scan Alert 확인에서 이어집니다.