raspbian buster@Raspberry pi3 b+の上に、MIT Kerberos認証サーバーを立てる手順をまとめます。
インストール
sudo apt install krb5-admin-server krb5-kdc
設定
KDCサーバー
/etc/krb5kdc/kdc.conf
[kdcdefaults]
kdc_ports = 750,88
[realms]
${realm domain} = {
admin_keytab = FILE:/etc/krb5kdc/kadm5.keytab
key_stash_file = /etc/krb5kdc/stash
acl_file = /etc/krb5kdc/kadm5.acl
max_life = 10h 0m 0s
max_renewable_life = 7d 0h 0m 0s
default_principal_flags = +preauth
}
/etc/krb5kdc/kadm.acl
root/admin@* * */*@*1
KDCクライアント
/etc/krb5.conf
[libdefaults]
default_realm = ${default domain}
[realms]
${realm domain} = {
kdc = ${kdc domain} # なくても良い
admin_server = ${kadmin domain}
database_module = openldap_ldapconf
default_domain = ${domain}
}
[domain_realm]
{domain} = {realm domain}
サーバーの起動
sudo systemctl start krb5-admin-server
sudo systemctl start krb5-kdc
認証サーバーの操作
管理者principalの追加
sudo kadmin.local [-r ${realm}]
を実行すると、認証サーバー管理用の対話型プログラムが起動します。これを使って、リモート管理用のprincipalを作ります。
kadmin.local
addprinc root/admin[@${realm}]
ユーザーprincipalの追加
kadmin.local
addprinc ${user}[@${realm}]
パスワードの設定を求められるので、任意のパスワードを設定します。
サービスprincipalの追加
サービスを提供するサーバー上で、
sudo kadmin -p root/admin [-r ${realm}]
を実行し、認証サーバー管理用の対話型プログラムを起動する。
kadmin
addprinc -randkey ${type}/${FQDN}[@${realm}]
ktadd ${type}/${FQDN}[@${realm}]
randkeyオプションを付けなかった場合は、普通にパスワードを設定します。randkeyオプションを付けた場合は、鍵がランダムに生成されるので、パスワードの設定は必要ありません。そのため、パスワードでの認証はできないので、ktaddでサーバー上のkeytab追加される鍵情報を使って認証します。
ktaddで鍵をkeytabに追加するときは、鍵が新たに作られます。それに伴い、古い鍵は使えなくなるので、keytabを用いた認証ではSingle Sign On的なことはできません。
SSHの認証にKerberosを使う
過去の記事を参照してください。Kerberos認証を使うことにより、Single Sign Onが実現できます。