ELB 인바운드 허용 규칙 점검

ELB에 필요한 클라이언트 접근만 허용하고 실제 인바운드 경로를 확인하세요.

설명

ELB에 연결된 보안 그룹들이 필요한 클라이언트와 리스너 포트의 인바운드 통신을 허용하지 않으면 정상 요청이 차단될 수 있습니다. 한 보안 그룹에 규칙이 없더라도 다른 연결된 그룹이나 독립형 규칙에서 접근을 허용할 수 있으므로 실제 적용되는 전체 규칙을 확인해야 합니다.

필요한 인바운드 허용과 과도한 공개 접근을 구분하세요. 규칙을 추가하는 것만으로 라우팅, 리스너나 애플리케이션 인증이 구성되지는 않습니다.

잠재적 영향

  • 필요한 서비스 요청이 차단돼 서비스 이용에 장애가 발생할 수 있습니다.
  • 복구를 위해 임시로 넓은 허용 규칙을 추가하면 원치 않는 클라이언트의 접근 범위가 커질 수 있습니다.

해결 방법

ELB에 연결된 전체 보안 그룹에서 승인된 클라이언트의 리스너 포트 접근을 허용하세요. 독립형 AWS::EC2::SecurityGroupIngress를 사용하면 GroupId가 실제 ELB 보안 그룹을 가리키는지 확인하세요. 대상 인스턴스의 규칙은 별도로 관리하고 라우팅과 실제 요청 처리를 시험하세요.

예시

보안 그룹 연결과 규칙만 보여주는 발췌입니다. 리스너와 ELB 서브넷 설정은 생략했습니다. VpcId를 생략한 보안 그룹에는 해당 리전의 기본 VPC가 필요합니다.

변경 전

yaml
Resources:
  LoadBalancerSecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: ELB security group

  MyLoadBalancer:
    Type: AWS::ElasticLoadBalancing::LoadBalancer
    Properties:
      SecurityGroups:
        - !GetAtt LoadBalancerSecurityGroup.GroupId

이 그룹에는 인바운드 허용을 정의하지 않습니다. 다른 규칙에서도 허용하지 않으면 새 요청이 차단됩니다.

변경 후

yaml
Resources:
  LoadBalancerSecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: ELB security group
      SecurityGroupIngress:
        - IpProtocol: tcp
          FromPort: 443
          ToPort: 443
          CidrIp: 0.0.0.0/0

  MyLoadBalancer:
    Type: AWS::ElasticLoadBalancing::LoadBalancer
    Properties:
      SecurityGroups:
        - !GetAtt LoadBalancerSecurityGroup.GroupId

모든 IPv4 주소에서 TCP 443 접근을 허용합니다. 공개 서비스에 필요한 경우에만 이 범위를 사용하고 내부 서비스는 승인된 소스로 제한하세요. 포트 번호만으로 HTTPS가 구성되지는 않습니다.

참조