모든 포트를 전체 인터넷에 허용한 보안 그룹

모든 주소에 전체 포트나 프로토콜을 허용하지 말고 실제 서비스에 필요한 연결만 허용하세요.

설명

모든 IPv4(0.0.0.0/0) 또는 IPv6(::/0) 주소에 전체 포트나 모든 프로토콜을 허용하면 필요하지 않은 서비스까지 접근 범위에 포함될 수 있습니다. TCP 전체 포트 허용은 모든 프로토콜 허용과는 다르지만, 두 경우 모두 실제 요구 사항보다 넓은 접근을 만들 수 있습니다.

보안 그룹은 허용 규칙을 합산합니다. 일부 규칙을 제한해도 다른 연결 그룹이 같은 접근을 허용할 수 있으며, 실제 연결에는 주소·경로·호스트 방화벽·서비스 상태도 영향을 줍니다.

잠재적 영향

  • 접근 가능한 임시 서비스, 관리 도구나 디버그 포트가 외부 연결 시도에 노출될 수 있습니다.
  • 불필요한 서비스에 취약점이 있으면 침해나 데이터 유출로 이어질 수 있습니다.

해결 방법

  • 업무에 필요한 출발지, 프로토콜과 포트를 확인하고 전체 허용 규칙을 필요한 최소 범위로 교체하세요.
  • 내부 서비스는 승인된 사설 주소나 지원되는 보안 그룹 참조로 제한하고 관리 트래픽을 별도로 통제하세요.
  • 연결된 모든 그룹의 IPv4·IPv6 규칙을 확인하세요. 변경 후 필요한 통신은 동작하고 불필요한 연결은 차단되는지 시험하세요.

예시

실제 VPC를 지정하고 두 번째의 10.10.10.0/24를 실제 허용할 클라이언트 대역으로 바꾸세요. 인스턴스 연결, 서비스와 네트워크 경로는 별도로 준비해야 합니다. TCP 80을 허용하는 것만으로 HTTP 서비스나 TLS가 구성되지는 않습니다.

변경 전

yaml
Parameters:
  myVPC:
    Type: AWS::EC2::VPC::Id
Resources:
  InstanceSecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: Allow all traffic from anywhere
      VpcId:
        Ref: myVPC
      SecurityGroupIngress:
        - IpProtocol: tcp
          FromPort: 0
          ToPort: 65535
          CidrIp: 0.0.0.0/0

모든 IPv4 주소에 전체 TCP 포트 범위를 허용합니다. UDP 등 다른 프로토콜까지 허용하는 규칙은 아닙니다.

변경 후

yaml
Parameters:
  myVPC:
    Type: AWS::EC2::VPC::Id
Resources:
  InstanceSecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: Allow only required web traffic
      VpcId:
        Ref: myVPC
      SecurityGroupIngress:
        - IpProtocol: tcp
          FromPort: 80
          ToPort: 80
          CidrIp: 10.10.10.0/24

지정된 내부 대역의 TCP 80만 허용합니다. 해당 대역 전체에 접근이 필요한지 확인하고 전송 데이터에 필요한 암호화도 구성하세요.

참조