보안 그룹 인바운드 접근 범위 점검 필요

보안 그룹의 인바운드 주소 범위가 필요한 클라이언트보다 넓지 않은지 확인하고 접근을 최소화하세요.

설명

보안 그룹이 업무에 필요한 범위보다 넓은 출발지 CIDR을 허용하면 의도하지 않은 호스트도 해당 서비스에 연결을 시도할 수 있습니다. 넓은 사설 대역도 신뢰 경계를 넘는 접근을 허용할 수 있으므로 사설 주소라는 이유만으로 모든 호스트를 신뢰해서는 안 됩니다.

적절한 범위는 연결된 리소스와 승인된 클라이언트에 따라 달라집니다. 작은 CIDR이라도 불필요한 주체를 포함할 수 있으며, 실제 연결에는 포트·프로토콜, 라우팅, 다른 보안 그룹과 서비스 인증도 영향을 줍니다.

잠재적 영향

  • 접근이 필요 없는 호스트의 서비스 탐색이나 로그인 시도를 허용할 수 있습니다.
  • 여러 리소스가 그룹을 공유하면 한 규칙의 불필요한 접근 허용이 여러 서비스에 영향을 줄 수 있습니다.

해결 방법

  • 연결된 리소스와 필요한 통신을 확인하고 승인된 출발지, 포트와 프로토콜만 허용하세요. 가능한 환경에서는 보안 그룹 참조를 사용하세요.
  • 리소스에 적용되는 모든 그룹을 함께 검토하고 불필요한 범위를 제거하세요. CIDR 크기만으로 적절성을 판단하지 마세요.
  • Ansible의 purge_rules가 기존 규칙에 미치는 영향을 확인하고 유지할 전체 인바운드 규칙을 정의하세요. 변경 후 필요한 연결과 거부할 연결을 시험하세요.

예시

vpc_id 변수에 실제 VPC를 지정하고 실행 환경에 AWS 인증을 구성하세요. 두 예시는 같은 그룹의 대안 구성이며 TCP 80 접근 범위만 비교합니다. 실제 서비스가 사용하는 포트와 승인된 클라이언트 주소에 맞게 조정하세요.

변경 전

yaml
- name: example ec2 group
  amazon.aws.ec2_security_group:
    name: example
    description: an example EC2 group
    vpc_id: "{{ vpc_id }}"
    region: eu-west-1
    rules:
      - proto: tcp
        from_port: 80
        to_port: 80
        cidr_ip: 0.0.0.0/0

모든 IPv4 출발지에서 TCP 80으로 들어오는 연결을 허용합니다.

변경 후

yaml
- name: example ec2 group2
  amazon.aws.ec2_security_group:
    name: example
    description: an example EC2 group
    vpc_id: "{{ vpc_id }}"
    region: eu-west-1
    rules:
      - proto: tcp
        from_port: 80
        to_port: 80
        cidr_ip: 10.1.1.1/32

출발지를 10.1.1.1/32로 제한합니다. 이 주소가 승인된 클라이언트의 실제 주소인지 확인하고 같은 리소스에 적용된 다른 그룹의 허용 규칙도 점검하세요.

참조