외부에 허용된 포트 범위 점검

외부에 허용된 포트의 실제 용도를 확인하고 필요한 서비스와 출발지만 허용하세요.

설명

용도가 확인되지 않은 포트나 넓은 포트 범위를 모든 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·인증 설정을 검증하세요.

참조