sorta kinda...

主にAWS関連ですが、これに限らずいろいろ勉強したことや思ったことを書いていきます。

多段 Bastion 環境で Bastion インスタンス内に秘密鍵を置きたくない!

やっと AmazonLinux2 に慣れてきました、那須です。

以前、SSH ポートフォワーディングを使って RDP する記事を書きました。

nasrinjp1.hatenablog.com

これ書いてて、Bastion アカウントの Bastion インスタンスに運用対象 VPC の Bastion インスタンスのキーペアを置かないと実現できない仕組みなので、なんか気持ち悪いなーと思ってたんですよね。 なんとかならないものかと…

で、社内の Bastion を整理しようといろいろ調べものをしているうちに↓この記事を見つけました。

qiita.com

これこれ!やりたかったのこういうこと!!

というわけで、先日書いた記事のもうちょっとすっきりしたバージョンを書いておきます。

 

やりたいこと

図にするとこういうこと。

f:id:nasrinjp1:20181213222604p:plain
キーペアは Bastion に置きたくない

 

前提条件

ssh-agent を使いますので、ssh-agent サービスは起動しておいてくださいね。

f:id:nasrinjp1:20181213223203p:plain
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 ポートフォワーディングコマンド実行!

先日書いた記事内のコマンドとの差異は↓これだけです。

  • 最初の ssh で -A オプション追加
  • 本稼働の AmazonLinux2 の秘密鍵の指定削除

実際に実行してみましょう。

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 アカウントが不正利用された場合でも、秘密鍵がそこになければ運用対象の環境に入られることはこれでなくなりますね。 これで不安要素がまたひとつなくなりました。 とはいえ世の中何が起こるかわからないので、油断せずにセキュリティには注意を払いながら運用していきましょう!