RDP 접근을 넓게 허용하는 GCP 방화벽

RDP 연결을 모든 주소에서 허용하면 불필요한 인증 시도와 서비스 공격에 노출될 수 있습니다. 관리에 필요한 소스와 경로로 접근을 제한하세요.

설명

RDP는 Windows VM을 원격으로 관리하는 데 사용하며, 일반적으로 TCP 포트 3389로 연결합니다. 0.0.0.0/0이나 ::/0에서 이 포트에 접근하도록 허용하면 관리가 필요하지 않은 클라이언트도 도달 가능한 RDP 서비스에 연결을 시도할 수 있습니다.

Google Cloud 방화벽에서 source_ranges와 source_tags를 함께 지정하면 둘 중 하나에 해당하는 소스를 허용합니다. 따라서 소스 태그를 추가하는 것만으로 전체 주소 범위를 좁힐 수는 없습니다.

잠재적 영향

  • 도달 가능한 RDP 서비스가 무차별 대입 공격이나 유출된 자격 증명을 이용한 로그인 시도의 대상이 될 수 있습니다.
  • 서비스의 취약점이나 계정 침해가 악용되면 VM과 해당 계정이 접근할 수 있는 자원이 영향을 받을 수 있습니다.

해결 방법

  • RDP가 필요한 VM과 관리자를 확인하고 허용 소스를 관리자 네트워크 등 필요한 범위로 제한하세요. 모든 포트 또는 넓은 포트 범위를 허용하는 다른 규칙에도 3389가 포함되는지 확인하세요.
  • IAP TCP 전달이나 VPN을 통한 관리 경로를 사용하고, 직접 공개된 RDP 허용 규칙은 제거하거나 제한하세요. 관리 경로에 필요한 권한과 방화벽 설정을 함께 구성하세요.
  • 적용되는 방화벽 정책과 운영체제의 접근 제어를 점검하고, 필요한 관리 연결은 동작하며 다른 소스의 연결은 차단되는지 확인하세요.

예시

다음 과거 설정 예제는 그대로 배포할 수 없습니다. test_object의 밑줄은 방화벽 이름에 허용되지 않으며, google.cloud 1.14.0 모듈은 예제에 함께 지정된 소스·대상 옵션 조합을 거부합니다. 실제 구성에서는 유효한 이름과 지원되는 옵션 조합을 사용하세요.

첫 번째 설정

yaml
- name: rdp_in_port
  google.cloud.gcp_compute_firewall:
    name: test_object
    source_ranges:
      - "0.0.0.0/0"
    allowed:
      - ip_protocol: tcp
        ports:
          - "22"
          - "80"
          - "3389"
    target_tags:
      - test-ssh-server
      - staging-ssh-server
    source_tags:
      - test-ssh-clients
    project: test_project
    auth_kind: serviceaccount
    service_account_file: "/tmp/auth.pem"
    state: present

0.0.0.0/0에서 TCP 포트 3389를 허용하도록 작성된 설정입니다. 함께 지정한 source_tags가 이 전체 주소 범위를 제한하지는 않습니다.

비교 설정

yaml
- name: create a firewall
  google.cloud.gcp_compute_firewall:
    name: test_object
    allowed:
    - ip_protocol: tcp
      ports:
      - '80'
    target_tags:
    - test-ssh-server
    - staging-ssh-server
    source_tags:
    - test-ssh-clients
    project: test_project
    auth_kind: serviceaccount
    service_account_file: /tmp/auth.pem
    state: present

비교 설정은 TCP 포트 80만 지정합니다. RDP 관리가 필요하다면 별도의 제한된 관리 경로를 구성하고, 다른 방화벽 규칙의 허용 범위도 함께 확인하세요.

참조