* 이 게시물은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
(pfSense 홈랩 방화벽 ⑳)
앞 편이 '알려진 나쁜 주소'를 막는 거였다면, Suricata는 트래픽의 내용을 뜯어보며 공격 패턴을 찾아낸다. 포트 스캔, 익스플로잇 시도, 악성 통신 같은 걸 시그니처(룰)와 대조해 잡아내는 침입 탐지/차단 엔진이다.
IDS와 IPS의 차이
| IDS (탐지) | IPS (차단) | |
|---|---|---|
| 동작 | 의심 트래픽을 경보만 | 의심 트래픽을 차단 |
| 위험 | 놓쳐도 통신은 유지 | 오탐 시 정상 통신도 끊김 |
| 권장 시작 | 여기서 시작 | 익숙해진 뒤 전환 |
Suricata는 룰셋(대표적으로 ET Open 무료 룰)을 받아 트래픽과 대조한다. 처음엔 반드시 IDS(탐지)로만 돌려야 한다. 바로 IPS로 켜면 오탐 하나에 멀쩡한 서비스가 끊겨서, 원인을 못 찾고 고생한다. 로그를 며칠 보며 오탐 룰을 걸러낸 뒤 차단으로 넘어가는 게 정석이다.
설정 흐름
패키지를 설치하고 Services > Suricata에서 룰셋을 다운로드한다. 그다음 감시할 인터페이스(보통 WAN)에 Suricata를 붙이고 시작한다. 어느 인터페이스에 거느냐가 중요한데, WAN에 걸면 바깥과 오가는 위협을, LAN에 걸면 내부에서 나가는 이상 통신을 본다. 경보는 Alerts 탭에 쌓인다.
직접 해보기
- Suricata 설치 → 룰셋(ET Open) 다운로드 → WAN 인터페이스에 등록·시작(IDS 모드).
- 클라이언트에서 포트 스캔(예:
nmap)을 자신에게 돌려 경보가 뜨는지 본다. - Alerts 탭에서 탐지 내역을 확인하고, 오탐이 있으면 억제(suppress) 목록에 넣어 본다.
✅ 확인 — Suricata Alerts에 탐지 로그가 쌓이면 성공이다. 왜 IPS 전에 IDS로 먼저 돌려야 하는지 설명할 수 있으면 이 편은 충분하다.
Legacy냐 Inline이냐 — 차단 방식이 갈린다
Suricata를 단순 탐지가 아니라 차단(IPS)으로 쓸 때, pfSense는 두 가지 방식을 준다. Legacy 모드는 룰에 걸린 IP를 방화벽 차단 테이블(snort2c)에 올려서, 그 주소가 오가는 트래픽을 통째로 끊는다. 구현이 단순한 대신 무디다 — 한 번 걸리면 그 IP의 모든 연결이 막힌다. Inline 모드는 netmap으로 패킷이 지나는 길 한가운데 끼어들어, 패킷 하나하나를 검사해 통과/차단을 결정한다. 룰에 걸린 그 트래픽만 콕 집어 떨어뜨리니 훨씬 정교하다.
대신 Inline은 랜카드가 netmap을 제대로 지원해야 안정적이다. 인텔 계열 NIC면 Inline이 낫고, 호환이 애매하면 Legacy로 가는 게 마음 편하다. 나라면 지원 NIC에선 Inline, 아니면 Legacy로 시작한다.
정상 IP를 스스로 막지 않으려면 — Pass List
Legacy 모드엔 사고가 하나 숨어 있다. 오탐이 나면 자기 게이트웨이나 내부 DNS·서버까지 차단 테이블에 올려서 스스로 망을 끊어버리는 일이 생긴다. 이걸 막는 장치가 Pass List다. 기본 Pass List에는 로컬 네트워크 대역과 WAN 공인 IP가 이미 들어 있어서 그건 절대 차단하지 않는다. 여기에 꼭 살아 있어야 할 내부 서버 IP를 추가해 두면, 룰에 걸려도 그 주소는 건드리지 않는다.
어느 인터페이스에 걸까 — WAN vs LAN
Suricata는 인터페이스별로 켠다. WAN에 걸면 바깥에서 들어오는 스캔·익스플로잇 시도를 문 앞에서 본다. 다만 인터넷 배경 소음이 워낙 많아 경보가 폭주한다. LAN에 걸면 반대로 내부 기기가 밖으로 내보내는 이상 통신 — 감염된 IoT가 C2 서버로 신호를 보내는 것 같은 — 을 잡는다. 둘 다 의미가 있지만 CPU·메모리를 제법 먹으니, 처음엔 WAN 하나로 시작해 로그를 보며 필요할 때 LAN을 더하는 게 현실적이다.
오탐과 룰 튜닝 — 켜자마자 차단은 금물
가장 흔한 실수가 설치하자마자 IPS(차단)로 돌리는 것이다. 그러면 멀쩡한 서비스가 오탐에 걸려 끊기고, 원인 찾느라 밤을 새운다. 순서를 지키자. 먼저 탐지(경보)만 며칠 돌리며 Alerts 탭을 관찰한다. 자꾸 뜨는 오탐은 그 룰의 SID를 suppress 목록에 넣거나, 안 쓰는 룰 카테고리를 통째로 끈다. 이렇게 며칠 다듬어 경보가 진짜 위협만 남았을 때 차단으로 전환하면 사고가 없다.
룰셋은 ET Open 같은 무료 룰을 기본으로 쓰되, 주기적으로 업데이트되도록 자동 갱신을 켜 둔다. 더 깊은 설정은 Netgate Suricata 문서가 정확하다. 다음 편은 이 경보들을 어디서 어떻게 읽는지, 로그와 실시간 모니터링이다.
Suricata와 pfBlockerNG, 역할이 다르다
둘 다 ‘나쁜 걸 막는다’라 헷갈리지만 층위가 다르다. pfBlockerNG는 주소·도메인 단위로 막는다 — 이미 알려진 악성 IP·광고 도메인 목록을 받아 접근을 끊는 방식이라 가볍고 빠르다. Suricata는 트래픽의 내용을 뜯어 공격 패턴을 찾는다 — 알려지지 않은 익스플로잇 시도까지 잡지만 CPU를 훨씬 많이 쓴다.
| pfBlockerNG | Suricata | |
|---|---|---|
| 막는 기준 | IP·도메인 목록 | 패킷 내용(시그니처) |
| 부담 | 가벼움 | 무거움(CPU·RAM) |
| 잡는 것 | 알려진 악성 주소 | 공격 패턴·익스플로잇 |
그래서 실무에선 둘을 겹쳐 쓴다. pfBlockerNG로 뻔한 것들을 싼값에 걸러 Suricata가 볼 양을 줄이고, Suricata는 남은 트래픽에서 진짜 공격 패턴을 잡는다. 홈랩이라면 이 조합만으로도 웬만한 위협은 커버된다.
차단과 탐지를 붙였으니, 이제 그것들이 남기는 기록을 읽을 차례다. 다음 편은 로그와 실시간 모니터링이다.
자주 묻는 질문 (FAQ)
IDS와 IPS는 뭐가 다른가요?
IDS는 탐지만(경고), IPS는 탐지+차단입니다. Suricata를 IPS 모드로 두면 악성 트래픽을 실시간으로 막습니다.
IPS를 켜면 정상 트래픽도 막히나요?
오탐이 생길 수 있어, 처음엔 탐지 모드로 관찰하며 룰을 조정한 뒤 차단으로 전환하길 권합니다.

답글 남기기