Blocking an IP address
- 클라이언트로부터 요청을 받았을 때 애플리케이션까지 가는 과정에서
때로는 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 주소 필터이을 어디에 구성할지 등이 중요
'Cloud > AWS' 카테고리의 다른 글
[SAA] EC2 인스턴스 고가용성 (0) | 2022.05.03 |
---|---|
[SAA] AWS의 고성능 컴퓨팅 (HPC) (0) | 2022.05.03 |
[SAA] AWS의 캐싱 전략 (0) | 2022.05.03 |
[SAA] AWS의 이벤트 처리 (0) | 2022.05.03 |
[SAA] AWS 백업 (0) | 2022.05.02 |