SSHキーの管理に関するアドバイス


13

多くのSSHキーペアを管理するために見つけたベストプラクティスは何ですか?

私はSSHを使用して、自宅でも職場でも、いくつかのシステムに接続しています。現在、仕事用と家庭用の両方のシステムのキーペアの管理可能なコレクションはかなり小さくなっています。混乱を避けるために、名前付きキーペアを生成するスクリプトがあります。

私のホームネットワークは、ラップトップ(ubuntu)、2つのデスクトップ(ubuntu / fedoraデュアルブート、fedora / windowsデュアルブート)、およびメディアシステム(ubuntu)で構成されています。職場では、個人のラップトップ(自宅での作業に使用)、デスクトップ(fedora)、実稼働システム(RHEL)、およびWindows(ため息)とVM(fedora)を備えたラップトップがあります。これまでのところすべて良い。

(仕事用システムにホームキーペアを置くことも、ホームシステムに仕事用キーペアを置くことにも興味がありません。また、プライベートキーが本番マシンに存在する必要がある他のシステムとのファイル転送を機械化する仮想ユーザーアカウントがあります。他のシステム間でファイルを転送します。)

しかし今、Hadoopが登場します。Hadoopは、100以上のシステムの大規模なクラスターであり、その複雑さ、ユーザー、およびキーペアの数が増えています。次に、キーを管理する必要があります。

(明確にする必要があります。Hadoopクラスターを展開しているクライアントに相談するソフトウェア開発者です。彼らはキーを管理する必要があります。クラスターにアクセスする多くの人がいます。システムに公開キーを配置する必要があります。 Linuxの知識が豊富で、彼らは私に助けを求めました。

公開キーをリモートシステムに公開する必要がある場合、すべての「ハウツー」Webページでは、上書き(>)(既存のキーを破棄)または追加(>>)(これは良い、既存のキーを保持)のいずれかを提案します。しかし、宛先マシン上の各公開鍵を個別に保存し、それらを組み合わせる方が良いと思います。アドバイスを探しています。

多くのキーを管理するために見つけたベストプラクティスは何ですか?

ありがとうございました!


編集:1つの側面は、多くのシステムにキーを配置する必要があることと、特定のユーザーに付随するCRUD(作成、読み取り、更新、削除/無効化)です。つまり、どのキーがどのユーザーに属しているかを識別できる必要があります。


ユーザーまたはホストのキーペアについて話していますか?sshfpDNSに公開鍵の署名を入れることにより、ホストキーの問題を解決します。ユーザー資格情報については、OpenSSH証明書を調べるか、Spacewalkやpuppetなどを使用してすべてのキーペアを中央の場所に保存し、必要に応じて展開することができます。新しいサーバーをクライアントとして設定し、ファイルの最新バージョンを展開するだけなので、おそらく後者が必要だと思われます。
ブラッチリー

私は別のラップトップ(fedora)、MyBook Liveネットワークディスク(linuxを実行)、ハードドライブを待機する2つの構築済みデスクトップ、さらに2つのホームHadoopクラスター(学習)を構築する計画を持っています。ええ、私は鍵管理を理解する必要があります。
ChuckCottrill

回答:


12

通常、クライアントマシンごとに1つ以上のキーを使用しないでください(「一般的に」強調)。あなたの質問を適切に理解しているかどうかはわかりませんが、すべてのリモートシステムに個別のキーがあると言っているのなら、間違いを犯しています。

Sshは公開鍵暗号を使用します。リモートシステムにインストールするキーは公開キーです。このキーを他の場所で再利用してもまったく問題はありません。保護する必要があるのは秘密キーであり、個人のシステムに残ります。

また、秘密キーを共有ではなく1つのクライアントのみに配置することをお勧めします。これは、クライアントが危険にさらされた場合に、その1つのキーのみを取り消すことができるようにするためです。


さて、公開鍵を何百ものシステムに公開する方法を尋ねている場合、これを行うにはいくつかの方法があります。

最も一般的な方法は、共有ホームディレクトリを使用することです。すべてのシステムでNFS(または他のネットワークファイルシステム)をマウント(または自動マウント)します。

もう1つの方法は、sshの新機能を利用することです。という設定ディレクティブAuthorizedKeysCommandです。基本的には、公開鍵を検索する必要があるたびにsshdが実行するコマンドです。このコマンドは、クエリされるユーザーの公開鍵をそのSTDOUTに書き込むだけです。これは主に、ホームディレクトリをマウントしていないが、中央認証サーバー(FreeIPAはこれを利用します)。

もちろん/home、中央サーバーからcron job rsync onなどの他のことを実行できます。しかし、それは一般的な慣行ではありません。


自宅には8台のマシンがあり、クラウドには「必要に応じてスケーリングされる」可変数の「サーバー」があります。300個のサーバーインスタンスにスケールアップするときに300個のクライアントキーを持つのはばかげています。だから私は16の公開鍵を持っています(8ホストごとに2ユーザー)。ハードマシンの場合、3か月ごとにキーを押します。クラウドインスタンスの場合、カスタムイメージに統合されます。
スカペレン

2

公開キーをリモートシステムに公開する必要がある場合、すべての「ハウツー」Webページでは、上書き(>)(既存のキーを破棄)または追加(>>)(これは良い、既存のキーを保持)のいずれかを提案します。しかし、宛先マシン上の各公開鍵を個別に保存し、それらを組み合わせる方が良いと思います。私はアドバイスを探しています。

私は、公開鍵を保存して任意の利点が表示されないの両方.ssh/authorized_keys、別のファイルに。

* authorized_keys *ファイルに保存されている実際のキーを見ると、キーの起源に関する人間が読めるメタ情報がすでに含まれていることがわかります。たとえば、user@foo通常の公開鍵には次のようなエントリがあります。

ssh-rsa AAAAB3Nza...LiPk== user@example.net

したがって、* authorized_keys *ファイルから特定のキー(特定のユーザーにアタッチされている)の検査/抽出/削除が非常に簡単になります。

ユーザーIDは実際には自由形式の「コメント」フィールドなので、指定されたキーを識別するために必要と思われる情報をそこに入力できます。

いずれの場合でも、リモートリソースにアクセスする必要がある「ユーザー」に対してのみキーペアを生成する必要があります。おそらく、各hadoopホストから他のhadoopホストにログインする必要はありません。むしろ、すべてのhadoopホストにアクセスする必要があるいくつかの管理マシンがあります。管理マシンごとに1つのキーペアのみが必要で、すべてのhadoopホストに各公開キーをインストールします。


各ユーザーは独自のキーを生成します。各ユーザーがキーの生成元の一部としてusername @ hostnameを提供する必要があると言っていると思います。これは、そのusername @ hostnameを強制するスクリプトが提供されることを意味しますか?
ChuckCottrill

キーの作成方法に依存します。たとえばssh-keygen、フォームのコメントを追加しuser@hostます。他のキージェネレーター(パテに付属しているものなど)はそれをしないかもしれません。しかし、はい、各キーにユーザー/ホストの組み合わせを識別するコメントフィールドがあることを確認する小さなスクリプトを作成するのは簡単です。
ウムラウト


0

実装が非常に簡単で、複数のユーザーを追加するという点でもう少し柔軟性を可能にする別の方法は、使用することです。 https://userify.com/

サーバーの異なるグループを定義し、それらのサーバーに対して異なるユーザーのキーを有効または無効にすることができます。

超簡単なインストールと管理。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.