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環境変数が定義されているすべてのファイルを指すようにサービスファイルを編集できます。