動機
Kerberosで認証サーバーを立てているが、1台しかない認証サーバーが死ぬと、全部死ぬ。
Kerberosって、多重化できないの?
本家を見ながらやったらできたっぽいので、メモ。
思い出しながら書いているので、抜けがあるかも。
前提
- 元々KDCが動作している環境であること
 
環境
OS選択に深い意味はありません。
元々動作しているマスターKDC
- OpenBSD 6.3
 - Heimdal 7.5
 
これから立てるスレーブKDC
- FreeBSD 11.2
 - FreeBSD付属のHeimdal
 
KDCを指定する設定
krb5.confの場合
[realms]セクションのレルムのブロックの中で、kdcの行を、複数記述する。
[realms]
EXAMPLE.ORG = {
                kdc = kdc1.example.org
                kdc = kdc2.example.org
                :
}
krb5.confのサンプルを見ると、KDCが複数あるレルムがあることに、今気づく。
DNSのSRVレコードの場合
SRVの行を、複数記述する。
HeimdalのDNSの説明によると、RFC2782を見よとある。
RFC2782では、SRVの後に続く数値は、優先度で、数値が小さい方が優先度が高い。
_kerberos._udp          IN      SRV     0 0 88 kdc1.example.org.
_kerberos._tcp          IN      SRV     0 0 88 kdc1.example.org.
_kerberos._udp          IN      SRV     10 0 88 kdc2.example.org.
_kerberos._tcp          IN      SRV     10 0 88 kdc2.example.org.
これも、HeimdalのDNSの説明の例で、SRVが複数あることに、今気づく。
マスターKDCの設定
プリンシパルの追加
host/ホスト名に加えて、iprop/ホスト名を追加する。
kdc1# ktutil get -p hoge/admin host/kdc1.example.org
kdc1# ktutil get -p hoge/admin iprop/kdc1.example.org
実際には作ったのを持ってきて設置してしまったので、動かなかったらすいません。
本家でktutil get初めて知った…。
スレーブの指定
/var/heimdal/slavesに、プリンシパルで指定する。
iprop/kdc2.example.org@EXAMPLE.ORG
ipropd-masterを起動する
kdc1# rcctl ipropd-master enable
kdc1# rcctl ipropd-master start
スレーブKDCの設定
プリンシパルの追加
host/ホスト名に加えて、iprop/ホスト名を追加する。
kdc2# ktutil get -p hoge/admin host/kdc2.example.org
kdc2# ktutil get -p hoge/admin iprop/kdc2.example.org
m-keyの設定
マスターから/var/heimdal/m-keyを持ってくる。
…で、合っているんだろうか。
rc.confの設定
kdcとipropd_slaveを動くようにする。
ipropd_slave_masterとはややこしい名前だが、ipropd_slaveに指定する、マスターの名前。
kdc_enable="YES"                        # Run a kerberos 5 KDC (or NO).
kadmind_enable="NO"             # Run kadmind (or NO)
kpasswdd_enable="NO"            # Run kpasswdd (or NO)
ipropd_slave_enable="YES"       # Run Heimdal incremental propagation daemon
                                # (slave daemon).
ipropd_slave_master="kdc1.example.org"               # master node name.
起動
kdc2# /etc/rc.d/ipropd_slave start
kdc2# /etc/rc.d/kdc start
確認
マスターでの転送状況の確認
kdc1# cat /var/heimdal/slaves-stats
Status for slaves, last updated: 2018-08-24T03:19:42
Master version: 36
Name                         Address              Version  Status  Last Seen
iprop/kdc2.example.org@EXAMPLE.ORG  IPv4:192.168.100.11       36  Up      2018-08-24T03:17:42
何か転送されているらしい。
マスターの停止
kdc1# rcctl stop kdc
kinit
kdc2$ kinit hoge@EXAMPLE.ORG
kdc2$ klist
数秒待った後、チケットが取得できていれば、スレーブを参照している模様。