OpenSSHでkeytabファイルの場所を設定できますか?

OpenSSHでkeytabファイルの場所を設定できますか?

Debian jessie で OpenSSH サーバーを実行します。私たちは認証方法の1つとしてKerberosを使用しています。 OpenSSHサーバーにKerberos keytabファイルを配置する標準的な場所はです/etc/krb5.keytab。 keytabファイルを別の場所に配置できるOpenSSH設定オプションはありますか、またはOpenSSHサーバーの実行可能ファイルに場所がハードコードされていますか?

答え1

(移植可能な)OpenSSHコードベースには「keytab」への参照がありませんので、次のkerberos設定にすばやく移動しkrb5.confましょう。

LIBDEFAULTS SECTION
       The following relations are defined in the [libdefaults] section:

       default_keytab_name
              This  relation  specifies  the default keytab name to be used by
              application severs such as telnetd and rlogind.  The default  is
              "/etc/krb5.keytab".  This formerly defaulted to "/etc/v5srvtab",
              but was changed to the current value.

これは、あなたのニーズに応じてグローバルすぎる値でもそうでないかもしれません。

答え2

kerberos keytabファイルKRB5_KTNAMEの場所を指すkerberos環境変数があります。もちろん、グローバルに設定できますが、すべてのアプリケーションが対応するキータブファイルを1つ表示します。

ただし、最終的にアプリケーション構成で明示的に許可されていない場合は、アプリケーションごとにこれを設定する良い方法を見つけました。 kerberos keytab環境変数KRB5_KTNAMEを/etc/default/sshに追加しました(下の残りのファイルはデフォルトで既に存在します)。

/etc/default/ssh
# Default settings for openssh-server. This file is sourced by /bin/sh from
# /etc/init.d/ssh.
 
# Options to pass to sshd
SSHD_OPTS=

KRB5_KTNAME=/etc/krb/host.keytab

上記のファイルはinit.dを指定しますが、多くのsystemdサービスファイルも同じファイルを参照します。 Ubuntu 16.04インストールでは、デフォルトのsshd.serviceファイルの関連部分は次のとおりです。

/lib/systemd/system/sshd.service
[...]
[Service]
EnvironmentFile=-/etc/default/ssh
ExecStart=/usr/sbin/sshd -D $SSHD_OPTS
[...]

もちろん、サービスファイルに「EnvironmentFile」行が含まれていない場合は、上記のように追加するか、KRB5_KTNAME環境変数が定義されているすべてのファイルを指すようにサービスファイルを編集できます。

関連情報