SIEM이란 무엇일까? — 로그를 연결하면 공격이 보인다
인터넷 서비스를 운영하다 보면 수많은 기록이 남습니다. 누가 로그인했는지, 어떤 파일을 열었는지, 어떤 API를 호출했는지. 이런 기록들을 우리는 로그(log)라고 부릅니다.
그런데 로그가 쌓이면 쌓일수록 한 가지 문제가 생깁니다. "이걸 다 어떻게 봐?"
로그 하나하나는 아무 문제가 없어 보인다
아래 세 가지 이벤트를 따로 보면 어떨까요?
- 로그인 실패
- 로그인 성공
- 관리자 페이지 접근
각각은 전혀 이상하지 않습니다. 비밀번호를 한 번 틀릴 수도 있고, 관리자가 관리 페이지에 들어가는 건 당연한 일이니까요.
그런데 이 세 가지를 순서대로 연결하면 어떨까요?
로그인 실패 5번 → 로그인 성공 → 즉시 관리자 페이지 접근
이건 전혀 다른 이야기입니다. 누군가 비밀번호를 계속 시도하다가 결국 뚫고 들어온 것일 수 있습니다. 보안에서는 이걸 브루트 포스 공격(Brute Force Attack)이라고 부릅니다.
문제는, 이런 패턴을 하루에 수백만 건 쌓이는 로그 속에서 사람이 직접 찾아내는 건 불가능하다는 겁니다. 그래서 등장한 게 바로 SIEM입니다.
SIEM이 뭔데?
SIEM은 Security Information and Event Management의 약자입니다. 이름 자체가 두 개념의 합성어인데, SIM(보안 정보 관리, 로그 수집·저장)과 SEM(보안 이벤트 관리, 실시간 탐지·알림)을 하나로 합쳤다는 의미입니다. 한 문장으로 정리하면 이렇습니다.
여러 로그를 한 곳에 모아서, 수상한 행동을 자동으로 찾아주는 시스템
학교에 비유하면 이해하기 쉽습니다. SIEM은 CCTV + 생활기록부 + 경험 많은 선생님의 역할을 동시에 합니다. CCTV처럼 모든 것을 수집하고, 생활기록부처럼 이력을 쌓고, 선생님처럼 "이 친구 오늘 평소랑 다른데?" 하고 눈치채는 거죠.
SIEM이 하는 일 3가지
① 로그를 한 곳에 모은다
서버, 네트워크 장비, 애플리케이션 등 수십 개의 시스템에서 발생하는 로그를 중앙 저장소로 끌어모읍니다. 흩어진 기록을 한눈에 볼 수 있게 됩니다.
② 상관관계 분석으로 이상 패턴을 찾는다
이게 SIEM의 진짜 핵심입니다. 단순히 로그를 저장하는 게 아니라, 서로 다른 시스템에서 온 이벤트들을 시간 순서와 맥락에 따라 연결(Correlation)합니다. 예를 들어 방화벽 로그, 인증 서버 로그, 애플리케이션 로그를 따로 보면 아무 문제가 없어 보여도, 세 개를 연결해보면 공격의 흔적이 드러나는 경우가 많습니다.
③ 이상하면 즉시 알려준다
탐지가 발생하면 담당자에게 알림을 보냅니다. 빠른 대응이 가능해지고, 피해를 최소화할 수 있습니다.
실제로 SIEM은 어떻게 구축할까?
SIEM을 구축하는 방법은 크게 두 가지입니다. 상용 제품을 쓰거나, 오픈소스 도구를 조합하거나.
상용 제품으로는 Splunk, Microsoft Sentinel, IBM QRadar 등이 대표적입니다. 기능이 풍부하고 지원도 받을 수 있지만 비용이 상당합니다. 특히 Splunk는 수집 데이터 용량 기준으로 과금하기 때문에, 로그가 많은 환경에서는 라이선스 비용이 만만치 않습니다.
반면 오픈소스 스택을 직접 조합하면 비용 부담 없이 구성할 수 있습니다. 가장 많이 쓰이는 조합은 다음과 같습니다.
Filebeat → Kafka → Logstash → Elasticsearch → Kibana
각 도구의 역할을 간단히 정리하면 이렇습니다.
| 도구 | 역할 |
|---|---|
| Filebeat | 각 서버에 설치해서 로그 파일을 실시간으로 수집 |
| Kafka | 수집된 로그를 유실 없이 임시 보관하는 버퍼 역할 |
| Logstash | 비정형 로그를 구조화된 데이터로 파싱·정규화 |
| Elasticsearch | 정제된 로그를 저장하고 빠르게 검색 |
| Kibana | 대시보드로 시각화하고 탐지 규칙을 설정 |
단, Kafka는 대용량 트래픽 환경에서 안정성을 높이기 위해 넣는 구성 요소입니다. 소규모 환경이라면 Filebeat → Logstash → Elasticsearch → Kibana처럼 Kafka를 빼고 구성하는 경우도 많습니다.
탐지 규칙 예시
실제 SIEM에서 설정하는 룰은 생각보다 직관적입니다.
- 1분 이내에 동일 IP에서 로그인 실패 5회 이상 → 경고 알림
- 기존에 없던 해외 국가 IP에서 로그인 성공 → 경고 알림
- 로그인 직후 5초 이내 관리자 권한 페이지 접근 → 경고 알림
조건이 단순해 보여도, 이런 규칙들이 실제 침해 사고를 잡아내는 경우가 많습니다.
SIEM의 현실적인 한계 — False Positive
SIEM을 실제로 운영하다 보면 반드시 마주치는 문제가 있습니다. 바로 오탐(False Positive), 즉 이상이 없는 상황인데도 경고가 울리는 경우입니다.
예를 들어, 해외 출장 중인 직원이 현지에서 로그인하면 "해외 IP 접속" 룰에 걸려 경고가 발생합니다. 탐지 룰을 너무 촘촘하게 짜면 하루에 수백 개의 알림이 쏟아지고, 담당자가 알림에 무감각해지는 경고 피로(Alert Fatigue) 현상이 생깁니다. 실제로 중요한 경고를 그냥 넘겨버리는 상황이 발생하는 거죠.
그래서 SIEM 구축 이후에는 룰을 계속 다듬고, 정상 행동 패턴(Baseline)을 학습시키는 작업이 중요합니다. SIEM은 한 번 설치하고 끝나는 게 아니라, 지속적으로 관리해야 하는 시스템입니다.
#SIEM #보안 #정보보호