Windows Server 2016 Active Directoryの構築 Kerberosプロトコルによる認証フロー

どうも、最近Exchangeに悩まされているMiyaです( ´Д`)y━・~~

今回は、ADの認証フローについて詳しく触れたいと思います。
これまでの記事ではADへのドメイン参加させたコンピュータからログインする動きを確認してきましたね。
このログイン部分の中の処理は、ADを扱う者なら軽く理解しておくべきです( ̄▽ ̄)

スポンサーリンク:

Kerberosでの認証フロー

Kerberos?なんかかっこいいですよね。
Kerberosってのは認証プロトコルで、まさにADで採用されている画期的な技術です。
専門用語が多い上に、少し難しい話になりますが、最後まで読んで頂ければイメージは掴めると思います( ´∀`)

まず、認証に活躍するADのコンポーネントをご紹介します。

KDC(Key Distribution Center) ユーザやサーバなどの信頼関係の情報を一元管理する機関
AS(Authentication Service) KDCの一部で、ユーザからの認証要求に応答する
TGS(Ticket Granting Server) KDCの一部で、ユーザにチケットを発行する

これらのコンポーネントを介して、ユーザはサーバへアクセスするためのチケットを取得しています。
下図に、ユーザと各コンポーネントが、どう通信するのかを描いてみました。
Kerberos | Active Direcrtory

  1. ユーザはKerberosという認証プロトコルを使って資格情報をASへ送信
  2. 資格情報が正しければ、ユーザにTGT(Ticket Granting Ticket)をプレゼント
  3. ファイルサーバにアクセスしたいので、STをもらいにTGSへ問い合わせ
  4. TGTを持っているので、ST(Service Ticket)をプレゼント
  5. ファイルサーバにSTを提出。アクセスしたい旨を連絡
  6. ファイルサーバはSTを確認。サーバへアクセスできるようになる。ハッピー。
  7. Sharedフォルダへアクセスさせてください
  8. ユーザのSIDに対するアクセス権限を確認→読み取り権を持っているので許可する。またハッピー。

Kerberos認証とは?

Kerberos サーバーを運用したい組織は、独自の 「レルム」を構築する。レルムに属するマシンやサービスはプリンシパルと呼ばれる。レルムにはKDC(key distribution center、直訳:鍵配送センター)と呼ばれる権限者が存在する。KDCはAS(Authentication Server、直訳:認証サーバ)というサーバとTGS(Ticket Granting Server、意訳:チケット発行許諾サーバ)というサーバがある。
ユーザがレルムにログインする際には、まず自身の持つクライアント端末からID/パスワードなどで認証を受け、認証が受理されたらクライアント端末はこのパスワードを利用して秘密鍵Kを生成する。クライアントはユーザのIDを平文でASに送り、ASはユーザのIDを自身のデータベースに問い合わせる事でユーザの秘密鍵Kを得る。
引用 – Wikipedia

このASやTGSを使った認証の仕組みをKerberosと呼ばれています。
でもKerberosを使うと何かいいことあるの?…あるんです!! (ドンッ!

■データの暗号化
>>クライアントはユーザのIDを平文でASに送り、ASはユーザのIDを自身のデータベースに問い合わせる事でユーザの秘密鍵Kを得る。
この秘密鍵Kでクライアントとサーバ間の通信を暗号化します。
そのため、通信を盗聴されてしまった場合でも、データの復号ができなければ、データの中身までは見れません。
また、先ほど記載した絵の通り、IDとPWによる認証は、TGTの取得のみです。
つまり、その他の認証ではチケットを認証情報の代わりとして認証するため、漏洩を防ぐことができます。

■なりすましの防止
Kerberos認証では、チケットの認証以外にも時刻同期も認証の要素としています。
チケットの中身にはクライアントの送信時刻が含まれており、チケットを受け付けるサーバとチケットの中身の送信時刻に5分以上のズレがあれば、認証できないような仕組みになっています。
組織内にサーバーを追加する際、NTPの指定先はドメイン内のDCに設定しておきましょう。

■シングルサインオン機能
Kerberosの仕組みによって発行されたTGTはコンピュータにキャッシュされます。
つまり、わざわざASに再認証→チケット貰うという処理を繰り返さなくてもいいんです。
その結果、ネットワークトラフィックの削減であったり、ID/PW入力の省略など、パフォーマンスへの向上へとつながります。
但し、チケットにはもちろん有効期限(600分)があるので、有効期限が切れた場合は、再度チケットを貰いに行かなければなりません。

SIDとは?

SID(Security IDentifier)とはセキュリティ識別子です。
ユーザ、コンピュータなどのオブジェクトを識別するための一意の値です。
フォルダへアクセスする時に、各ユーザオブジェクトに割り当てられたアクセス権を調べる必要があります。
その時に、このSIDでユーザオブジェクトを識別しています。
スタートからコマンドプロンプトを実行して下記コマンドを実行してみましょう。

whoami /user

どうでしたか?ローマ字が多くて嫌になりました?笑
私も最初は結構、理解に苦しみましたが、トラブルシューティングの時なんかにはこーいった中の動きを理解しておくと、優位なると短い経験から思います( ´∀`)笑
それでは、良いWindows Server ライフを♪

スポンサーリンク