web-dev-qa-db-ja.com

可能な限り厳格なセキュリティを維持しながら、NATの背後にあるサーバーに適切にSSH接続するにはどうすればよいですか?

AmazonAWSにVPCがあります。インターネットゲートウェイに接続するパブリックサブネットで実行されているNATサーバーがあります。VPC内のさまざまなプライベートサブネットで実行されているサーバーがたくさんあります。次のサーバーにSSHで接続したいと思います。はプライベートサブネットにあります。すべてのサーバーはAWSLinux(CentOS)を実行しています。

現在、秘密鍵を使用してNATサーバーにSSHで接続できます。NATサーバーは、現在の開発IPからのSSH接続のみを許可します。次にSSHで接続できます。プライベートサブネット内のサーバーは、それらのサーバーでSSHログインを設定した場合、またはNATサーバーにキーファイルを配置してからSSHに使用した場合のみ)。セキュリティのために、私はこれらのことのどちらも行うべきではありません。

この接続を確立するための好ましいベストプラクティスの方法はありますか? Apple OSXを実行している自宅の開発マシンからの単一のSSH呼び出しに接続する方法があるはずです。

4
T. Brian Jones

ゲートウェイに秘密鍵を置くべきではありません、そしてあなたはそうする必要はありません:-)

必要なときにポート転送にNATゲートウェイを使用できるように、ローカルSSH構成をセットアップします。

接続するホストへのローカル転送を設定するエントリを~/.ssh/configに作成します。

Host natgw-fwd
        User ec2-user
        HostKeyAlias natgw-fwd.my.domain
        HostName 54.182.32.11
        LocalForward 1025 10.0.2.1:22

次に、HostKeyAliasで転送されたホストごとに1つのエントリを追加します。

Host internal-one
        User ec2-user
        HostKeyAlias internal-one.ec2.internal
        HostName localhost
        Port 1025

トンネルを1つのシェルにまとめます。

ssh -C -v natgw-fwd

別のシェルの内部ホストに接続します。

ssh internal-one

Dshのようなツールのように、シェルまたは2つに加えて、多くの「クイック+ショート」接続を使用する場合、単一接続のセットアップとティアダウンの遅延がより顕著になり、ControlMasterControlPath接続共有を有効にします。このようなシナリオではエージェントやX11を使用することはめったにないので、制限は気になりません。

3
Florenz Kley

私はいくつかの調査を行い、あなたが求めていることに関連しているように見える記事を見つけました。

SSHおよび要塞サーバー

デフォルトでは、EC2のLinuxインスタンスは、SSHユーザー名とパスワードの代わりにSSHキーファイルを認証に使用します。キーファイルを使用すると、誰かがパスワードを推測してインスタンスにアクセスしようとする可能性を減らすことができます。ただし、要塞ホストでキーペアを使用すると、問題が発生する可能性があります。プライベートサブネット内のインスタンスに接続するには秘密キーが必要ですが、要塞に秘密キーを保存しないでください。

1つの解決策は、クライアントでSSHエージェント転送(ssh-agent)を使用することです。これにより、管理者は、要塞に秘密鍵を保存せずに、要塞から別のインスタンスに接続できます。これが、この投稿で説明するアプローチです。

http://blogs.aws.Amazon.com/security/post/Tx3N8GFK85UN1G6/Securely-connect-to-Linux-instances-running-in-a-private-Amazon-VPC

記事が推奨するように、要塞サーバーを作成し、クライアントでSSHエージェント転送を使用することで解決策が見つかることを願っています。

3
Don King

@Don Kingの答えは非常に役に立ちました、そしてここに彼が提案した チュートリアル があります。 OSXとWindowsの説明があります。

これは、ローカルOSXマシンからログインしたときに行ったことの概要です。これは、基本インフラストラクチャがVPCですでに正しいことを前提としています。詳細については、これを参照してください チュートリアル

  1. プライベートサブネット内のサーバーのセキュリティグループへの接続を許可するNATセキュリティグループでアウトバウンドSSH接続を開きます。

  2. NATセキュリティグループからの接続を許可する、プライベートサブネット内のサーバーのセキュリティグループでインバウンドSSH接続を開きます。

  3. OSXでは、public_key.pemをローカルキーチェーンに追加します。ssh-add -K .aws/public_key.pem

  4. ローカルマシンからNAT -A(ssh-agent)を使用)へのSSH:ssh -A ec2-user@ip_of_nat

  5. NATからパブリックサブネット内のサーバーへのSSH:ssh ec2-user@ip_of_private_server

潜在的な問題:

  • oSX/etc/ssh_configファイルでForwardAgentがyesに設定されていることを確認してください。デフォルトではyesである必要があります。
0
T. Brian Jones