[2SeC] SIEM 구성 전 배경지식
December 03, 2025
2SeC 프로젝트에서는 IaC 기반 AWS 인프라 위에 실습용 웹 서비스(DVWA/Juice Shop)를 구성하고, 다양한 보안 로그를 수집·저장·모니터링할 수 있는 SIEM 환경을 구축하는 것”이 1차 목표이다. 이후 2차 확장 목표로 LLM 기반 SOAR 기능 및 CTI 연동까지 고려하고 있다.
Sprint 1: 웹서비스 배포 + SIEM 구축 Sprint 2: SIEM 환경에서 위협 침투 로그 생성 -> 이벤트 모니터링 까지가 MVP Sprint 3: 시간 보고 CTI 연동 + LLM 연동 + 트러블슈팅 + 발표자료 제작 등등…
이렇게 구성했고, 나는 SIEM 엔지니어 + CTI 플랫폼 구성을 담당하기로 했다.
SIEM 엔지니어가 반드시 준비해야 하는 사전 배경지식
1. AWS 인프라 및 로그 생태계
SIEM은 로그를 중심으로 움직이기 때문에 아래 항목들은 이해해야 한다.
1. AWS 기본 구성 요소
1) EC2, VPC, Subnet, 보안그룹 구조
1-1) VPC, Subnet, Routing의 큰 그림: VPC(가상 네트워크) -> Subnet(구역) -> 라우팅&게이트웨이 -> 인스턴스(EC2 등)
(1) VPC
- AWS에서 제공하는 사용자의 “전용 가상 네트워크”이고, IP 대역을 가지고 그 안에 여러 Subnet을 나눔.
- 인터넷과 직접 연결되지 않고 IGW, NAT 등을 통해 이루어짐.
- IGW: VPC와 인터넷을 연결. Public Subnet과 연결
- NAT Gateway: Private Subnet에서 아웃바운드로 인터넷으로 나갈 때 사용
- VPC 단위로 VPC Flow Logs를 켤 수 있음 -> 네트워크 흐름 분석의 기본 단위
(2) Subnet: VPC 내부를 더 잘게 나눈 “구역”
- Public Subnet: 인터넷 게이트웨이(IGW)를 통해 외부와 통신 가능한 구역
- Private Subnet: 직접 인터넷에 안 나가는 구역 (DB, 내부 시스템)
- Route Table: 서브넷의 길 안내서. 어느 서브넷이 외부와 통신 가능한지, 우회 가능성 등을 아키텍처 레벨에서 이해하는 데 필요함.
- 공격 트래픽이 어느 Subnet으로 들어왔는지, DB 있는 Private Subnet까지 도달했는지 등을 Flow Logs로 분석 가능.
1-2) EC2와 보안 그룹
- EC2: AWS에서 제공하는 가상머신. ENI(Elastic Network Interface, 네트워크 인터페이스)를 통해 VPC/Subnet에 붙음
- Security Group(SG): EC2 등에 붙는 가상 방화벽. 인바운드/아웃바운드 규칙을 설정해야 함. Stateful(상태 저장) 방화벽으로, 인바운드 허용 시 관련 아웃바운드 자동 허용 등의 특성이 있음.
- SG 설정이 허술하면 공격 표면이 넓어짐.
- VPC Flow Logs와 함께 보면 “허용/차단된 트래픽 패턴”을 간접적으로 추적할 수 있음.
1-3) ALB 사용 시 로그 흐름
- ALB를 쓰는 경우 트래픽 흐름: Client -> ALB(공인 IP/도메인) -> Target Group -> EC2 인스턴스들
- 클라이언트는 ALB의 DNS으로 접속함.
- ALB가 라운드 로빈/라우팅 규칙에 따라 백엔드 EC2로 트래픽 전달
- 이 과정에서 ALB Access Logs 남기게 설정 가능
-
ALB Access Log에 담기는 주요 정보:
- 요청 시간
- 클라이언트 IP
- Target(백엔드) IP/Port
- 요청된 URL, HTTP Method, 응답 코드
- 지연 시간 (응답까지 걸린 시간)
-
SIEM 관점에서는:
- 웹 공격 패턴 탐지의 1차 데이터 소스
- 특정 IP에서 비정상적인 요청 반복 여부, 특정 URL에 대한 brute-forcing 시도 등을 볼 수 있음
- 백엔드 EC2 로그(Apache/Nginx)와 조합하면 스토리라인 재구성에 유리함.
**1-4) ** IAM 권한 모델 및 CloudTrail 구조 (1) IAM: AWS의 권한 시스템
- User, Group, Role, Policy (JSON 기반 권한 정의)
- Role: EC2, Lambda 등의 리소스에 부여해서 AWS API 호출 권한을 위임함.
- 보안/로그 관점에서 중요한 이유는 침해사고 시 “누가 어떤 AWS API를 호출했는지 추적”할 수 있기 때문이다.
(2) CloudTrail
- AWS API 호출 기록을 남기는 서비스 (ex: EC2 START/STOP, IAM policy 변경, S2 버킷 정책 수정)
-
기록 내용
- 호출 주체(사용자, 역할, 서비스)
- 호출한 API 이름
- 호출 시각, 소스 IP, 지역
- 요청/응답 파라미터 일부
-
구조적:
- 각 리전별로 이벤트 생성
- Trail 생성하면 로그를 S3에 저장하고, CloudWatch Logs로도 전송이 가능함.
- SIEM 관점에서는 AWS 계정 내부에서의 행위를 추적하는 핵심 소스로 작용함.
1-5) S3 버킷 + 수명주기 정책 (1) S3 (Simple Storage Service)
- 객체 스토리지 (파일 저장소)
- ALB Access Logs / CloudTrail Logs를 저장하는 위치
2. AWS 로그 유형
2-1) CloudTrail (API 호출)
- AWS 계정 내에서 발생하는 관리형 이벤트 + 선택적으로 데이터 이벤트 기록
- 주요 필드: eventTime, eventName, userIdentity, sourceIPAddress, requestParameters / responseElements (어떤 리소스 대상으로)
- 계정 탈취 감지: 낯선 IP/Region에서 로그인 후 이상한 API 호출
- 권한 상승/설정 변경 탐지
- 데이터 유출 징후: S3 GetObject 반복 요청, ListBuckets 패턴 갑자기 증가
2-2) VPC Flow Logs (네트워크 단위 트래픽 흐름 기록)
- VPC/Subnet/ENI 단위에서 통과하는 네트워크 트래픽 메타데이터를 기록
- 패킷 내용(페이로드)는 보지 않고 메타데이터만 확인
- srcaddr/dstaddr, srcport/dstport, protocol, action, bytest/packets, start/end, interface-id
- 포트스캔 감지: 한 IP에서 여러 포트로 SYN 시도 (Accept/Reject 패턴)
- 비정상 통신: Private Subnet의 DB에서 인터넷 쪽 특정 IP로 나가는 이상한 트래픽
- 정책 검증: 원래 차단되어야 할 포트인데 ACCEPT가 뜨는 경우 -> SG/NACL 설정 문제
2-3) ALB/NLB Access Logs
- HTTP 레벨 정보가 풍부하고 공격 패턴 분석에 적합함
- 주요 정보: 요청 시간, 클라이언트 IP, Target IP/Port, 요청 라인(method, URL, HTTP version), 응답 코드, User-Agent, 리스폰스/타겟 처리 시간
- 웹 공격 탐지: URL, QueryString에 포함된 특수 패턴
- 브루트포스 로그인: 특정 IP에서 /login같은 URL로 401/403 반복
- 특정 User-Agent 기반의 봇/스크립트 트래픽
-
NLB Access Logs
- NLB는 L4 레벨 로드밸런서라 L7 정보(URI 등)은 없음
- 기본적으로 어느 IP가 어느 포트로 연결했는지 정도의 정보
- 웹 공격 패턴 탐지에는 ALB가 훨씬 유리함
2-4) CloudWatch Logs
- AWS 서비스나 애플리케이션 로그를 모아서 저장하는 중앙 로그 서비스
- EC2에 CloudWatch Agent 설치 -> OS/애플리케이션 로그를 CloudWatch Logs로 전송
- Lambda, API Gateway, RDS 등은 기본적으로 CloudWatch Logs와 연동됨
-
구조:
- Log Group: 애플리케이션 또는 서비스 단위의 “로그 묶음”
- Log Stream: 인스턴스/컨테이너 등 세부 단위
- 다양한 로그의 중간 허브 역할 (ex: CloudTrail -> CloudWatch Logs -> 구독으로 SIEM/ELK로 전송)
- Metric Filter 설정으로 특정 패턴을 카운트화
2. 웹 공격 패턴
- SQL Injection
- Command Injection
- Brute-Force
- LFI/RFI -> 특이한 파일 경로 접근
- CSRF -> Referer/Origin 패턴 기반 탐지
- XSS -> 특수문자 + 스크립트 삽입 흔적
3. ELK 스택 및 OpenSearch 구조
핵심 구성요소
- ElasticSearch / OpenSearch: 인덱싱 및 검색
- Logstash / Filebeat: 로그 수집 및 전송
- Kibana / OpenSearch Dashboards: 시각화, 검색, 대시보드, 알림
필수 기술적 개념
- Index: 로그 저장 단위
- Mapping: 필드 데이터 타입 정의
- Query DSL: 검색 쿼리 작성 방법
- Dashboard: 분석용 시각화
- Alerting Rule: 특정 조건 발생 시 슬랙/웹훅 알림
4. 로그 파이프라인 흐름에 대한 이해
우리 프로젝트 같은 경우 DVWA -> Filebeat -> Logstash -> ElasticSearch -> Dashboard (-> Alerting) 전체 흐름을 트러블슈팅 할 수 있어야 함
5. 탐지 룰 (Sigma, Elastic Query)
기본 역량
- Sigma Rule 작성 구조 이해
- Windows/Linux 로그 구조 이해
- 웹 서버 로그 필드 구조 이해 (Apache, Nginx)
- 패턴 기반 탐지 및 “False Positive 튜닝”
실제 프로젝트에서의 업무 흐름
1. SIEM 아키텍처 확정
- OpenSearch vs ELK Stack? -> ELK Stack 사용 예정
- SIEM 아키텍처 다이어그램 그려보기
2. 로그 수집 경로 설계
-
DVWA/Juice Shop에서 생성될 로그들의 흐름을 정리:
- 웹 서버 로그 위치 확인 (EC2 내부)
- Filebeat 설치 및 모듈 설정
- 수집 포맷(JSON, plain text, Nginx module)
- S3 장기 저장 여부 결정
- OpenSearch 인덱스 정책 설정
-
로그 파이프라인 설계 문서 작성하기
3. Filebeat / Logstash 설치 및 세팅
- EC2에 filebeat 설치
- Filebeat.yml 수정해 수집할 로그 경로 설정
- OpenSearch/ElasticSearch 연결 테스트
- 인덱스 자동 생성 정책 설정
- 파싱 테스트
- 로그가 SIEM으로 잘 들어오는지, 필드 타입이 깨지지 않고 들어오는지 확인
4. 공격 로그 생성 및 분석
- 공격 전 baseline 로그 캡처
- 공격 후 로그 변화 분석
- 공격 한 번당 로그 패턴 수집
- 공격 -> 로그 -> 의미 해석 순서로 분석
- 공격 시나리오별 로그 패턴 분석 문서 작성
5. 탐지 룰 (Sigma/Elastic Rule) 작성
- 로그 패턴 정리 -> 탐지 조건 식으로 변환