클라이언트로부터 요청을 받았을 때 애플리케이션까지 가는 과정에서 때로는 IP 주소를 클라이언트로부터 막고 싶어할 수 있으며 이 때 애플리케이션에 액세스를 시도할 때의 방어선을 알아야 함
VPC의 보안 그룹에서 인스턴스는 공용 IP를 써서 공용 액세스가 가능하고 클라이언트들도 EC2 인스턴스에 접근 가능함 그러므로 클라이언트 차단을 원한다면 VPC 레벨에서 VPC의 네트워크 ACL (NACL) 방어가 첫 번째 방어선이고 이 네트워크 ACL에서는 차단 규칙을 만들 수 있음 이는 클라이언트 IP에 대해 아주 간단하고 빠르며 저렴하게 만들 수 있고 클라이언트를 내보내게 됨 이 때 EC2 인스턴스의 보안 그룹에는 차단 규칙을 만들 수 없고 허용 규칙만 가능하므로 EC2 인스턴스에 액세스 가능한 권한이 부여된 클라이언트들의 서브셋만 알면 IP의 서브셋을 보안 그룹에서 지정해 EC2 인스턴스로 허용하면 됨 만약 애플리케이션이 글로벌이라면 애플리케이션에 액세스하는 IP 주소를 전부 알 수 없고 보안 그룹도 도움이 되지 않으며 선택적으로 방화벽 소프트웨어를 EC2 인스턴스에 실행해 클라이언트의 요청을 거절하는 수 있음
만약 요청이 벌써 EC2 인스턴스에 도착했다면 처리가 되고 요청을 처리하는데 CPU 비용이 발생
Blocking an IP address – with an ALB
애플리케이션 로드 밸런서는 VPC 내에 정의되고 여전히 EC2 인스턴스가 있을 때 보안 그룹은 ALB 보안 그룹과 EC2 보안 그룹으로 둘이 됨 로드 밸런서는 클라이언트와 EC2 사이에 위치하고 연결 종료라는 것을 실행하게 되며 클라이언트는 ALB에 연결하고 ALB에서 EC2 인스턴스로 연결을 시작하거나 종료 이 경우 EC2 인스턴스가 사설 IP와 클라이언트 측이 아닌 ALB로부터 오는 트래픽을 통해 사설 서브셋에 배포될 수 있기 때문에 EC2 보안 그룹은 ALB의 보안 그룹을 허용하도록 구성해야 함 ALB의 보안 그룹에서는 클라이언트를 허용해야 하며 아는 IP의 범위가 있어서 보안 그룹을 구성해야 함 만약 글로벌 애플리케이션일 경우 모두를 허용해야 하며 방어선은 네트워크 ACL 레벨에 있게 됨
Blocking an IP address – with an NLB
네트워크 로드 밸런서로는 연결 종료를 하지 않기 때문에 이벤트 개념
실제로 네트워크 로드 밸런서를 거쳐가고 그 과정에서 네트워크 로드 밸런서를 위한 보안 그룹은 없기 때문에 트래픽을 지나감 그러므로 IP를 새로 만드는 클라이언트는 EC2 인스턴스가 사설 IP를 사용하는 사설 서브넷에 있어도 EC2 인스턴스로 갈 수 있음 그러므로 모든 클라이언트의 소스 IP를 안다면 EC2의 보안 그룹에서 정의하면 되지만 클라이언트로부터 IP 주소를 하나만 차단하려면 방어를 위해 네트워크 ACL을 사용해야 함
네트워크 로드 밸런서는 보안 그룹이 없고 모든 트래픽이 지나가므로 EC2 인스턴스는 엣지에서 클라이언트의 공용 IP를 감지 그러므로 이를 위해 아래처럼 웹 애플리케이션 방화벽을 설치해 IP를 차단할 수 있음
Blocking an IP address – ALB + WAF
웹 애플리케이션 방화벽은 추가 서비스이므로 조금 비쌀 수 있지만 이를 설치해 IP를 차단할 수 있음
IP 주소에 대해 복잡한 필터링이 가능하며 규칙을 만들어서 클라이언트로부터 동시에 많은 요청을 받지 않도록 할 수 있으므로 ALB나 보안이 더 강해지게 됨
WAF는 클라이언트와 ALB에 설치한 서비스로 규칙을 많이 정의할 수 있으므로 또 하나의 방어선이라고 할 수 있음
Blocking an IP address – ALB, CloudFront WAF
ALB 앞에 CloudFront를 사용하면 CloudFront는 VPC 밖에 위치하게 되므로 ALB는 모든 엣지 로케이션으로부터 오는 CloudFront의 공용 IP를 허용해야 하고 온라인에 목록이 있게 됨 ALB로부터 오는 것은 클라이언트 IP를 알 수 없고 CloudFront 공용 IP만 알 수 있음 여기서의 네트워크 ACL은 VPC의 경계선에 있으므로 클라이언트 IP를 막는데 도움이 되지 않음
CloudFront로부터의 클라이언트를 막으려면 지리적 제한 기능을 이용해서 클라이언트의 국가를 차단하는 방법이 있고 만약 특정 IP 하나만 막고 싶다면 WAF나 웹 애플리케이션 방화벽을 사용해서 IP 주소를 필터링
위처럼 우리가 가진 아키텍처에 따라 IP 주소를 차단하기 위한 방어선이 달라지며 제대로 하여 전부 결합했을 때 작동이 잘 되게 되므로 보안 그룹 구성, IP 주소 필터이을 어디에 구성할지 등이 중요