설명
용도가 확인되지 않은 포트나 넓은 포트 범위를 모든 IPv4·IPv6 주소에 허용하면 의도하지 않은 서비스까지 접근 가능해질 수 있습니다. 비표준 포트 자체가 취약한 것은 아니며, 잘 알려진 포트 번호를 사용한다고 안전한 것도 아닙니다. 실제 서비스, 프로토콜과 공개 필요성을 기준으로 검토하세요.
잠재적 영향
- 접근 가능한 임시 서비스나 디버그 기능이 외부 접속과 취약점 악용 시도에 노출될 수 있습니다.
- 소유자와 목적이 불분명한 허용 규칙이 남아 변경 관리와 사고 대응이 어려워질 수 있습니다.
해결 방법
- 각 포트의 서비스 소유자와 통신 목적을 확인하고 불필요한 규칙을 제거하세요. 필요한 포트 범위는 서비스 요구에 맞게 제한하세요.
- 승인된 출발지만 허용하고 관리 연결은 사설 경로나 통제된 관리 서비스로 제한하세요. IPv4와 IPv6 허용을 모두 확인하세요.
- 실제 리스닝 서비스, 연결된 모든 보안 그룹과 호스트 제어를 확인하세요. 필요한 통신은 동작하고 불필요한 연결은 차단되는지 시험하세요.
예시
실제 VPC ID를 지정하세요. 인스턴스 연결과 서비스 구성은 포함하지 않습니다. 이 비교는 TCP 23~25가 필요 없고 내부 HTTPS 애플리케이션만 필요한 경우입니다. 두 번째의 IPv4 대역을 실제 클라이언트로 바꾸고 IPv6 클라이언트가 필요하다면 제한된 별도 규칙을 구성하세요.
변경 전
yaml
Parameters:
VpcId:
Type: AWS::EC2::VPC::Id
Resources:
InstanceSecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: Unrestricted source access to a port range
VpcId: !Ref VpcId
PortIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupId: !Ref InstanceSecurityGroup
IpProtocol: tcp
FromPort: 23
ToPort: 25
CidrIpv6: "::/0"
모든 IPv6 주소에 TCP 23~25를 허용합니다. 일반적으로 Telnet에 사용하는 23과 SMTP의 25를 포함하지만, 실제 서비스는 별도로 확인해야 합니다.
변경 후
yaml
Parameters:
VpcId:
Type: AWS::EC2::VPC::Id
Resources:
InstanceSecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: Allow only a required application port
VpcId: !Ref VpcId
PortIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupId: !Ref InstanceSecurityGroup
IpProtocol: tcp
FromPort: 443
ToPort: 443
CidrIp: 10.10.10.0/24
지정된 내부 IPv4 대역의 TCP 443만 허용합니다. 포트 변경만으로 기존 서비스가 HTTPS가 되지는 않으므로 실제 TLS·인증 설정을 검증하세요.