설명
0.0.0.0/0 또는 ::/0을 허용하는 인바운드 규칙은 지정한 프로토콜과 포트에 대해 모든 소스 주소를 허용합니다. 특정 포트 하나만 열려 있어도 내부 전용 서비스에는 과도한 범위일 수 있습니다. 실제 인터넷 도달 가능 여부는 연결 자원과 네트워크 경로에 달려 있습니다.
공개 웹 서비스처럼 전체 클라이언트를 받아야 하는 경우도 있으므로 목적을 확인하고 관리·데이터베이스·내부 API의 접근과 분리하세요.
잠재적 영향
- 내부 전용 서비스에 불필요한 외부 연결이나 비밀번호 추측 시도가 늘어날 수 있습니다.
- 과도한 소스 허용과 취약한 서비스가 결합되면 데이터 노출이나 서비스 중단으로 이어질 수 있습니다.
해결 방법
- 내부 서비스의 전체 주소 규칙을 제거하고 승인된 클라이언트 대역이나 적절한 애플리케이션 보안 그룹만 소스로 허용하세요.
- 공개 서비스는 별도 규칙과 그룹으로 필요한 프로토콜·포트만 허용하고 IPv4와 IPv6 범위를 모두 검토하세요.
- 연결된 모든 보안 그룹과 경로를 확인하고 필요한 연결은 성공하며 불필요한 연결은 차단되는지 시험하세요.
예시
TCP 3306을 사용하는 서비스의 보안 그룹 발췌입니다. 실제 DB 포트와 VPC·연결 자원을 확인하고 예제 사설 대역을 승인된 애플리케이션 주소로 바꾸세요.
변경 전
hcl
resource "aws_security_group" "database_access" {
ingress {
from_port = 3306
to_port = 3306
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
}
TCP 3306으로 들어오는 연결을 모든 IPv4 소스에 허용합니다. 모든 포트를 열거나 DB 인증을 생략하는 설정은 아닙니다.
변경 후
hcl
resource "aws_security_group" "database_access" {
ingress {
from_port = 3306
to_port = 3306
protocol = "tcp"
cidr_blocks = ["10.0.0.0/16"]
}
}
소스를 10.0.0.0/16으로 줄입니다. 여전히 넓은 예제 범위이므로 실제 DB 클라이언트만 남도록 제한하세요.