多段 Bastion 環境で Bastion インスタンス内に秘密鍵を置きたくない!
やっと AmazonLinux2 に慣れてきました、那須です。
以前、SSH ポートフォワーディングを使って RDP する記事を書きました。
これ書いてて、Bastion アカウントの Bastion インスタンスに運用対象 VPC の Bastion インスタンスのキーペアを置かないと実現できない仕組みなので、なんか気持ち悪いなーと思ってたんですよね。 なんとかならないものかと…
で、社内の Bastion を整理しようといろいろ調べものをしているうちに↓この記事を見つけました。
これこれ!やりたかったのこういうこと!!
というわけで、先日書いた記事のもうちょっとすっきりしたバージョンを書いておきます。
やりたいこと
図にするとこういうこと。
前提条件
ssh-agent を使いますので、ssh-agent サービスは起動しておいてくださいね。
手順
秘密鍵の登録
手元の PC(Windows10) に各 Bastion インスタンスにログインするために必要なキーペアをダウンロードしておきます。 下記コマンドで ssh-agent に各 Bastion の秘密鍵を登録しましょう。
PS C:\> ssh-add <Bastion アカウントの秘密鍵のパス> PS C:\> ssh-add <運用対象 VPC の秘密鍵のパス>
今どの秘密鍵を登録しているのかは下記コマンドで確認できますよ。
PS C:\> ssh-add -l 2048 SHA256:hogehoge C:\<Path>\bastion1.pem (RSA) 2048 SHA256:hogehoge C:\<Path>\bastion2.pem (RSA)
SSH ポートフォワーディングコマンド実行!
先日書いた記事内のコマンドとの差異は↓これだけです。
実際に実行してみましょう。
PS C:\> ssh -i "Bastion用秘密鍵のパス" -A -t -L 13389:localhost:13389 ec2-user@BastionのAmazonLinux2 ssh -L 13389:WindowsServerのプライベートIP:3389 ec2-user@本稼働のAmazonLinux2 Last login: Wed Dec 12 13:00:56 2018 from xx.xx.xx.xx __| __|_ ) _| ( / Amazon Linux 2 AMI ___|\___|___| https://aws.amazon.com/amazon-linux-2/ [ec2-user@ip-xx-xx-xx-xx ~]$
これで運用対象 VPC のBastion インスタンスにログインできているはずです。
この状態で、localhost:13389 に RDP すると運用対象の Windows Server にログインできますよ。
まとめ
なんらかの原因で bastion アカウントが不正利用された場合でも、秘密鍵がそこになければ運用対象の環境に入られることはこれでなくなりますね。 これで不安要素がまたひとつなくなりました。 とはいえ世の中何が起こるかわからないので、油断せずにセキュリティには注意を払いながら運用していきましょう!