설명
전체 주소에서 여러 서비스 포트로 들어오는 접근을 허용하면 필요하지 않은 서비스에도 연결을 시도할 수 있습니다. 실제 위험은 해당 리소스에 연결된 그룹, 실행 중인 서비스, 라우팅과 인증에 따라 달라집니다. 업무상 필요한 포트 범위가 있을 수 있으므로 서비스 목적과 승인된 클라이언트를 기준으로 검토하세요.
TCP·UDP의 포트와 ICMP의 유형·코드는 의미가 다릅니다. 모든 프로토콜을 허용하는 규칙에서는 포트 설정으로 접근이 제한되지 않을 수 있습니다.
잠재적 영향
- 외부 연결 경로가 있으면 불필요하게 열린 서비스가 탐색이나 취약점 악용 시도에 노출될 수 있습니다.
- 다른 그룹이 같은 접근을 허용하면 한 규칙만 좁혀도 원치 않는 연결이 계속 허용될 수 있습니다.
해결 방법
- 필요한 서비스, 프로토콜, 포트와 클라이언트를 확인하세요. 공개 서비스는 필요한 포트만 허용하고 관리·내부 서비스는 승인된 주소나 보안 그룹으로 제한하세요.
- 연결된 모든 그룹의 허용 규칙을 함께 검토하고 유지할 전체 규칙을 정의하세요. 같은 접근을 여러 규칙으로 나누는 것만으로 범위가 줄지는 않습니다.
- 기존 규칙 제거 설정을 확인하고 변경 후 실제 클라이언트 경로에서 필요한 연결과 차단할 연결을 시험하세요.
예시
실제 vpc_id와 승인된 관리 클라이언트의 admin_cidr을 지정하고 실행 환경의 AWS 인증을 사용하세요. 같은 그룹의 대안 구성이며 리소스 연결이나 인터넷 경로는 별도로 필요합니다.
변경 전
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: 82
cidr_ip: 0.0.0.0/0
모든 IPv4 출발지에 TCP 80–82를 허용합니다. 서비스가 사용하지 않는 포트도 포함되어 있는지 확인하세요.
변경 후
yaml
- name: example ec2 group v2
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
- proto: tcp
from_port: 22
to_port: 22
cidr_ip: "{{ admin_cidr }}"
공개 범위를 TCP 80으로 줄이고 SSH는 승인된 관리 주소로 제한합니다. TCP 80의 공개가 실제 서비스에 필요한지와 admin_cidr의 범위를 따로 확인하세요.