Kerberos

提供: ArchWiki
移動先: 案内検索

Kerberos はネットワーク認証システムです。詳しくは krb5 のドキュメント を見てください。

サーバー

krb5 パッケージをインストールして、必要に応じて設定してください。例:

/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