web-dev-qa-db-ja.com

Kerberosチケットの自動更新(無期限)

現在、環境をNISからKerberos + LDAPに切り替えています。

この移行中に、次の状況に遭遇しました。

私たちは家をNFS経由でマウントしますが、これも明らかにKerberos化する必要があります。ただし、ユーザーはすべてターミナルサーバーにログインし、通常はログアウトせず、セッションを一時停止するか、バックグラウンドでジョブを長時間実行しているため、Kerberosチケットが期限切れになり、NFS共有が使用できなくなります。

ユーザーのこれらのチケットを自動的に更新するための最良のオプションは何ですか?

また、ユーザーが旅行に出かけたが、まだジョブが実行されている(Kerberosの最長更新時間よりも長くかかる可能性がある)場合に備えたいので、そのユーザーの完全に新しいチケットを取得する必要があります。チケットのデフォルトの最大更新時間を大幅に延長しないで、この場合の最良の選択肢は何でしょうか?

3
Blackclaws

2018年末で、あなたと同じ質問に遭遇しました。少し掘り下げた後で、事後性についての報告を提供できます。

tl; dr:

  • 「無限の更新」は不可能で、おそらく決してないでしょう
  • SSSDは、パスワードを使用してログインするとチケットを更新します
  • SSSDは将来のある時点ですべてのチケットを更新します

まず、「無期限に」持つことはできません。 Kerberosチケットには、KDCサーバー設定である更新可能な最大存続期間があり、この時間を過ぎて1つのチケットを更新することはできません。あなたができる唯一のことは、ユーザーの資格情報を保存し、ユーザーに代わって新しい新しいチケットを要求することです。

そうは言っても、そうする必要はありません。おそらく、「システムセキュリティサービスデーモン」またはSSSDを実行している可能性があります。その場合、組み込みの更新オプション_krb5_renew_interval_および_krb5_renewable_lifetime_を使用して、ユーザーのチケットを自動的に更新できます。

_[domain/yourdomain.example.com]
krb5_renewable_lifetime = 90d
krb5_renew_interval = 500
_

詳細は _man 5 sssd-krb5_ を調べてください。これらの設定により、SSSDは、ログイン*するたびに更新可能なチケット(最大90日間)を要求し、500秒ごとにチケットのリスト*を確認して、更新可能な既存のチケットを更新します。

元のチケットから90日が経過すると、更新は失敗し、チケットは失われます。ただし、その間にログイン*すると、マシンのロック画面にパスワードを入力した場合でも、SSSDから新しいチケットが取得されます。

*)これまでのところ、とても素晴らしい。残念ながら、いくつかの落とし穴が当てはまります。

私がこれを書いているとき、SSSDはそれ自体が要求したチケットのみを更新できます。これらは、たとえば _pam_sss_ PAMモジュールを通過するすべてのログインです(ただし、これらに限定されません)。

  • 端末で_su $USER_と入力する
  • グラフィカルシェルを介してシステムにログインする
  • グラフィカルシェルによる画面のロック解除
  • PasswordAuthenticationメソッドを使用してSSH経由でログインします。

このリストで特に欠けているのは次のとおりです。

  • 実行中kinit
  • PubkeyAuthenticationメソッドを使用してSSH経由でログインします。
  • GSSAPIAuthenticationメソッドを使用してSSH経由でログインします。
  • GSSAPIDelegateCredentialsオプションがオンのときにSSH経由でログインします。

さて、これはかなり厄介なことですが、当面は本質的に、ユーザーにパスワードの入力を強制するか、自分でチケット更新デーモンを作成することを意味します。現在、この作業を行う別の方法を見つけていません。方法を見つけたら、どなたかコメントをお寄せください。

ただし、これはかなり簡単になるかもしれません。

SSSDは「kerberos cache manager」、つまり sssd-kcm と呼ばれるKCMを提供します。基本的には、カーネルキーリング(klistを実行するときの_KCM:_)の代わりに、そこにチケットを格納する小さなサーバー(_KEYRING:_ klist)または/ tmp内のファイル(klistを実行すると_FILE:_)。

将来のある時点で、SSSDは_sssd-kcm_が実装されたときにallチケット(それ自体が要求したチケットだけでなく)を更新できると期待していますチケット更新。これはまだ発生しておらず、SSSDバグトラッカーの issue 172 で追跡されています。

Red Hatベースのシステム(RHEL、CentOS、Fedora)を実行している場合、SSHDは選択したキャッシュ作成メカニズムを尊重することを学ぶ必要もあります。これは、Red Hatバグトラッカーの issue 1639376 で追跡されます。

4
fat-lobyte

すばやくグーグルすると、 このスレッド

永続的なものを要求する場合は、代わりに(kinitを使用して)新しいチケットを定期的に取得するcronジョブを実行できます。

1
strongline

間違った質問です。長期実行ジョブの場合、keytabを使用したログインを自動化します。そうしないと、デフォルトの7d更新期間がとにかく長すぎます。

0
rhoerbe