_ [comp] Kerberos5 ローカルテスト

Krb5OSXKrb5Debian を見つつ、やってみる。 次のような構成とする。

  • realm … EXAMPLE.JP
  • kdc … server.example.jp
  • domain … example.jp
  • dns … dns.example.jp
  • user … foo

以下、全て server.example.jp での作業。 krb5 を install。

# apt-get install krb5-kdc krb5-admin-server krb5-config krb5-user

/etc/krb5.conf を編集。編集・追加部分のみ示す。

[libdefaults]
        default_realm = EXAMPLE.JP

[realms]
        EXAMPLE.JP = {
                kdc = server.example.jp
                admin_server = server.example.jp
                default_domain = example.jp
        }

[domain_realm]
        .example.jp = EXAMPLE.JP
        example.jp  = EXAMPLE.JP

/etc/krb5kdc/kdc.conf を確認。確認部分のみ示す。

[realms]
EXAMPLE.JP = {
                database_name = /var/lib/krb5kdc/principal
                admin_keytab = FILE:/etc/krb5kdc/kadm5.keytab
                acl_file = /etc/krb5kdc/kadm5.acl
                key_stash_file = /etc/krb5kdc/stash

KDB を作成。

# kdb5_util create -s

KDC database master key を聞かれるので設定する。/var/lib/krb5kdc/ 以下にファイルが生成されたことを確認。 KDC を起動。

# /etc/init.d/krb5-kdc start

管理 principal を登録。

# kadmin.local
: addprinc foo/admin

password を聞かれるので設定する。/etc/krb5kdc/kadm5.acl で ACL を設定。

foo/admin@EXAMPLE.JP        *

kadmind 用の keytab を生成。

# kadmin.local
: ktadd -k /etc/krb5kdc/kadm5.keytab kadmin/admin kadmin/changepw

kadmind を起動。

# /etc/init.d/krb5-admin-server start

foo の user principal を追加。foo で作業する。

% kadmin
: addprinc foo

password を聞かれるので設定する。 host principal を追加。

# kadmin.local
: addprinc -randkey host/server.example.jp
: ktadd host/server.example.jp@EXAMPLE.JP

/etc/krb5.keytab が生成されたことを確認。 krb5 telnet server と client を install。

# apt-get install krb5-telnetd krb5-clients

foo でチケットを取得。

% kinit

実際に login してみる。

% telnet.krb5 -8x server.example.jp

_ [comp] Kerberos5 リモートテスト

先に設定した server.example.jp に client.example.jp からの login を試みる。 client.example.jp で krb5 の install。

client# apt-get install krb5-clients krb5-user

client:/etc/krb5.conf を編集。server:/etc/krb5.conf と同じ。 foo でチケット取得。

foo@client% kinit foo@EXAMPLE.JP

server.example.jp に login。

foo@client% telnet.krb5 -x8 server.example.jp
Trying XXX.XXX.XXX.XXX...
Connected to server.example.jp (XXX.XXX.XXX.XXX).
Escape character is '^]'.
Waiting for encryption to be negotiated...

Negotiation of authentication, which is required for encryption,
has failed.  Good-bye.

あれ? server:/var/log/syslog を確認。

server telnetd[XXXXX]: ttloop:  peer died: Invalid or incomplete multibyte or wide character
server telnetd[XXXXX]: connect from XXX.XXX.XXX.YYY (XXX.XXX.XXX.YYY)

server:/var/log/auth.log を確認。

server krb5kdc[XXXXX]: TGS_REQ (1 etypes {1})
 XXX.XXX.XXX.YYY: UNKNOWN_SERVER: authtime XXXXXXXXXX,
 foo@EXAMPLE.JP for host/server@EXAMPLE.JP, Server not found in Kerberos database

あれ?

server# kadmin.local
: addprinc -randkey host/server
: ktadd host/server@EXAMPLE.JP

としたらつながるようになったけど、本当にこれでいいのかなぁ。

_ [comp] NFSv4 テスト

krb5 setup for NFSv4Using NFSv4 を見つつ、やってみる。 server,client 両方の /etc/default/nfs-common を編集。編集部分のみ示す。

NEED_IDMAPD=yes
NEED_GSSD=yes

server,client 両方で nfs-common を restart。

# /etc/init.d/nfs-common restart

server で server, client 両方の nfs principal を追加。

server# kadmin.local
: addprinc -randkey nfs/server.example.jp
: ktadd -e des-cbc-crc:normal nfs/server.example.jp@EXAMPLE.JP
: addprinc -randkey nfs/client.example.jp
: ktadd -e des-cbc-crc:normal nfs/client.example.jp@EXAMPLE.JP

server で client 用の keytab を生成。

server# kadmin
: ktadd -e des-cbc-crc:normal -k /tmp/keytab nfs/server.example.jp@EXAMPLE.JP
: ktadd -e des-cbc-crc:normal -k /tmp/keytab nfs/client.example.jp@EXAMPLE.JP

server:/tmp/keytab を client:/etc/krb5.keytab としてコピー。 server/export4 ディレクトリを作成し、server:/etc/exports を編集。編集部分のみ示す。

/export4        *(rw,fsid=0,rw,async,insecure,no_subtree_check)
/export4        gss/krb5(rw,fsid=0,rw,async,insecure,no_subtree_check)
/export4        gss/krb5i(rw,fsid=0,rw,async,insecure,no_subtree_check)
/export4        gss/krb5p(rw,fsid=0,rw,async,insecure,no_subtree_check)

server の /etc/default/nfs-kernel-server を編集。編集部分のみ示す。

NEED_SVCGSSD=yes

server で kernel module を読み込み、nfs-kernel-server restart。

server# modprobe auth_rpcgss
server# modprobe rpcsec_gss_krb5
server# modprobe rpcsec_gss_spkm3
server# /etc/init.d/nfs-kernel-server restart

client で NFSv4 mount。

client# mount -t nfs4 server:/ /mnt

いろいろ遊ぶ。

client% touch /mnt/test

_ [debian] udev 0.050-4vd1

vd-udev-devfs-2.patch を当てて作成。

_ [debian] jack-audio-connection-kit 0.99.0-2vd1

libglib2.0-dev に依存。

_ [debian] vorbis-tools 1.0.1-1.1vd1, timidity 2.13.2-5vd1

libflac6 向けに作成。

_ [comp] backslash の修正

使ってる Windows 用のフォントの backslash が Yen sign になっているのを FontForge で直した。

47 (0x002f) U+002F slash Basic Latin

92 (0x005c) U+005C backslash Basic Latin

に貼り付け、水平反転しただけ。