web-dev-qa-db-ja.com

SSH公開鍵を配布するためのシステム

数人が管理するさまざまなシステムがあります。これらのシステムにアクセスするには、SSH公開鍵認証を使用することを選択しました。管理アカウントのパスワードを管理または共有する必要がなく、さまざまなシステムのパスワードを記憶する必要がない(秘密鍵へのパスフレーズのみ)必要がなく、すべてのリモートコマンドと対話する(パスワードを入力する)必要がないため、これはうまく機能します。 。

問題は、システムにインストールされている公開鍵を何らかの方法で管理する必要があることです。人々が行き来し、鍵が危険にさらされたり、責任が変わったりする可能性があります(今日、あるシステムへのアクセスを許可された人が、別のシステムへのアクセスを明日許可される場合があります)。現在、それを必要とするすべてのアカウントで〜/ .ssh/authorized_keysファイルを手動で編集することで管理していますが、これは多くの作業であり、間違いを犯しがちです。

そのようなシナリオで公開鍵を管理する準備ができているツールはありますか?独自のソリューションはありますか?それとも、この方法でシステムを管理するというアイデア全体に欠陥がありますか?

26
Jacek Konieczny

Pulegiumですでに述べたように、 PuppetChefBcfg2 または cfengine などの一般的な構成管理ソフトウェアは、仕事。

authorized_keysファイルはそれほど複雑ではないので、rsyncを使用することもできますまたは、gitまたはhgのような(D)SCMでこのファイルを管理します。サーバーの1つに「マスター」ファイルがあり、rsync/git/hg /…を介してそれを提供します。他のすべてのサーバーでは、定期的にマスターコピーを取得し(変更されている場合)、それを正しいローカルの場所にコピーするcronジョブを実行します。一体、これは純粋なHTTPまたはFTPでも機能します。

一番下の行は、authorized_keysファイルの「マスター」コピーを1つ用意し、それを更新します。 「クライアント」(現在のauthorized_keysファイルを持っているはずのコンピューター)にマスターサーバーからそれをフェッチさせ、ローカルに展開させます。

18
joschi

OpenSSHで利用できるパッチがあり、LDAPサーバーからの公開鍵を使用できますが、これは本当にLDAPサーバーに対して認証/アカウントチェックが行われる場合にのみ意味があります(これは私の環境のセットアップ方法です)。また、LDAP構成と同じくらい安全です(したがって、SSLを使用して鍵を検証する必要があります)。

パッチと詳細については http://code.google.com/p/openssh-lpk/ を参照してください。デフォルトでこのパッチが付属しているOSは知りませんが、FreeBSDを実行している場合、ポートからOpenSSHを使用する場合、これはオプションのパッチです。

11
voretaq7

私はファイアウォールルールで同じことをする非常に簡単なソリューションを実行します

hosts.confファイルの例:

192.168.0.1
192.168.2.99
192.168.2.100

distribute.sh:

#!/bin/bash
for d in `cat ./hosts.conf`; do
  echo "copying to $d ...";
  scp /root/.ssh./authorized_keys root@$d:/root/.ssh./authorized_keys
done;

それは魔法全体です:-)

5
bmaeser

私は現在チェックアウトしています SSH KeyDB 。これは、役割、サーバー、ユーザーの管理、ユーザーキーの配布、ホストキーの収集などを正確に行うことを目的としています。「場所」と呼ばれるものさえあります。

私はまだそれをすべて試していません、そしてそれが完全に働いているかどうかわかりません。コードはpython=にありますが、かなり扱いやすいように見えるので、ほこりを払って動作させるのはそれほど難しくないはずです。

5
andsens

あなたが解決しようとしている2つの(一般的には3に変わる)異なる問題があります:

  • 認証(あなたは誰ですか?)
  • 承認(このサーバーへのアクセスは許可されていますか?)
  • 監査(あなたは何をしましたか?)

公開鍵認証は、時々認証するための問題のない方法ですが、認証についてはまったく触れていません。公開鍵認証は好きではありません。適切な制御を行っていない限り、(特に内部的に)非常に簡単に侵害できます。

そこで活躍するのが、Kerberosなどのソリューションです。 Windowsの世界では、Active Directoryがこの問題を解決します。 Unixの世界には選択肢がたくさんありますが、これは良いことでも悪いことでもあります。

私は、Red Hat FreeIPA プロジェクトをチェックします。これは、ADのようなKerberos/LDAP/DNSシステムを簡単にすばやく起動して実行できるようにするソフトウェアのバンドルです。

1
duffbeer703

多くの人があなたが何を意味しているのかはわかりませんが、変更しても構わないと思っているのですが、Kerberosは探しているドロイドです。それはあなたの問題をエレガントに解決し、人とマシンの両方を認証します。

1
pboin
1
andsens

Bcfg2bcfg2-accounts とともに使用して、authorized_keysを配布できます。追加ボーナスとして、ユーザーとグループを制御することができます。

Bcfg2は SSHbase を使用して/etc/ssh/ssh_known_hostsを簡単にメンテナンスできるようにします。

1
myroslav