一般ユーザーが読めない秘密鍵を使用してSSHを実行できるようにする

一般ユーザーが読めない秘密鍵を使用してSSHを実行できるようにする

マシンごとに1つのアカウント(サポートアクセスアカウント)のみを使用して、少数の人々(サポートと呼ばれる)だけがSSHを介してアクセスできるようにするマシンセット(ここでは顧客マシンと呼ばれる)があるとします。

サポートスタッフは、お客様のコンピュータにログインするためにのみキーを使用できます。また、サポートスタッフが発展してサポートスタッフを離れる人は、顧客のコンピュータにログインできません。したがって、従業員は顧客のコンピュータにログインするために使用される秘密鍵を読むことを禁止されています。また、authorized_keysクライアントコンピュータのファイルを変更することも禁止されています。

この構成を実装するために、サポート担当者がログインし(LDAP認証を使用しますが、これは別の質問です)、秘密鍵を含むSSHエージェントを使用することを考えました。

問題は、サポートチームがSSH秘密鍵を読み取らずに使用できるようにするにはどうすればよいですか?

ユーザーの要求を受け入れ、SSHセッションを開くことができるエージェントシステムでrootとして実行されるデーモンを作成する必要があると思いますが、どうすればよいかわかりません。どんなアイデアがありますか?

ベストアンサー1

実際には、SSH CAを使用し、各サポート担当者が使用するキーに署名し(パスポートなどの独自のSSHキーを持つ必要があります)、/etc/ssh/sshd_config.conf TrustedUserCAKeys /etc/ssh/users_ca.pubSSH CAを使用するようにクライアントサーバーを構成することです。からキーに署名します。これにより、サーバーはCAキー(アクセス権を持つ)で署名されたすべてのキーを受け入れ、認証されたキーに触れることなくサポートされなくなったユーザーのキーを取り消すことができます。

「ssh ca」をすばやく検索すると、このチュートリアルを見つけることができます。https://www.digitalocean.com/community/tutorials/how-to-create-an-ssh-ca-to-validate-hosts-and-clients-with-ubuntu(「ユーザーキーの設定方法」までスクロールダウン) - チュートリアルではUbuntuが言及されていますが、展開には依存しませんが、SSH CAをサポートする最新バージョンのOpenSSHが必要です。

このトピックに関する別の良いブログ投稿は次のとおりです。https://ef.gy/hardening-ssh(「SSH証明書」まで下にスクロールします)。

特に、限られた時間だけ有効なキーに署名できるため、キーが自動的に期限切れになることに注意してください。

おすすめ記事