web-dev-qa-db-ja.com

authorized_keysの中心的な場所は良い考えですか?

次のスタックを実行するようにクラウドサーバーを構成しています。Ruby、Passenger、Apache、 Ubuntu 10.04(Lucid Lynx)の下で。

サーバーを管理しやすくするプロセスで、RSAキーをrootwww-dataにセットアップして、サーバーにsshできるようにします。私が気に入らなかったのは、www-data.sshディレクトリがApacheのデフォルトのディレクトリ設定である/var/wwwに置かれていたことです。私の心配は、Apacheが適切に設定されていない場合、.sshディレクトリが公開される可能性があることです。

~/.ssh/authorized_keysAuthorizedKeysFileを変更して、/etc/ssh/sshd_configファイルを中央の場所に移動するソリューションに出会いました。これには2つの長所があります。鍵を1か所で保管し、Apacheの設定が悪いことを心配する必要がありません。私が思いつくことができる唯一の欠点は、すべてのユーザーがサーバーにログインできるようになったことです(明らかに中央の鍵ファイルの両刃の剣です)。

この構成で見逃したものはありますか?自分を過剰に公開しましたか、またはこれは個々のauthorized_keysファイルよりも優れたソリューションですか?

私はサーバー管理に関してはgreenですが、悪いことをするために悪い名前と呼ばれる準備ができています。 :D

30
Gavin Miller

すべてのキーファイルを同じディレクトリに集中化し、同じファイルに混在させることはできません。

次のようにsshd_configファイルを設定するだけです。

AuthorizedKeysFile  /etc/ssh/authorized_keys/%u

サーバー上:

  • www-dataキーは/etc/ssh/authorized_keys/www-dataにあります
  • ルートキーは/etc/ssh/authorized_keys/rootにあります

アクセス権に関して、これらの設定はsshdによって受け入れられます:

/etc/ssh/authorized_keysroot:rootが所有し、モード755を持っています。キーファイルはroot:rootが所有し、モード644を持っています。

他のモードも機能する可能性がありますが、テストしていません。

52
mahn

一般的に言えば、私はあなたが示唆していることをしません。これは一般的な仮定(ユーザーにとって~/.ssh/authorized_keysが機能するなど)に違反し、質問ですでに述べた問題を引き起こします。実装前に明白な問題が見られる場合、それはソリューションが理想的ではないことを意味します。

セキュリティの観点からも[〜#〜]ひどい[〜#〜]アイデアだと思いますすべての人にサービスアカウントを共有してもらいます。今のところはあなただけです。あなたが変更を加えているのはあなたです。 5年間で5人の管理者がいる場合、誰が何を変更したかを知り、監査ログを調べて、誰がどのキーをいつ使用したかを確認する必要があります。
自分でログインし、Sudoまたは同様のものを使用して特権を昇格させ、必要なことをすべて実行する方がよいでしょう。


それでもSSHキーを一元化したい場合は、 Puppet または radmind のようなデプロイメントシステムを調べてください/ authorized_keysファイルを適切な~user/.ssh/ディレクトリに配布します(またはSCPがそれらを所定の場所に配置する自家製のソリューションをハックアップします)。
複数のサーバーに展開する際に、古いバージョンのOpenSSHの LDAP公開鍵パッチ (または AuthorizedKeysCommandディレクティブ およびOpenSSHの新しいバージョンの適切なスクリプト)を使用して、ユーザーを一元化でき、ネットワーク全体にキーを配布する必要はありませんが、そうなる可能性がありますかなり遠くまで行ってください。

15
voretaq7