Cloud Armor를 사용한 Traffic Blocklisting

김민형·2023년 5월 8일
0

GCP - Infra

목록 보기
1/14

Cloud Armor


DDoS 공격과 교차 사이트 스크립팅(XSS), SQL 삽입(SQLi)과 같은 애플리케이션 공격을 포함한 여러 유형의 위협으로부터 Google Cloud 배포를 보호할 수 있는 서비스.

사실 클라우드의 LB를 사용하면 기본적으로 엣지에서 DDoS 공격을 어느정도 방어해주긴 하나 확실하게 어플리케이션을 보호하고 액세스를 제어하기 위해 사용할 수 있다.

Google Cloud Armor의 IP blocklists/allowlists을 사용하면 사용자 및 악성 트래픽에 최대한 가까운 Google Cloud 엣지에서 HTTP(S) LB에 대한 액세스를 제한하거나 허용할 수 있다. 
이렇게 하면 악의적인 사용자 또는 트래픽이 리소스를 소비하거나 Virtual Private Cloud(VPC) 네트워크에 들어가는 것을 방지할 수 있다.

VPC 네트워크에 들어가는 것을 방어할 수 있는 이유는 GCP와 AWS 차이에서 언급한 것처럼 GCP의 LB는 AWS와 다르게 VPC 밖에서 생성되어 전 세계 Google POP(접속 지점)의 Google 네트워크 엣지에서 구현되기 때문.
HTTP(S) LB로 전달되는 사용자 트래픽은 사용자에게 가장 가까운 POP로 들어간 다음 Google의 글로벌 네트워크를 통해 사용 가능하고 용량이 충분한 가장 가까운 백엔드로 로드 밸런싱 된다.

인프라 구성

아래 시작 스크립트를 넣어줘서 인스턴스 템플릿 생성 (이미지 : Debian 11, http 허용 )

#! /bin/bash
apt-get update
apt-get install apache2 -y
service apache2 restart
ZONE=$(curl "http://metadata.google.internal/computeMetadata/v1/instance/zone" -H "Metadata-Flavor: Google")
echo '<!doctype html><html><body><h1>Web server</h1><h2>This server is in zone: ZONE_HERE</h2></body></html>' | tee /var/www/html/index.html
sed -i "s|ZONE_HERE|$ZONE|" /var/www/html/index.html

위의 템플릿을 사용하여 MIG 생성
여러 영역, 인스턴스는 최대 3개, 여기선 Autoscaling 사용x

ALB 생성
프론트엔드 구성

백엔드 구성(CDN 사용 체크 해제)

상태 확인

LB 외부 IP로 접속
새로고침을 계속 눌러보면 LB를 여러 영역에 걸처서 생성했으므로 us-central-1 리전의 다른 영역들이 번갈아 나올 것이다.

GCP는 기본적으로 Global LB이므로 us가 아닌 australia-southeast1에 테스트 VM 생성 후 아래 명령어로 테스트

curl -m1 <LB IP주소>

액세스 되는 것 확인

Traffic Blocklisting

액세스 테스트 VM에서 로드 밸런서에 대한 액세스를 차단 목록에 추가하는 보안 정책 생성.
이 정책을 사용하여 악의적인 클라이언트의 액세스를 차단할 수 있다.

HTTP LB에 액세스하려는 클라이언트의 외부 IP 주소를 식별하는 방법중 BigQuery에 VPC Flow logs에서 캡처한 트래픽을 로드할 수 있으므로 BigQuery에서 네트워크 트래픽을 분석할 수도 있다.
VPC Flow Logs - Analyzing Network Traffic 참고

Cloud Armor 보안 정책은 Layer 7 필터링을 제공하고 일반적인 웹 공격 또는 기타 Layer 7 속성에 대한 수신 요청을 스크래핑하여 LB 백엔드 서비스 또는 백엔드 버킷에 도달하기 전에 트래픽을 차단한다.

아래 LB들의 백엔드 서비스에 사용 가능

  • 전역 외부 HTTP(S) LB
  • 전역 외부 HTTP(S) LB(기본)
  • 외부 TCP 프록시 LB
  • 외부 SSL 프록시 LB

(하이브리드나 멀티 클라우드 아키텍처에서 애플리케이션을 보호하는 경우 백엔드는 internet NEG여야 함.)

보안 정책 생성

테스트 VM 외부 IP 차단 규칙 생성

기본 규칙을 거부로 설정하고 승인된 사용자/IP 주소만 허용할 수도 있음.

테스트 VM에서 다시 LB에 액세스
(정책이 적용되는데 몇 분 걸릴 수도 있음.)

Block된 액세스 로그 확인

[Cloud Armor를 사용한 Traffic Blocklisting]
https://www.cloudskillsboost.google/focuses/1232?catalog_rank=%7B%22rank%22%3A1%2C%22num_filters%22%3A0%2C%22has_search%22%3Atrue%7D&%3Bparent=catalog&%3Bsearch_id=5489793&hl=ko

profile
Solutions Architect (rlaalsgud97@gmail.com)

0개의 댓글