13.2.9. サービスの設定: OpenSSH およびキャッシュされたキー
OpenSSH は、2 つのシステム間で安全な、暗号化された接続を作成します。あるマシンが別のマシンに対して認証してアクセスを許可します。認証は、サーバー接続またはそのマシンのユーザー用のマシン自体になります。OpenSSH の詳細は、14章OpenSSH を参照してください。
この認証は、認証ユーザーまたはマシンを識別する 公開鍵と秘密鍵のペア を使用して実行されます。マシンにアクセスしようとしているリモートマシンまたはユーザーがキーペアを提示します。その後、ローカルマシンはそのリモートエンティティーを信頼するかどうかを選択します。信頼される場合、そのリモートマシンの公開鍵は
known_hosts
ファイルまたは authorized_keys
のリモートユーザーに保存されます。リモートマシンまたはユーザーが再度認証を試みるたびに、ローカルシステムは最初に known_hosts
ファイルまたは authorized_keys
ファイルをチェックして、リモートエンティティーが認識され、信頼できるかどうかを確認します。存在する場合には、アクセスが許可されます。
最初の問題は、これらのアイデンティティーを確実に検証する際に生じます。
known_hosts
ファイルは、マシン名、その IP アドレス、および公開鍵のトリプレットです。
server.example.com,255.255.255.255 ssh-rsa AbcdEfg1234ZYX098776/AbcdEfg1234ZYX098776/AbcdEfg1234ZYX098776=
known_hosts
ファイルは、さまざまな理由ですぐに古くなる可能性があります。たとえば、IP アドレスを介して DHCP サイクルを使用しているシステム、新しい鍵を定期的に再発行することも、仮想マシンまたはサービスをオンラインおよび削除することもできます。これにより、ホスト名、IP アドレス、およびキートリプレットが変更されます。
管理者は、セキュリティーを維持するために、現在の
known_hosts
ファイルを消去して維持する必要があります。(またはシステムユーザーは、提示されるマシンと鍵を受け入れることで、キーベースのセキュリティーのセキュリティー上のメリットを否定します。)
さらに、マシンとユーザーの両方について問題として、キーをスケーラブルな方法で配布しています。マシンは、暗号化されたセッションの確立の一環として鍵を送信できますが、ユーザーはキーを事前に指定する必要があります。鍵を継続的に伝播して更新するのは、管理作業が困難です。
最後に、SSH キーとマシン情報はローカルでのみ維持されます。
known_hosts
ファイルが均一に更新されていないため、一部のシステムで認識され、他のシステムで信頼されないマシンまたはユーザーが存在する可能性があります。
SSSD の目的は、認証情報をキャッシュとしてサーバーすることです。これには、マシンおよびユーザーの SSH 公開鍵の認証情報キャッシュとして機能することが含まれます。OpenSSH は、キャッシュされた鍵を確認するように SSSD を参照するように設定されています。SSSD は Red Hat Linux の Identity Management(IPA)ドメインを ID として使用し、Identity Management は実際に公開鍵とホスト情報を保存します。
注記
Identity Management ドメインに登録または結合した Linux マシンのみが、OpenSSH の鍵キャッシュとして SSSD を使用できます。その他の Unix マシンおよび Windows マシンは、
known_hosts
ファイルで通常の認証メカニズムを使用する必要があります。
ホストキーに SSSD を使用するように OpenSSH の設定
OpenSSH は、ユーザー固有の設定ファイル(
~/.ssh/config
)またはシステム全体の設定ファイル(/etc/ssh/ssh_config
)で設定されます。ユーザーファイルはシステム設定よりも優先され、パラメーターで最初に取得した値が使用されます。このファイルのフォーマットおよび規則は、14章OpenSSH で説明されています。
ホストキーを管理するために、SSSD には sss_ssh_knownhostsproxy のツールがあり、2 つの操作を実行します。
- Identity Management サーバーから公開鍵キーを取得し、
/var/lib/sss/pubconf/known_hosts
ファイルに保存するように SSSD に要求します。 - ソケット(デフォルト)またはプロキシーコマンドのいずれかを使用して、ホストマシンとの接続を確立します。
このツールの形式は以下のとおりです。
sss_ssh_knownhostsproxy [-d sssd_domain] [-p ssh_port] HOST [PROXY_COMMAND]
短い引数 | 長い引数 | 説明 |
---|---|---|
HOSTNAME | チェックおよび接続するホストのホスト名を指定します。OpenSSH 設定ファイルでは、トークンである %h を指定できます。 | |
PROXY_COMMAND | SSH クライアントへの接続に使用するプロキシーコマンドを渡します。これは、ssh -o ProxyCommand=値 の実行に似ています。このオプションは、コマンドラインまたは別のスクリプトを使用して sss_ssh_knownhostsproxy を実行する場合に使用されますが、OpenSSH 設定ファイルには必要ありません。 | |
-d sssd_domain | --domain sssd_domain | 指定のドメインのエントリーで公開鍵のみを検索します。指定のない場合は、SSSD は設定済みのすべてのドメインで鍵を検索します。 |
-p port | --port port | このポートを使用して SSH クライアントに接続します。デフォルトでは、これはポート 22 です。 |
この SSSD ツールを使用するには、
ssh_config
または ~/.ssh/config
ファイルに 2 つのパラメーターを追加または編集します。
- SSH クライアント(ProxyCommand)への接続に使用するコマンドを指定します。これは sss_ssh_knownhostsproxy で、必要な引数とホスト名を使用します。
- SSSD ホストファイルの場所を指定します(グローバル既知のホストファイル)。
たとえば、設定されたすべての SSSD ドメインで公開鍵を検索し、ポートとホストを指定して接続します。
ProxyCommand /usr/bin/sss_ssh_knownhostsproxy -p %p %h GlobalKnownHostsFile /var/lib/sss/pubconf/known_hosts
ユーザーキーに SSSD を使用するように OpenSSH の設定
SSSD は、OpenSSH にユーザーの公開鍵を提供できます。鍵は、sss_ssh_authorizedkeys ツールの出力から直接 SSH デーモン
sshd
により読み取られ、ファイルに保存されません。
外部プログラムからユーザーの公開鍵を読み取るように
sshd
を設定するには(この場合は sss_ssh_authorizedkeys ツール)、/etc/ssh/sshd_config
ファイルの AuthorizedKeysCommand ディレクティブを使用します。
sss_ssh_authorizedkeys ツールは、Identity Management(IPA)ドメインのユーザーエントリーから SSH 公開鍵を取得し、OpenSSH
authorized_keys
形式で出力できます。コマンドの形式は以下のとおりです。
sss_ssh_authorizedkeys [-d sssd_domain] USER
短い引数 | 長い引数 | 説明 |
---|---|---|
USER | 公開鍵を取得するユーザー名またはアカウント名。OpenSSH 設定ファイルでは、これはトークン %u で表示できます。 | |
-d sssd_domain | --domain sssd_domain | 指定のドメインのエントリーで公開鍵のみを検索します。指定のない場合は、SSSD は設定済みのすべてのドメインで鍵を検索します。 |
この機能は、以下のように
/etc/ssh/sshd_config
で設定されます。
AuthorizedKeysCommand /usr/bin/sss_ssh_authorizedkeys AuthorizedKeysCommandRunAs nobodyこれおよび他のオプションは、man ページの
sshd_config(5)
に記載されています。変更を反映するには、sshd
サービスを再起動する必要があります。