Kerberos認証とは?基礎知識3つのわかりやすい解説をご紹介!
Kerberos認証とは?
Kerberos認証はSSO(シングルサインオン)の一種です。
認証が必要なWebサービスやアプリケーションを使用する場合、複数のIDを用意し管理するのは手間がかかります。SSOは1つのIDで複数のWebサービスやアプリケーションの認証を可能にします。
Kerberos認証では1度IDとパスワードを使用して認証するとチケットが発行され、2度目以降はチケットを使用して認証します。
知っておくべきKerberos認証の基礎知識3つ
Kerberosの構成要素や認証の流れはどうなっているのでしょうか。ここからは、Kerberos認証の基礎知識3つについて解説していきます。
基礎知識1:Kerberosの認証方法
Kerberos認証では、IDとパスワードを使用した認証が成功すると「チケットを発行するためのチケット」が発行されます。チケットの有効期限が切れるまではIDとパスワードでの認証は必要ありません。
Kerberos認証では、クライアントは「チケットを発行するためのチケット」をASに送信して、「サーバにアクセスするためのチケット」を要求します。また、クライアントから「サーバにアクセスするためのチケット」をサーバに送信して認証を行います。
基礎知識2:Kerberos認証の用語
ここからは、基礎知識の2つ目であるKerberos認証で使用する用語を解説していきます。事前に用語を覚えておくとよいでしょう。
KDC(Key Distribution Center)
どのIDがどのサーバに対する権限を持っているかを一括管理する機能です。AS(Authentication Service)とTGS(Ticket Granted Service)を含んでいます。
AS(Authentication Service)
IDとパスワードの認証を行うサービスです。認証が成功するとTGT(Ticket Granting Ticket)を発行します。
KDC(Key Distribution Center)に含まれています。
TGT(Ticket Granting Ticket)
「チケットを発行するためのチケット」です。
AS(Authentication Service)で発行されたチケットで、TGS(Ticket Granted Service)にTGTを使用して認証することで「サーバにアクセスするためのチケット」を取得します。
TGS(Ticket Granted Service)
TGT(Ticket Granting Ticket)を認証し、「サーバにアクセスするためのチケット」を発行するサービスです。サーバ毎に別々のチケットを発行します。
principal
Kerberos認証で管理されるユーザやサーバを表しています。KDC(Key Distribution Center)はprincipalでユーザやサーバを識別します。principalをIDと表示することもあります。
realm
ケルベロス認証で扱うグループを表します。ケルベロス認証ではrealmをグループ名として論理ネットワークを構築します。要するにドメイン名と同じ意味を持ちます。
基礎知識3:Kerberos認証の流れ
Kerberos認証では1度IDでの認証をするとチケットを発行します。次回以降はIDを使わずチケットを使用して認証を行います。IDでの認証からチケットを使用するまでの流れを解説していきます。
Kerberos認証の流れ1:認証要求
まずは、クライアントからprincipalとパスワードをASに送信します。principalとパスワードの代わりにkeytabファイルを使用することもできます。クライアントで使用する製品によってはkeytabファイルが必須の場合もあります。
Kerberos認証では、キャッシュにTGTが存在する場合はこの認証要求は行われません。
Kerberos認証の流れ2:TGTの発行
対応するIDが存在する(認証成功)とASは、2つの情報をクライアントに送信します。
1つ目の情報は、Client/TGS Session Keyです。これはセッション毎に生成される共通鍵暗号の共通鍵です。principal毎に生成された共通鍵で暗号化した情報です。
2つ目の情報は、TGTです。クライアントのprincipalとネットワークアドレス、有効期限、Client/TGS Session Keyを一纏めにし、TGSの暗号鍵で暗号化した情報です。
Kerberos認証の流れ3:TGTの保存
クライアントはASから受信したTGTをキャッシュに保存します。Kerberos認証では、キャッシュに保存したTGTの有効期限が切れるまでは、principalとパスワード(もしくはkeytab)は使用しません。
Kerberos認証の流れ4:「サーバにアクセスするためのチケット」取得
クライアントは2つの情報をTGSに送信します。
1つ目の情報はTGTとアクセスしたいサーバのprincipalです。2つ目の情報はクライアントのprincipalとマシン日付です。Client/TGS Session Keyで暗号化した情報です。
TGSはTGTに含まれるprincipalとクライアントから受信したクライアントのprincipalが一致するか確認します。principalが一致することが確認できた場合2つの情報をクライアントに送信します。
1つ目の情報は「サーバにアクセスするためのチケット」です。クライアントのprincipalとネットワークアドレス、有効期限、Client/Server Session Keyをひとまとめにし、サーバの暗号鍵で暗号化した情報です。
2つ目の情報はClient/Server Session Keyです。これはセッション毎に生成される共通鍵暗号の共通鍵です。Client/TGS Session Keyで暗号化した情報です。
Kerberos認証の流れ5:サーバへのチケット送信
クライアントは2つの情報をサーバに送ります。
1つ目の情報は「サーバにアクセスするためのチケット」です。2つ目の情報はクライアントのprincipalとマシン日付です。Client/Server Session Keyで暗号化してサーバに送信します。
サーバは「サーバにアクセスするためのチケット」に含まれるprincipalとクライアントから受信したprincipalが一致するか確認します。
principalが一致することが確認できた場合サーバにアクセスするためのチケット」に含まれるマシン日付とクライアントから受信したマシン日付を比較します。マシン日付の差異が5分以上あると認証失敗となります。
サーバはprincipalとマシン日付の確認に成功すると、クライアントから受信したマシン日付をClient/Server Session Keyで暗号化してクライアントに送信します。
クライアントはサーバから受信したマシン日付とサーバに送信したマシン日付を比較します。マシン日付が一致した場合にサーバとのセッションが成立します。
Kerberos認証のメリット
Kerberos認証は第三者による不正な認証を防止し、トラフィックを減らします。ここからは、Kerberos認証のメリットについて詳しく見ていきましょう。
安全性
Kerberos認証では一度principalで認証すれば、以後はTGTを使用して認証します。また、認証の通信には暗号化されたマシン日付が含まれるため、認証の都度クライアント/サーバ間で送信内容が異なります。
Kerberos認証では、認証の都度送信内容が変わるため、第三者によるリプレイアタックを実施することができません。
Kerberos認証で発行されたチケットにはクライアント情報が含まれていますが、暗号化されており、クライアントで復号することはできません。クライアントではチケットの確認方法がないため、第三者が同じチケットを使用してサーバに認証することもできません。
トラフィックが少ない
Kerberos認証プロセスが完了すると、クライアントはチケットを使用しサーバにアクセスします。クライアントはチケットの有効期限が切れるまではkdcに接続しません。
active directoryやiis、samlを使用したssoでは、クライアントはサーバに接続するたびにドメインコントローラで認証を行う必要があります。
Kerberos認証ではチケットの有効期限が切れるまではkdc(ドメインコントローラに該当)に接続しないため、通信時のトラフィックが少なくなります。
Kerberos認証を使いこなそう
Kerberos認証を行うためにまずは、Kerberosクライアントをインストールします。
$ su
# yum install krb5-workstation krb5-libs
次にKerberos認証を行うためにrealmの設定を行います。
/etc/krb5.conf
というファイルに必要な設定を記載します。ケルベロス認証の管理者に問い合わせればkrb5.confファイルをもらえることもあります。
以下のようにrealmを記載します。
[realms] realmを指定 = {
kdc = KDCのURLを指定
admin_server = KDCのURLを指定
kpasswd_server = KDCのURLを指定
}
Kerberos認証の準備が整ったらKerberosクライアントを使用しTGTを取得します。principalとパスワードを使用しKerberos認証を行う場合は以下のコマンドを実行します。
# kinit principalを指定 passwordを指定
keytabを使用しKerberos認証を行う場合は以下のコマンドを実行します。
# kinit -t keytabファイルを指定
以上でKerberos認証が実施されTGTがキャッシュに保存されるので、各サーバのサービスを利用することができるようになります。
Kerberos認証はIDを使用した認証の回数を減らすことでIDの漏洩リスクを漸減します。また、チケット認証時に時刻を使用しているため、セッションジャックもできません。
Kerberos認証は様々な製品に取り入れられているため、用語や使用方法の知識が役に立つ機会が増えていくことが予想できます。SSOの一つとして是非覚えておきましょう。
ネプラス株式会社はサービス開始から10年以上
『エンジニアの生涯価値の向上』をミッションに掲げ、
多くのインフラエンジニア・ネットワークエンジニアの就業を支援してきました。
ネプラス株式会社はこんな会社です
秋葉原オフィスにはネプラス株式会社をはじめグループのIT企業が集結!
数多くのエンジニアが集まります。
-
インフラ業界に特化
ネットワーク・サーバー・データベース等、ITインフラ業界に特化。Cisco Systemsプレミアパートナーをはじめ各種ベンダーのパートナー企業です。
業界を知り尽くしているからこそ大手の取引先企業、経験豊富なエンジニアに選ばれています。
-
正社員なのにフリーランスのような働き方
正社員の方でも希望を聞いたうえでプロジェクトをアサインさせていただいており、フリーランスのような働き方が可能。帰社日もありません。
プロジェクト終了後もすぐに次の案件をご紹介させていただきますのでご安心ください。
-
大手直取引の高額案件
案件のほとんどが大手SIerやエンドユーザーからの直取引のためエンジニアの皆様へに高く還元できています。
Ciscoをはじめ、Juniper、Azure、Linux、AWS等インフラに特化した常時300件以上の案件があります。
-
スキルアップ支援
不要なコストを削減し、その分エンジニアの方へのスキルアップ支援(ネットワーク機器貸出、合格時の受験費用支給など)や給与で還元しています。
受験費用例)CCNP,CCIE:6-20万円、JNCIS:3-4万円、AWS:1-3万円など
※業務に関連する一定の資格のみ。各種条件がありますので詳しくは担当者へにお尋ねください。
-
現給与を保証します!※
前職の給与保証しており、昨年度は100%の方が給与アップを実現。収入面の不安がある方でも安心して入社していただけます。
※適用にはインフラエンジニアの業務経験1年以上、等一定の条件がございます。
-
インセンティブ制度
ネットワーク機器の販売・レンタル事業等、売上に貢献いただいた方にはインセンティブをお支払いしています。
取引先企業とエンジニア側、双方にメリットがあり大変好評をいただいています。
-
社会保険・福利厚生
社員の方は、社会保険を完備。健康保険は業界内で最も評価の高い「関東ITソフトウェア健康保険組合」です。
さらに様々なサービスをお得に利用できるベネフィットステーションにも加入いただきます。
-
東証プライム上場企業グループ
ネプラスは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
ネプラス株式会社に興味を持った方へ
ネプラス株式会社では、インフラエンジニアを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
オンライン面接も随時受付中。ぜひお気軽にご応募ください。