nfsv4 + krb5 on jessie
ここが参考になる。
https://www.debian-administration.org/article/570/MIT_Kerberos_installation_on_Debian
あと、krb5-doc パッケージを入れておいて w3m file:///usr/share/doc/krb5-doc/index.html すると krb5 関連のドキュメントを読める。
実は以前も DNS で SRV レコードを作成してサービスの検出に使う方法 (http://web.mit.edu/Kerberos/krb5-1.5/krb5-1.5.4/doc/krb5-install/Hostnames-for-the-Master-and-Slave-KDCs.html) を取っていたのだが、nfs-kernel-server, krb5-{kdc, admin-server} のマシンの HDD とばしてしまって環境つぶしちゃってから、復活させずに放置していたのを jessie に dist-upgrade したのを期に復活させてみた。
以前の nfsv4+krb5 では今となっては脆弱な暗号化通信(すでに weak_crypto とされてる des-cbc-crc:normal)しかサポートされてなかったのだが、古い nfsv4 がいない(後方互換すてられる)なら aes などが使えるので、des-cbc-crc とか使ってるマシンは早めに dist-upgrade したほうが良いと思う。
いろいろ忘れてて苦戦した記録...
DNS での krb5 関連の SRV レコード設定
bind9 での例
/etc/bind/db.example.org
[...]
$ORIGIN example.org.
[...]
server1 A 192.0.2.1
AAAA 2001:db8::1
ntp1 CNAME server1
kerberos CNAME server1
_kerberos TXT "EXAMPLE.ORG kerberos service"
_kerberos._udp SRV 0 0 88 server1
_kerberos-adm._tcp SRV 0 0 749 server1
_kerberos-master._udp SRV 0 0 751 server1
_kerberos-master._tcp SRV 0 0 751 server1
_kpasswd._udp SRV 0 0 464 server1
これで TTL を小さくして serial をあげて systemctl restart bind9 する。スレーブがあるならそっちで rndc retransfer example.org して更新しておく。設定終わったら TTL 元に戻しておいた方がいいと思う。(いじるレコード毎に小さなTTL書くほうがいいかもしれない)
こうすると server1.example.org は ntp1.example.org や kerberos.example.org という fqdn でもアクセスできるようになる。
dig @ns.example.org kerberos.example.orgとかで期待したとおりに動いているか確認する。
dig @ns.example.org _kerberos._udp.example.org SRV
/etc/nsswitch.conf
しばらく /etc/krb5.conf で kerberos.example.org を指定しても kdc へつながらずに悩んだ(kadmin.local はつながるけど kadmin や kinit が接続できない症状がでてた)のだが、/etc/nsswitch.conf を修正するとうまくうごいた。デフォルトでは
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4こうなっているのを、dns を files の直後に持ってきて mdns4_minimal よりも優先する。
hosts: files dns mdns4_minimal [NOTFOUND=return] mdns4
mdns4 って avahi-daemon のだけど、使おうと思ったことないのでなにをどうするものなのかよく知らない...
/etc/krb5.conf
[libdefaults]
default_realm = STAINED-G.LOCAL
dns_lookup_kdc = true
scan_interfaces = true
dns_lookup_realm = true
srv_lookup = true
[...]
[realms]
[...]
EXAMPLE.ORG {
default_domain = example.org
kdc = kerberos.example.org
admin_server = kerberos.example.org
}
みたいに指定しておいて
kinit や kadmin でうまく kdc や admin_server につながればOK。
その他調整が必要な設定ファイル
- /etc/idmapd.conf
[General]
Verbosity = 0
Pipefs-Directory = /run/rpc_pipefs #<-- ここ
#Domain = localdomain
Domain = example.org #<-- ここ
Local-Realm = EXAMPLE.ORG #<-- ここ
[Mapping]
Nobody-User = nobody
Nobody-Group = nogroup
[Translation]
Method = nsswitch,static #<-- ここ
GSS-Methods = nsswitch,static #<-- ここ
[Static]
whoami@EXAMPLE.ORG = iamjon #<-- ここ
- /etc/default/nfs-common
NEED_IDMAPD="yes"
NEED_GSSD="yes"
- /etc/default/nfs-kernel-server
NEED_SVCGSSD=yes
krb5kdc の起動時 (sudo systemctl start krb5-kdc) に Couldn't open logfile [...] というようなエラーが表示されることがある。これ、/etc/krb5.conf と /etc/krb5kdc/kdc.conf の [logging] セクションで kdc = FILE:/var/log/krb5kdc/kdc.log のような指定していて、krb5.conf と kdc.conf で指定違ってたりすると起こる模様..
jessie の krb5.conf(5) を読むとそもそも [logging] セクションの記述がないので、/etc/krb5.conf には [logging]セクションは 記述しない = 削除する のが正解だと思う。
おそらく、以前のバージョンから引き継いで使ってる場合に残っちゃったのではないだろうか。(以前導入した時に私が kdc.conf と混乱して記述しちゃった可能性もないではないが、検索すると結構あちこちで見かけるので..)
0 件のコメント:
コメントを投稿