E2 · 씨앤토트 · 2020.08 – 2023.02
새벽 3시의 DDoS, 사람 없이 막다
이미 쌓이던 로그로 탐지부터 차단까지 자동화
탐지 → 차단 자동화사람 개입 0
- Azure
- DDoS
- 자동화
- PowerShell
- 대응 자동화
한 줄 요약
이미 쌓이던 Azure 로그를 연결해, DDoS 공격의 탐지부터 차단까지 사람의 개입 없이 이어지게 만들었습니다.
배경
서버 3,500대 규모 글로벌 게임을 전담하던 시기입니다. 게임 서비스에는 DDoS 공격(대량의 트래픽을 보내 서비스를 마비시키는 공격)이 자주 들어왔습니다.
문제
공격은 대응 인력이 가장 적은 야간과 주말에 집중되는 경우가 많았습니다.
사람이 알림을 보고, 접속해서, 공격 IP를 찾아, 차단 규칙을 넣는 동안 서비스가 흔들렸습니다.
판단
왜 이 방법을 택했는지, 세 가지 선택지를 비교했습니다.
야간 대응 인력 증원
공격이 언제 올지 모르는 상황에서 상시 대기 인력은 비용이 크고 지속하기 어렵습니다.
별도 상용 보안 솔루션 도입
도입과 계약에 시간이 걸리고 고객사 비용 부담이 생깁니다.
이미 쌓이던 로그 활용
Azure의 DDoS 방어 기능이 공격 출발지 정보가 담긴 로그를 이미 남기고 있었습니다. 새 데이터 없이 연결만 하면 됩니다.
쉬운 설명SYN Flood가 뭔가요?
인터넷 연결(TCP)은 전화 통화처럼 3단계 인사를 나눕니다. SYN("연결할래?") → SYN-ACK("좋아, 준비됐어?") → ACK("응").
공격자가 첫 인사(SYN)만 수없이 보내고 마지막 대답을 하지 않으면, 서버는 대답을 기다리며 자리를 계속 비워 둡니다.
결국 진짜 이용자가 들어올 자리가 없어집니다. 식당에 예약 전화만 수천 통 걸고 아무도 오지 않는 것과 같습니다.
실행
- 로그 확인: Azure DDoS 방어 기능이 남기는 “완화 흐름 로그(Mitigation Flow Logs)“가 Azure Log Analytics(로그 저장·조회 서비스)에 쌓이고 있는 것을 확인했습니다.
- 탐지 기준 정의: 정상 연결과 달리 비정상적으로 많은 TCP SYN 패킷을 보내는 출발지를 공격 후보로 정의했습니다.
- 자동 조회: 정해진 주기로 Log Analytics에 쿼리(KQL, Azure 로그 조회 언어)를 실행해 기준을 넘는 출발지 IP 목록을 뽑도록 했습니다.
- 자동 차단: PowerShell 스크립트가 뽑힌 IP를 NSG(Azure 네트워크 보안 그룹, 방화벽 규칙 묶음)의 차단 규칙에 자동으로 추가하도록 만들었습니다.
결과
탐지부터 차단까지 사람의 개입 없이 이어져, 야간·주말 대응 지연을 없앴습니다.
새 솔루션이나 인력 없이, 이미 있던 데이터를 연결하는 것만으로 해결했습니다.
배운 점
새 도구를 들이기 전에 이미 쌓이고 있는 로그로 무엇을 할 수 있는지 먼저 보는 것이 보안 자동화의 출발점입니다.
압박이 큰 상황일수록 당장 막는 것과 함께 같은 상황이 다시 와도 버틸 구조를 만들어야 합니다.