Kerberos

提供: ArchWiki
ナビゲーションに移動 検索に移動

関連記事

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