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


29

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

サーバーを管理しやすくするためにroot、RSAキーをに設定し、サーバーに接続www-dataできるようsshにします。私は好きではなかった事はそれだったwww-data.sshディレクトリがに座って/var/wwwいるApacheのデフォルトディレクトリの設定です。私の心配は、Apacheが適切に構成されていない場合、.sshディレクトリが公開される可能性があることです。

~/.ssh/authorized_keys変更AuthorizedKeysFileして、ファイルを中央の場所に移動するソリューションに出会いました/etc/ssh/sshd_config。これには2つの長所があります。キーの単一の場所であり、Apacheの不適切な構成を心配する必要はありません。考えられる唯一の欠点は、すべてのユーザーがサーバーにログインできるようになったことです(明らかに、中央キーファイルの両刃の剣)。

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

サーバー管理に関しては私は環境に優しいですが、悪いことをするために悪名と呼ばれる準備は完全に整っています。:D


1
少なくともインターネット上で公開されている(読み取り専用)公開鍵は最大のリスクではありません...(攻撃者が他の場所で入手した秘密鍵でサーバーにログインできるかどうかを確認できるかもしれませんが、そうではありません。 「Tは、彼らはちょうどそれを得ることによって...)(重大な問題がある場合はあるにログインできるようid_rsaにファイルには~/.ssh、彼らはそれを読むために管理)
ゲルトバンベルクデン

回答:


51

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

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_keysが所有しroot:root、モード755を持っています。キーファイルはroot:root、モード644を所有し、持っています。

他のモードでも動作する可能性がありますが、私はそれらをテストしていません。


3
+1。ただし、他のビットは設定しません。これが必要ないように、%uファイルの所有権をユーザーに設定します。
アーロンコプリー

1
悪意のあるユーザーが他のユーザーへのアクセスを許可する〜/ .ssh / authorized_keysにより多くの公開キーを追加できるという問題に対する適切なソリューション。
bbaassssiiee

ユーザーの認証済みキーファイルのモード600が機能しないことを確認しました。モード644である必要があります
ルイスE.

@bbaassssiieeこの問題は絶対に解決しません。アクセスを許可したい人と秘密鍵を共有することができます(もちろん、この可能性は軽減できますが、この答えは軽減するために絶対にゼロです)
-DylanYoung

1
@DylanYoung私は秘密鍵の共有が可能だと認めています。しかし、chattrを使用すると、authorized_keysファイルへの書き込みアクセスを取り消すことができるため、これらを排他的に配布して、すべてのファイルの1行も保護できます。
bbaassssiiee

15

一般的に言って、私はあなたが提案していることをしません。一般的な前提を破り~/.ssh/authorized_keysます(ユーザーのために働くなど)、質問ですでに言及した問題を導入します。実装前に目立った問題が見られる場合、ソリューションは理想的ではありません。

セキュリティの面でも、すべての人にサービスアカウントを共有させるのはひどい考えだと思います。今はあなただけで、あなたは自分が変更を行っていることを知っています。5人の管理者がいる5年間で、誰が何を変更したかを知り、誰がどのキーを使用したかを監査ログで掘り下げたいと思うでしょう。
人々に自分自身としてログインさsudoせ、特権をエスカレートし、必要なことを何でもするようなものを使用させる方が良いでしょう。


それでもSSHキーを集中化する場合は、Puppetradmindなどの展開システムを調べauthorized_keysて、適切な~user/.ssh/ディレクトリにファイルを管理/配布することをお勧めします(または、SCPを所定の場所に配置する自家製のソリューションをハックします)。
複数のサーバーに展開する場合、古いバージョンのOpenSSH(または新しいバージョンのOpenSSH のディレクティブと適切なスクリプト)のLDAP公開キーパッチを調べて、ユーザーを集中化して配布する必要がないようにすることもできます。ネットワーク全体でキーが使用されますが、それはかなり先のことです。AuthorizedKeysCommand


1
共有引数の+1。その意味を理解するのに少し時間がかかったので、短くしました:〜www-data / .sshディレクトリがまったくないはずなので、Webブラウザによるセキュリティリスクはありません。
チトン

フィードバックをお寄せいただきありがとうございます!私があなたを正しく理解しているなら。私はsshキーでアクセスしrootたりwww-dataアクセスしたりするべきではありませんか?
ギャビンミラー

1
~www-data/.sshディレクトリを持つことはひどいことではありません(適切なアクセス許可があれば実質的なリスクはありません)が、それを使用する~www-data/.ssh場合は、webrootを持たない方がよいでしょう~www-data(webrootを移動するか、www-dataホームディレクトリを移動します)。ユーザーの差別化は、より大きな議論です。私見- jsmithログインが表示される場合は知っていますが、John Smithであることがわかります。www-dataログインが表示された場合は、さらに掘り下げてそれが誰であったかを調べる必要があります。
voretaq7

www-dataにsshキーが必要だったのは、Beanstalk(SCMとデプロイツール)を使用してSFTP経由でデプロイを行っているためです。次に、ftp'ingを行うためにBeanstalkの個別のアカウントを作成する必要がありますか?そこで最適なソリューションは何でしょうか?
ギャビンミラー

1
ほとんどのシステムでの方法AuthorizedKeysFile/etc/ssh/sshd_configデフォルトで%h/.ssh/authorized_keysです。以下%hは、ホームディレクトリのプレースホルダーです。何にそれを設定してからあなたを保つ/some/folder/ssh_keys_by_user/%h/かさえ/root/ssh_keys/%u。それぞれのユーザーに個々のファイルへの書き込みアクセス権を与えて(そして彼だけ)ファイルを標準の場所にリンクし(でln -s /root/ssh_keys_by_user/username /home/username/.ssh/authorized_keys)、前述の仮定を破らないようにすることもできます。
CON-F-使用
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.