이번에는 네트워크 보안에 관한 이야기인데
중요한 부분이고 클라이언트로부터 요청을 받았을 때 애플리케이션까지 가는 과정을 조금 더 이해할 수 있을 것이다..!
#0 EC2 인스턴스 사용하기
아주 간단하게 EC2 인스턴스를 사용한 간단한 솔루션 아키텍처부터 알아보자!
VPC의 보안 그룹에서 인스턴스는 공용IP를 써서 공용 액세스가 가능하고 클라이언트들도 EC2 인스턴스에 이렇게 접근이 가능하다!
그래서 클라이언트 차단을 원하면 먼저 VPC 레벨에서 VPC의 네트워크 ACL방어가 1번째 방어선이다.
이 네트워크 ACL에서는 차단 규칙을 만들 수가 있는데 그러면 결과적으로 클라이언트 IP에 대해 간단학 빠르고 저렴하게 클라이언트를 내보내게 된다.
그리고 EC2 인스턴스 보안 그룹에는 차단 규칙을 만들 수 없고 허용 규칙만 가능하다.
그래서 EC2 인스턴스에 액세스 가능한(권한 부여된) 클라이언트들의 서브셋만 알면 IP의 서브셋을 보안 그룹에서 지정해 EC2 인스턴스로 허용하면 된다. 애플리케이션이 글로벌이라면 애플리케이션에 액세스하는 IP주소를 전부 알 수도 없고 보안 그룹도 도움이 되지 않는다. 선택적으로 방화벽 소프트웨어를 EC2 인스턴스에서 실행해 클라이언트의 요청을 거절할 수 있다
만약 요청이 벌써 EC2 인스턴스에 도착했다면 처리가 되고 요청을 처리하는 데에 CPU 비용같은 과금이 발생한다..!
#1 한 단계 더 나아가기 - 로드 밸런서 사용
<ALB>
이 ALB는 VPC 내에서 정의되고 여전히 EC2 인스턴스가 있는데 보안 그룹이 이제 둘이고 상세하세 ALB 보안 그룹과 EC2 보안 그룹이 존재한다. 이 아키텍처에서 로드 밸런서는 클라이언트와 EC2 사이에 위치하고 '연결 종료'를 실행한다,
따라서 클라이언트는 ALB에 연결하고 ALB에서 EC2 인스턴스로 연결을 시작하거나 종료하는 것이다. 이경우 EC2 보안 그룹은 ALB의 보안 그룹을 허용하도록 구성되야 한다.
(EC2 인스턴스가 사설 IP와 클라이언트 측이 아닌 ALB로부터 오는 트래픽을 통해 사설 서브넷에 배포될 수 있기 때문이다.)
보안 그룹의 관점에선 ALB 보안 그룹만 허용해서 안전해지는 것이다!
이제 보안 그룹의 ALB이다. ALB 의 보안 그룹에서는 클라이언트를 허용해야 하고 아는 IP범위가 있어서 보안 그룹을 구성한다. 글로벌 애플리케이션일 경우 모두를 허용해야 하고 방어선은 네트워크 ACL레벨에 있게 된다.
<NLB>
이벤트 개념이고 NLB는 '연결 종료' 를 하지 않는다.
트래픽을 간단하게 살펴보면 실제로 NLB를 거쳐가고 그 과정에서 NLB를 위한 보안 그룹은 없기 때문에 트래픽이 지나가게 된다. 그러니 IP를 새로 만드는 클라이언트는 EC2 인스턴스가 사설 IP를 사용하는 Private 서브넷에 있어도 EC2 인스턴스로 갈 수 있다. 복잡해질 수 있지만 모든 클라이언트의 소스 IP를 안다면 EC2의 보안 그룹에서 정의하면 되지만 클라이언트로부터 IP주소를 하나만 차단하려면 방어를 위해 네트워크 ACL을 사용해야 한다는 것이다.
=> NLB는 보안 그룹이 없고 모든 트래픽이 지나가기 때문에 EC2 인스턴스는 엣지에서 클라이언트의 공용IP를 감지한다.
#2 ALB + WAF
ALB를 살펴보면 WAF를 설치하거나 웹 애플리케이션 방화벽을 설치해서 IP를 차단할 수 있다.
추가 서비스(방화벽 서비스)이기 때문에 좀 비싸지만 필터링이 가능하고 규칙을 만들어서 클라이언트로부터 동시에 많은 요청을 받지 않도록 할 수 있으므로 ALB나 보안이 더 강해진다.
=> WAF는 클라이언트와 ALB 사이에 있는 서비스가 아니라 ALB에 설치한 서비스로, 규칙을 많이 정의할 수 있다.
#3 CloudFront 사용하기
비슷하게 ALB 앞에 CloudFront를 사용하면 CloudFront는 VPC 밖에 위치하는데 그래서 모든 ALB로부터 오는 것은 클라이언트 IP를 알 수 없고 CloudFront Public IP만 알 수 있다, 네트워크 ACL은 VPC 경계선에 있는데 클라이언트 IP를 막는데 도움이 되지는 않는다.
CloudFront로부터의 클라이언트를 막으려면 두 가지 방법이 있는데 만약 국가에 의해 공격당했으면 CloudFront의 지리적 제한 기능을 이용해서 국가를 차단할 수도 있고 특정 IP 하나만 막고 싶다면 WAF나 웹 어플리케이션 방화벽을 사용해서 전처럼 IP주소를 필터링하면 된다.
...
이렇게 아키텍처에 따라 IP주소를 차단하기 위한 방어선이 달라지는데 잘 숙지해놓으면 도움이 될 것이다!
'AWS' 카테고리의 다른 글
IAM Policies의 JSON 문서 살펴보기 (1) | 2024.05.01 |
---|---|
솔루션에 따라 아키텍처 정리해보기 - EC2 가용성 높여보기 (0) | 2024.04.29 |
솔루션에 따라 아키텍처 정리해보기 - SQS&Lambda와 Fan out pattern (0) | 2024.04.23 |
VPC에 대해 조금 더 자세히 알아보자 (5) - VPC Peering, VPC Endpoint (0) | 2024.04.21 |
VPC에 대해 조금 더 자세히 알아보자 (4) - NACL (0) | 2024.04.19 |