GCE의 방화벽에서 ssh를 제한하면서 GCP 브라우저의 ssh도 허용

하고 싶은 일



SSH 제한된 NW 등, ssh 할 수 없기 때문에 클라우드상의 서버에 액세스 할 수 없다.
그런 환경에서 유용한 것이 GCP 브라우저에서 ssh 기능.
GCP의 콘솔 화면에서 GCE의 WEB 터미널을 시작할 수 있다.
GCP의 이 기능은 수수함이 마음에 든다.

공식 이미지


그러나이 기능은 ssh 권한과 공용 IP 부여가 필요합니다.
보안 정책은 서버에 ssh 제한이 필요하지만 액세스 경로로 GCP 브라우저의 ssh를 사용하려는 경우 참고.

(2020/11/13) 더 좋은 방법이 나왔기 때문에 이쪽의 기사 참조

GCP 브라우저에서 ssh 필요조건



GCP 브라우저의 ssh 기능이지만,
GCE 방화벽에서 외부 SSH를 제한하려고 하거나,
전역에서 액세스할 수 있는 공용 IP 주소가 없는 노드이거나 액세스할 수 없습니다.
이유는 다음과 같습니다.

공식에서 발췌


  • 포트에서 SSH 액세스를 허용하는 방화벽 규칙이 없습니다. 포트 22의 SSH 액세스는 모든 Compute Engine 인스턴스에서 기본적으로 활성화되어 있습니다. 액세스를 사용 중지하면 브라우저의 SSH가 작동하지 않습니다. 22 이외의 포트에서 sshd를 실행하는 경우 사용자 지정 방화벽 규칙을 사용하여 해당 포트에 대한 액세스를 활성화해야 합니다.
  • SSH 액세스를 허용하는 방화벽 규칙이 활성화되었지만 GCP Console 서비스에서 연결을 허용하도록 구성되지 않았습니다. 브라우저 기반 SSH 세션의 소스 IP 주소는 GCP Console에서 동적으로 할당되며 세션마다 다를 수 있습니다. 이 기능을 작동하려면 모든 IP 주소에서 연결하거나 공개 SPF 레코드을 사용하여 검색할 수 있는 Google IP 주소 범위에서 연결을 허용해야 합니다.

  • 공개 SPF 레코드를 허용 IP로 설정



    2019/9/3 시점의 공개 SPF 레코드 은 다음과 같다.

    _netblocks.google.com
    >nslookup -q=TXT _netblocks.google.com 8.8.8.8
    "v=spf1 ip4:35.190.247.0/24 ip4:64.233.160.0/19 ip4:66.102.0.0/20 ip4:66.249.80.0/20 ip4:72.14.192.0/18 ip4:74.125.0.0/16 ip4:108.177.8.0/21 ip4:173.194.0.0/16 ip4:209.85.128.0/17 ip4:216.58.192.0/19 ip4:216.239.32.0/19 ~all"
    

    _netblocks2.google.com
    >nslookup -q=TXT _netblocks2.google.com 8.8.8.8
    "v=spf1 ip6:2001:4860:4000::/36 ip6:2404:6800:4000::/36 ip6:2607:f8b0:4000::/36 ip6:2800:3f0:4000::/36 ip6:2a00:1450:4000::/36 ip6:2c0f:fb50:4000::/36 ~all"
    

    _netblocks3.google.com
    >nslookup -q=TXT _netblocks3.google.com 8.8.8.8
    "v=spf1 ip4:172.217.0.0/19 ip4:172.217.32.0/20 ip4:172.217.128.0/19 ip4:172.217.160.0/20 ip4:172.217.192.0/19 ip4:108.177.96.0/19 ip4:35.191.0.0/16 ip4:130.211.0.0/22 ~all"
    

    GCE의 방화벽 규칙에 위의 _netblocks.google.com 세그먼트와 _netblocks3.google.com 세그먼트를 ssh 허용합니다.
    ※IPv6는 GCE로 서포트하고 있지 않으므로 불필요
    ( 공식: IPv6은 아직 Compute Engine에서 지원되지 않으므로 비활성화되었습니다. )

    소감



    위의 조치라면,
    - 허용하는 IP 범위 넓은
    - 퍼블릭 IP 없이는 브라우저 ssh 할 수 있는 발판(Bastion) 서버를 이용한다
    - 언젠가 공개 SPF 레코드가 바뀌면 좋다.
    라고 하는 곳이 남아, 해결해 온 감은 없다.

    GCE는 기본적으로 SSH 허용되며 (키 인증으로 외부 액세스 제한),
    BeyondCorp 그런 생각이 베이스에 있는 것일까라고 생각하지만,
    브라우저로부터의 ssh는 글로벌로부터가 아니고, GCP의 프라이빗으로부터 가능하게 하는지, 적어도 허가 IP의 범위를 좁히면 좋겠다-라고 생각한다.

    좋은 웹페이지 즐겨찾기