UbuntuVPSでMonkeysphereを使用してSSHサーバーに対してユーザーを認証する方法
序章
組織が成長するにつれて、多数のSSHキーとサーバーを管理することは非常に困難になる可能性があります。 組織全体で有効なキーを正しく識別し、無効なキーを削除すると、エラーが発生し、サーバーのセキュリティに大きな影響を与える可能性があります。
さらに、サーバーが変更された場合、サーバーの信頼性を確立できないという警告がユーザーに表示されることがあります。 ほとんどのユーザーは、接続する前にサーバーの主要な指紋を再確認しないため、誰かがサーバーを偽装して中間者攻撃を実行する可能性があります。
これらの問題に対処するために、monkeysphereというプロジェクトが作成されました。 これは、GPGキーとWeb of Trustモデルを活用して、サーバーの資格情報を検証し、ユーザー管理を容易にすることで実現します。
以前のガイドでは、ユーザーに対してサーバーを検証するためにmonkeysphereをセットアップする方法について説明しました。 このガイドで中断したところから続行します。ここでは、GPGキーとサーバー管理者のこれらのユーザーへの信頼のみに基づいて、サーバーに対してユーザーを自動的に認証する方法を学習します。 これにより、ほとんど暗号化された情報ではなく、平易な英語を使用する認証ファイルを作成できるようになります。
このガイドは、前のガイド( server.example.com 、 admin.example.com 、client.example)で中断したセットアップがあることを前提としています。 com と必要な信頼関係が確立されています)。 始めましょう。
SSHサーバー上にID証明書を作成する
SSHサーバーがサーバーに対してユーザーを自動的に認証できるようにするための最初のステップは、識別認証機能を確立することです。 ID証明書は、ユーザーのIDを確立する際に信頼できると指定している人物です。
ほとんどの場合、単純で論理的な選択は、サーバー管理者にログインできるユーザーを識別させることです。 このルートに行きます。 状況によってその責任の分担が必要な場合は、複数のID認証者を作成することもできます。
管理ユーザーの指紋をもう一度取得することから始めましょう。 管理者のコンピューターでは、前回のガイドで使用したのと同じGPGコマンドを使用して、完全なフィンガープリントを取得できます。
gpg --with-colons --fingerprint [email protected]
ここでも、次のような出力行を探しています。
fpr ::::::::: A61256B85307B7ED9AD8D93E9E06881E49E95F19 :
赤で強調表示されているセクションは、ここで必要なものです。
SSHサーバー( server.example.com )で、このキーをID証明書として追加します。 これを行うには、次のように入力します。
Monkeysphere-authentication add-identity-certifier A61256B85307B7ED9AD8D93E9E06881E49E95F19
次に、Monkeysphereは一致するGPG情報をキーサーバーから取得し、それを独自のキーリングに保存します。 このキーは、他のユーザーのIDを確認できるキーとしてマークされます。
SSHユーザーの認証サブキーを生成する
サーバー管理者が正当なユーザーを識別できることを確認したので、クライアント側で少し作業を行う必要があります。
各クライアントは、実際の認証に使用されるGPGサブキーを生成する必要があります。 公開GPGキーはユーザーを識別するために使用されますが、サブキーは実際のログイン手順に使用されます。
The monkeysphere
commandには、認証サブキーを簡単に生成できるようにするサブコマンドが含まれています。 クライアントで、次のように入力します。
monkeysphere gen-subkey
サブキーが生成され、メインキーの下のローカルGPGキーリングに追加されます。
SSHサーバーがこのサブキーを使用して問題のユーザーの内部認証ファイルを生成できるように、キーの変更をキーサーバーに再度アップロードする必要があります。 公開する必要のあるキーは、サブキーの変更を含むメインキーです。 重要な情報を取得するには、次のように入力します。
gpg--list-keysクライアント @fakedomain .com
pub 2048R / 87791BD02014-03-14uidクライアント@fakedomain .com> sub 2048R / 3294D31D 2014-03-14 sub 2048R / 0FECF512 2014-03-14
強調表示されている部分は、サーバーへの送信に使用するキーIDです。 このIDを使用して、キーをサーバーに送り返します。
gpg --keyserver pool.sks-keyservers.net --send-key 87791BD0
サブキーがキーサーバーで使用できるようになったので(伝播に少し時間がかかる場合があります)、このキーを使用して認証ファイルを生成するようにSSHサーバーを構成できます。
SSHサーバーでの認証ファイルの作成
次に、実際の認証ファイルを作成する必要があります。 Monkeysphere認証ファイルは、2つの異なるカテゴリに分類されます。
ユーザーレベルのファイルは、認証ポリシーを確立するために操作する必要があるファイルです。 これらは、ログインを許可する必要のある人を名前と電子メール(GPGにコミットされている)で指定するだけの、単純でわかりやすい英語のファイルです。 これらのファイルは、通常のSSHと同様に、各ユーザーのホームディレクトリのサブディレクトリにあります。 authorized_keys
ファイル。
これらのファイルは、Monkeysphereによって使用され、SSHが上記で作成した各有効なユーザーに関連付けられたサブキーを使用して理解できる認証ファイルを生成します。 Monkeysphereは、ユーザーごとに認証ファイルを生成します。 /var/lib/monkeysphere/authorized_keys
ディレクトリ。
このセクションでは、SSHサーバー上にディレクトリとファイルを作成します。
アクセスを構成するユーザーのホームディレクトリに移動することから始めます。 これを実現するには、管理者権限でサインインする必要があるため、rootユーザーのアクセスを設定しましょう。 ホームディレクトリに、という隠しディレクトリを作成します .monkeysphere
:
cd /root
mkdir .monkeysphere
Monkeysphereは、ユーザーレベルのフォルダーとファイルが有効であると見なすために、それらに対する特定のアクセス許可を必要とします。 具体的には、ファイルまたはディレクトリの所有者以外のユーザーに対する書き込み権限がないことが必要です。
このスキームに一致するようにディレクトリのアクセス許可を設定してから、ディレクトリに移動しましょう。
chmod 755 .monkeysphere
cd .monkeysphere
このディレクトリ内に、というファイルを作成する必要があります authorized_user_ids
. これはユーザーレベルの認証ファイルです。 テキストエディタで作成します。
nano authorized_user_ids
このファイルでは、GPGの場合とまったく同じように、名前と電子メールでユーザーを一覧表示します。 したがって、使用する必要のあるフォーマットを確認するには、クライアントマシンで次のようにもう一度入力します。
gpg--list-keysクライアント @fakedomain .com
pub 2048R / 87791BD02014-03-14uidクライアント@fakedomain .com> sub 2048R / 3294D31D 2014-03-14 sub 2048R / 0FECF512 2014-03-14
したがって、このファイルに入力する必要があるのはこれだけです。
client <[email protected]>
追加の人を追加したい場合は、1行に1人追加するだけです。
client <[email protected]>
admin <[email protected]>
これは、大規模なものよりもはるかに読みやすく、管理しやすいです。 authorized_keys
ファイル。 これらのファイルは古くなる傾向があり、古いキーがまだ有効かどうかを判断するのは困難です。 この方法では、「ボブはこのマシンにアクセスできるべきか」と自問するのは簡単です。 そうでない場合は、単に彼の名前を削除してください。
終了したら、ファイルを保存して閉じます。
ここで、所有者以外の人から書き込み権限を奪うことを忘れないでください。
chmod 644 authorized_user_ids
リモートアクセスを構成するすべてのユーザーに対して、この手順を繰り返します。
内部認証ファイルの生成
ユーザーレベルの認証ファイルが配置されたので、内部認証ファイルを簡単に生成できます。
このコマンドを発行するだけです。
monkeysphere-authentication update-users
このコマンドは、ユーザーレベルの認証ファイルに変更を加えた後に実行する必要があります。
特定のユーザーのみを更新する場合は、引数としてそのユーザーの名前を追加できます。
monkeysphere-authentication update-users root
この手順で生成されたファイルを見てみましょう。 これらが保存されているディレクトリに移動する必要があります。
cd /var/lib/monkeysphere/authorized_keys
内部には、アクセスを構成したシステム上の各ユーザーのファイルが表示されます。 これに対する1つの小さな注意点は、ユーザーレベルの認証ファイルの各ユーザーが、パブリックGPGキーサーバーネットワークで使用可能な関連付けられたサブキーを持っている必要があるということです。
ls
demouser root
ファイルを見ると、次のようなキーが表示されます。
ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQD0CdVIlUptYdZBz/0pn+7XIa2jdzy/VnayAZDXhFdHDTZU0hB8MDGHC9yjUrn9RCMj2NWD3Ls7JjqVAzmRsUn56UwyCJt8/GVmHpeIhYzmUAUjMaaMnjBG3Nhdpm9rsnJt0XVUvOu9oxrvTWYH6ZCVNwsY1O7aX/kQWnaXQW6/B6oiQJ76feZyoLEBR8D/nbxGTtNlkEMcTMTylHN0jHLACJy483SFUkSjHneNK9gNFoxTlUyF/ZBo5+Bo8Uld4iAyhaW7Di4HzfUJzvebZYX1Z1O0yS/db8anSJoZX90MLt7eIFsixuDMS3m31dsX26RI71tJGihvzF0fUsUPDg17
MonkeySphere2014-03-22T13:14:31 client <[email protected]>
ご覧のとおり、これは基本的に正常です authorized_keys
エントリ。 ただし、ユーザー管理を容易にし、ユーザーがGPGを介してキーを動的に更新できるようにするために、これを抽象化しました。
このファイルには、で行ったエントリに関連しない追加の行が表示される場合もあります。 authorized_user_ids
ファイル。 これは、デフォルトで、monkeysphereが既存のエントリを追加するためです。 authorized_keys
生成されたファイルの最後までファイル。 これは、2つのシステム間を移行する際、および何らかの理由で切り替えることができないユーザーのために役立ちます。
これらの新しい認証ファイルを生成したので、SSHデーモンの構成を更新して、各ユーザーのディレクトリ内のファイルではなく、これらのファイルを確認する必要があります。
エディターで構成ファイルを開きます(選択していることを確認してください) sshd_config
、 いいえ ssh_config
):
nano /etc/ssh/sshd_config
このファイル内で、 AuthorizedKeysFile
パラメータ、または存在しない場合は作成します。 値を次のように設定します。
AuthorizedKeysFile /var/lib/monkeysphere/authorized_keys/%u
終了したら、ファイルを保存して閉じます。
ここで、変更を行うためにSSHデーモンを再起動する必要があります。
service ssh restart
認証用にGPGキーを送信するようにクライアントを構成する
これで、認証用に作成したGPGサブキーを受け入れるようにサーバーが完全に構成されました。
通常のパスワードやRSAキーの代わりに、この情報を使用して接続するようにクライアントを構成する必要があります。 Monkeysphereは、 ssh-agent
ユーティリティ。SSH接続の認証の詳細を長期間保存するために使用されます。
次のような1回限りのコマンドを使用すると、エージェント自体を起動せずに試すことができます。
ssh-agent sh -c 'monkeysphere subkey-to-ssh-agent && ssh server.example.com'
これは機能し、GPGキーのパスワードを入力すると、サーバーのアカウントのパスワードを入力しなくてもサーバーに接続できるようになります。
ただし、エージェントセッションを開始することはおそらく価値があります。 次のように入力することで、現在のシェルでこれを行うことができます。
eval $(ssh-agent)
ログインするたびにこれを自動的に開始するために、クライアントのに追加することができます ~/.bash_profile
ファイル:
echo 'eval $(ssh-agent)' >> ~/.bash_profile
いずれの場合も、GPGサブキーをSSHエージェントに追加して、認証に使用できるようにする必要があります。 次のように入力してこれを行います。
monkeysphere subkey-to-ssh-agent
GPGキーのパスワードを入力する必要がありますが、これはセッションごとに1回だけ必要です。
次のように入力すると、受け入れられたことがわかります。
ssh-add -l
2048 2a:1a:1d:52:32:e5:f4:45:b2:a3:ff:d0:c0:6e:69:f6 client <[email protected]> (RSA)
これで、GPGサブキーを使用してアクセスできるアカウントへの入力を求められることなくログインできます。
ssh server.example.com
結論
インフラストラクチャにMonkeysphereをセットアップすると、組織のサーバーと人間の相互作用を管理する持続可能な方法が得られます。 この方法では、すべてのユーザーレベルの認証が平易な英語で行われるため、組織に参加および組織から脱退するサーバー管理者を処理できます。 さらに、攻撃者がサーバーへのアクセスを偽装しようとすることを心配する必要はありません。