6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

GCEのファイアウォールでsshを制限しながら、GCPのブラウザからのsshもできるようにする

Last updated at Posted at 2019-09-03

やりたいこと

SSH制限されたNWなど、sshできないのでクラウド上のサーバーにアクセスできない。
そんな環境で役に立つのが、GCPのブラウザからのsshの機能。
GCPのコンソール画面から、GCEのWEBターミナルを起動できる。
GCPのこの機能は地味に気に入っている。

公式の画像
image.png

しかし、この機能は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の範囲を狭めてほしいなーと思う。

6
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?