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を閉じるのはさすがに怖い。というわけで、実際はこう進めました:
- 併設: Tailscale SSHを有効化。既存のSSHポートはそのまま
- 並行運用: Tailscale経由の接続を1〜2週間使ってみる
- 閉鎖: Lightsailコンソールのファイアウォールで既存SSHポートのインバウンドを削除
万一Tailscaleがおかしくなっても、LightsailはコンソールからブラウザベースのSSH(ポート22)が使えるので、完全に締め出される事故は防げます。緊急用の経路として sshd は22番で待ち受けさせたまま、Lightsailファイアウォール側では閉じておく、という構成もアリです。
最終形は「インターネットに公開しているポート:ゼロ」。攻撃面が「公開サービスへの総当たり」から「Tailnetの参加認証を破ること」に変わるので、難易度が段違いに上がります。