Kerberos
Kerberos はネットワーク認証システムです。詳しくは krb5 のドキュメント を見てください。
インストール
クライアントとサーバーに krb5 パッケージをインストールします。
クライアントとサーバーの時計を同期させるために、時刻同期デーモンを使用することを強くお勧めします。
ホスト名解決が設定されていない場合、各マシンの hosts(5) ファイルにクライアントとサーバを手動で追加することができます。FQDN (myclient.example.com) は hosts ファイル内の IP アドレスの後の最初のホスト名でなければならないことに注意してください。
サーバー
/etc/krb5.conf
[libdefaults] default_realm = EXAMPLE.COM permitted_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 camellia256-cts-cmac camellia128-cts-cmac [realms] EXAMPLE.COM = { admin_server = kerberos.example.com supported_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 camellia256-cts-cmac camellia128-cts-cmac } [domain_realm] example.com = EXAMPLE.COM .example.com = EXAMPLE.COM [logging] kdc = SYSLOG:NOTICE admin_server = SYSLOG:NOTICE default = SYSLOG:NOTICE
DNS レコードを追加:
db.example.com
kerberos A 1.2.3.4 _kerberos TXT "EXAMPLE.COM" _kerberos._udp SRV 0 0 88 kerberos.example.com. _kerberos-adm._udp SRV 0 0 750 kerberos.example.com.
逆引きを忘れないで下さい。
ファイアウォールを使用している場合 tcp と udp のポート 88 と 750 を使用許可するルールを追加してください。
データベースを作成:
# krb5_util -r EXAMPLE.COM create -s
krb5-kdc
サービスを起動・有効化してください。
ケルベロス認証の代わりにローカルの root ユーザーを使って kadmin を起動:
# kadmin.local
Authenticating as principal root/admin@EXAMPLE.COM with password. kadmin.local:
基本コマンド
プリンシパル (ユーザー) を追加:
kadmin.local: add_principal myuser@EXAMPLE.COM
WARNING: no policy specified for myuser@EXAMPLE.COM; defaulting to no policy Enter password for principal "myuser@EXAMPLE.COM": *** Re-enter password for principal "myuser@EXAMPLE.COM": *** Principal "myuser@EXAMPLE.COM" created.
サービスプリンシパルを追加:
kadmin.local: add_principal -randkey nfs/someserver.example.com@EXAMPLE.COM
SSH の認証
SSH サーバーとクライアントの設定に以下の行を追加して、サーバーを再起動してください:
GSSAPIAuthentication yes
サービスプリンシパルを生成:
kadmin.local: add_principal -randkey host/someserver.example.com@EXAMPLE.COM
サーバーのキータブを生成:
kadmin.local: ktadd -keytab /root/someserver.krb5.keytab
# scp kerberos.example.com:/root/someserver.krb5.keytab /etc/krb5.keytab # chmod 600 /etc/krb5.keytab
SSH クライアント側でチケット発行許諾チケット (TGT) を取得:
$ kinit myuser@EXAMPLE.COM
Password for myuser@EXAMPLE.COM: ***
テスト:
$ ssh someserver.example.com -v