Kerberos はネットワーク認証プロトコルです。
Kerberos はデバイスに対して強力な暗号化認証を提供し、クライアントとサーバーがより安全な方法で通信できるようにします。これは、ネットワーク セキュリティの問題に対処するように設計されています。
ファイアウォールが外部ネットワークからの侵入に対処するソリューションとして機能する場合、Kerberos は通常、ネットワーク内の侵入やその他のセキュリティ問題に対処するために使用されます。
Kerberos の現在のバージョンは、KRB5 と呼ばれるバージョン 5 です。 .
Kerberos を実装するには、サーバー上で集中認証サービスを実行する必要があります。
このサービスは KEY DISTRIBUTION CENTER (KDC) と呼ばれます。
KDC に登録されたサーバーは、Kerberos 領域内の他のすべてのコンピューターから信頼されます。
krb5.conf ファイルのサンプル
以下は、すべての REALM およびドメインから REALM へのマッピング情報を含む krb5.conf ファイルの例です。
# cat /etc/krb5.conf [logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] default_realm = EXAMPLE.COM dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true [realms] EXAMPLE.COM = { kdc = kerberos.example.com admin_server = kerberos.example.com } [domain_realm] .example.com = EXAMPLE.COM example.com = EXAMPLE.COM
Kerberos KDC サーバーをインストールする
セキュリティ上の理由から、別のサーバーで Kerberos (KDC) サーバーを実行することをお勧めします。
krb5 サーバー パッケージをダウンロードしてインストールします。
# rpm -ivh krb5-server-1.10.3-10.el6_4.6.x86_64.rpm Preparing... ########################################### [100%] 1:krb5-server ########################################### [100%]
KDC を構成する前に、次の rpm がインストールされていることを確認してください:
# rpm -qa | grep -i krb5 pam_krb5-2.3.11-9.el6.x86_64 krb5-server-1.10.3-10.el6_4.6.x86_64 krb5-workstation-1.10.3-10.el6_4.6.x86_64 krb5-libs-1.10.3-10.el6_4.6.x86_64
/etc/krb5.conf ファイルの変更
/etc/krb5.conf を変更して、適切な REALM および DOMAIN_REALM マッピングを以下のように反映させます。
# cat /etc/krb5.conf [logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] default_realm = MYREALM.COM dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true [realms] MYREALM.COM = { kdc = elserver1.example.com admin_server = elserver1.example.com } [domain_realm] .myrealm.com = MYREALM.COM myrealm.com = MYREALM.COM
kdc.conf ファイルの変更
また、kdc.conf を次のように変更する必要があります。
# cat /var/kerberos/krb5kdc/kdc.conf [kdcdefaults] kdc_ports = 88 kdc_tcp_ports = 88 [realms] MYREALM.COM = { #master_key_type = aes256-cts acl_file = /var/kerberos/krb5kdc/kadm5.acl dict_file = /usr/share/dict/words admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab supported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal }
KDC データベースの作成
次に、以下に示すように、kdb5_util コマンドを使用して KDC データベースを作成します。この段階で、KDC データベース マスター キーの適切なパスワードを入力します。
# /usr/sbin/kdb5_util create -s Loading random data Initializing database '/var/kerberos/krb5kdc/principal' for realm 'MYREALM.COM', master key name 'K/[email protected]' You will be prompted for the database Master Password. It is important that you NOT FORGET this password. Enter KDC database master key: Re-enter KDC database master key to verify:
管理者権限の割り当て
ファイル /var/kerberos/krb5kdc/kadm5.acl を使用して、データベースに対する管理者権限をユーザーに付与できます。
# cat /var/kerberos/krb5kdc/kadm5.acl */[email protected] *
上記の例では、管理インスタンスを持つ MYREALM 内のすべてのプリンシパルがすべての管理者権限を持っています。
プリンシパルを作成する
次のコマンドを使用してプリンシパルを作成します。この例では、「eluser」というユーザー名でプリンシパルを作成しました。
# kadmin.local -q "addprinc eluser/admin" Authenticating as principal root/[email protected] with password. WARNING: no policy specified for eluser/[email protected]; defaulting to no policy Enter password for principal "eluser/[email protected]": Re-enter password for principal "eluser/[email protected]": Principal "eluser/[email protected]" created.
Kerberos サービスを開始
以下に示すように、KDC および kadmin デーモンを開始します。
# service krb5kdc start Starting Kerberos 5 KDC: [ OK ] # service kadmin start Starting Kerberos 5 Admin Server: [ OK ]
Kerberos クライアントを構成する
KDC データベースに対して認証するように Kerberos クライアントを構成します。
次に、上記で作成した Kerberos KDC データベースに対して認証するように krb5 クライアントを構成する方法を見てみましょう。
ステップ 1:krb5-libs および krb5-workstation パッケージをクライアント マシンにインストールします。
ステップ 2:/etc/krb5.conf を KDC サーバーからクライアント マシンにコピーします。
ステップ 3:次に、KDC/Kerberos データベースにクライアントのプリンシパルを作成する必要があります。
以下のコマンドを使用して、KDC マスター サーバー上にクライアント マシンのプリンシパルを作成できます。以下の例では、マスター KDC サーバー elserver1.example.com でクライアント elserver3.example.com のホスト プリンシパルを作成しています。
# kadmin.local -q "addprinc host/elserver3.example.com" Authenticating as principal root/[email protected] with password. WARNING: no policy specified for host/[email protected]; defaulting to no policy Enter password for principal "host/[email protected]": Re-enter password for principal "host/[email protected]": Principal "host/[email protected]" created.
ステップ 4:以下のコマンドを使用して、KDC マスター サーバーからクライアントの krb5.keytab を抽出します。
# kadmin.local -q "ktadd -k /etc/krb5.keytab host/elserver3.example.com" Authenticating as principal root/[email protected] with password. Entry for principal host/elserver3.example.com with kvno 2, encryption type aes256-cts-hmac-sha1-96 added to keytab WRFILE:/etc/krb5.keytab. Entry for principal host/elserver3.example.com with kvno 2, encryption type aes128-cts-hmac-sha1-96 added to keytab WRFILE:/etc/krb5.keytab. Entry for principal host/elserver3.example.com with kvno 2, encryption type des3-cbc-sha1 added to keytab WRFILE:/etc/krb5.keytab. Entry for principal host/elserver3.example.com with kvno 2, encryption type arcfour-hmac added to keytab WRFILE:/etc/krb5.keytab. Entry for principal host/elserver3.example.com with kvno 2, encryption type des-hmac-sha1 added to keytab WRFILE:/etc/krb5.keytab. Entry for principal host/elserver3.example.com with kvno 2, encryption type des-cbc-md5 added to keytab WRFILE:/etc/krb5.keytab.
これで設定は完了です。この段階ですべて完了です。
これ以降、SSH、RSH 接続を確立するたびに、ホストはキータブ ファイルを使用して KDC データベースに対して ID を検証し、Kerberos を介して安全な接続を確立します。
Ktadd は、新しいキータブを生成するか、kadmin コマンドから既存のキータブにプリンシパルを追加するために使用されます。
Ktremove は、既存のキータブからプリンシパルを削除するために使用されます。上記で作成したプリンシパルを削除するコマンドは、
kadmin.local -q "ktremove -k /etc/krb5.keytab –q all"
KDC データベースを削除する
何らかの理由で、KDC データベースを削除する必要がある場合は、次のコマンドを使用してください:
# kdb5_util -r MYREALM.COM destroy kdb5_util: Deleting KDC database stored in /usr/local/var/krb5kdc/principal, you sure (type yes to confirm)? <== yes OK, deleting database '/usr/local/var/krb5kdc/principal'...
上記のコマンドの -f オプションは、KDC データベースを強制的に削除します。
KDC データベースのバックアップと復元
KDC データベースをファイルにバックアップするには、krb5_util_dump を使用します。
# kdb5_util dump kdcfile # ls -l kdcfile -rw-------. 1 root root 5382 Apr 10 07:25 kdcfile
上記の手順で作成したダンプ ファイルから KDC データベースを復元するには、次の手順を実行します。
# kdb5_util load kdcfile