コンテンツにスキップ

SSHポートを公開しない踏み台運用

固定IPゲートウェイを立てると、次に悩むのがSSHをどう守るか。ポート番号を変えてもfail2banを入れても、OpenSSHをインターネットに晒している 事実は変わりません。

実は、Tailscaleを入れた時点でこの問題は根っこから消せます。TailscaleはアウトバウンドUDPだけでNATを越えるので、Lightsail側のインバウンドポートは全部閉じてしまえる んです。

Tailscale SSH

sudo tailscale set --ssh   # 他の広告フラグと併せて実行

これでTailnet内のデバイスから ssh user@gateway するだけで入れます。認証はSSH鍵ではなくTailscaleのSSO(Google/GitHub等)とACLに集約されるので、鍵の配布・ローテーションの面倒からも解放されます。ACLで「このタグの付いたデバイスからのみSSH可」といった絞り込みも可能。

※無料のPersonalプランだとTailscale SSHの対象ホストは5台までですが、踏み台1台の用途なら余裕です。

移行は段階的に

いきなり既存SSHを閉じるのはさすがに怖い。というわけで、実際はこう進めました:

  1. 併設: Tailscale SSHを有効化。既存のSSHポートはそのまま
  2. 並行運用: Tailscale経由の接続を1〜2週間使ってみる
  3. 閉鎖: Lightsailコンソールのファイアウォールで既存SSHポートのインバウンドを削除

万一Tailscaleがおかしくなっても、LightsailはコンソールからブラウザベースのSSH(ポート22)が使えるので、完全に締め出される事故は防げます。緊急用の経路として sshd は22番で待ち受けさせたまま、Lightsailファイアウォール側では閉じておく、という構成もアリです。

最終形は「インターネットに公開しているポート:ゼロ」。攻撃面が「公開サービスへの総当たり」から「Tailnetの参加認証を破ること」に変わるので、難易度が段違いに上がります。