설명
보안 그룹에서 서비스 포트를 0.0.0.0/0이나 ::/0에 허용하면, 네트워크 경로가 있는 외부 클라이언트가 연결을 시도할 수 있습니다. 포트 번호만으로 서비스의 용도나 공개의 적절성을 판단할 수는 없습니다. 실제 서비스, 프로토콜과 필요한 클라이언트를 확인하세요.
실제 연결에는 라우팅, 리소스의 주소, 연결된 보안 그룹과 호스트 제어도 영향을 줍니다. 접근 범위 제한은 서비스 인증과 보안 업데이트를 대신하지 않습니다.
잠재적 영향
- 필요한 클라이언트보다 넓은 범위에서 서비스 탐색이나 로그인 시도가 가능해질 수 있습니다.
- 도달 가능한 서비스에 취약점이나 불필요한 관리 기능이 있으면 악용 기회가 늘어날 수 있습니다.
해결 방법
- 각 포트의 실제 서비스와 프로토콜을 확인하고 불필요한 수신 규칙을 제거하세요. 내부·관리 서비스는 승인된 주소나 지원되는 보안 그룹 참조로 제한하세요.
- 공개 서비스는 필요한 포트만 허용하고 인증과 서비스 보안 설정을 함께 점검하세요. IPv4·IPv6, 연결된 모든 그룹과 네트워크 경로를 확인하세요.
- 적용할 수신 규칙 전체와
purge_rules설정을 검토하세요. 설정에서 빠진 기존 규칙이 제거될 수 있으므로, 변경 후 필요한 연결은 유지되고 불필요한 외부 접근은 차단되는지 시험하세요.
예시
실제 vpc_id와 승인된 클라이언트의 allowed_client_cidr를 제공하고 실행 환경의 AWS 인증을 사용하세요. 두 예시는 같은 그룹의 대안 구성입니다. TCP 8001–8002가 실제 서비스에 필요한 포트라는 전제이며, 리소스 연결과 라우팅은 별도로 필요합니다.
변경 전
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: 8001
to_port: 8002
cidr_ip: 0.0.0.0/0
TCP 8001–8002를 모든 IPv4 출발지에 허용합니다.
변경 후
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: 8001
to_port: 8002
cidr_ip: "{{ allowed_client_cidr }}"
서비스 포트는 유지하면서 출발지를 승인된 클라이언트 범위로 제한합니다. 해당 범위가 실제 필요한 주소만 포함하는지 확인하세요.