Kerberos認証の基礎から運用まで徹底解説:構成要素・フロー・セキュリティ対策と実装のベストプラクティス
イントロダクション — ケルベロス認証とは何か
ケルベロス(Kerberos)は、ネットワーク上で安全にユーザー認証を行うためのチャレンジ/レスポンス型のプロトコルです。MIT が開発し、現在はRFC 4120で規格化された「Kerberos V5」が事実上の標準になっています。主に「一度のログオンで複数のサービスにアクセスできる(SSO: Single Sign-On)」ことを目的とし、対称鍵暗号とチケット(ticket)を用いることでパスワードを直接送信せずに認証を実現します。
基本コンポーネントと用語
- KDC(Key Distribution Center):認証を行う中央サーバ。Authentication Service(AS)とTicket Granting Service(TGS)を包含する。
- AS(Authentication Service):ユーザーの初回認証を担当し、TGT(Ticket Granting Ticket)を発行する。
- TGS(Ticket Granting Service):TGT に基づいて各サービス向けのサービスチケットを発行する。
- TGT(Ticket Granting Ticket):TGS にアクセスするための「チケット」。通常は長めの有効期限を持つ。
- Service Ticket:個々のサービス(ファイルサーバ、HTTPサービス等)にアクセスするためのチケット。
- Keytab:サービスが自分の鍵(長期鍵)を保持するためのファイル。サービス側がチケットを検証するために使用。
- SPN(Service Principal Name):サービスを識別する一意の名前(例: HTTP/www.example.com)。Windows の Active Directory で重要。
プロトコルフロー(代表的なやり取り)
典型的なKerberos認証の流れは以下の通りです(簡略化):
- 1) クライアント → AS: AS-REQ(ユーザー名を送る。事前認証が有効なら暗号化されたタイムスタンプ等を添付)
- 2) AS → クライアント: AS-REP(クライアントの長期鍵で復号する部分と、TGT を含む)
- 3) クライアントはTGTを保持し、サービスにアクセスする際に TGS に対して TGS-REQ を送る(TGT を添付)
- 4) TGS → クライアント: TGS-REP(対象サービス用のサービスチケットを返す)
- 5) クライアント → サービス: AP-REQ(サービスチケットを提示して接続)
- 6) サービス → クライアント: AP-REP(必要に応じて相互認証のレスポンス)
上記の間でやり取りされるチケットやメッセージは対称鍵暗号で保護され、KDC は各主体の長期鍵(ユーザーならパスワード由来の鍵、サービスなら keytab の鍵)を知っています。
暗号・鍵管理・時刻の役割
Kerberos は基本的に対称鍵暗号を使います。ユーザーの初回認証はパスワード(またはその派生鍵)に依存するため、ユーザーパスワードの強度がセキュリティ上重要です。さらに、チケットにはタイムスタンプと有効期限が含まれ、再生攻撃(replay attack)を防ぎます。したがって、クライアントとKDCの間で厳密な時刻同期(通常は数分以内の誤差許容)が必要です(NTP の導入が一般的)。
相互認証とSSO
Kerberos の利点の一つは相互認証(mutual authentication)をサポートする点です。クライアントはサービスの正当性を検証でき、サービス側もクライアントの正当性を検証します。また、TGT を用いることで一度のログオンで複数サービスに対してチケットを取り直すことなくアクセスできるため、SSO に適しています。
実装と運用上のポイント(Active Directory を含む)
- Active Directory(AD)は Kerberos を認証基盤として採用している。ドメインコントローラが KDC の役割を果たす。
- Windows 特有の要素として PAC(Privilege Attribute Certificate)があり、チケット内にユーザーのグループ情報などが含まれる。サービス側(例:ファイルサーバ)は PAC を検証してアクセス制御に用いる。
- krbtgt アカウント:AD の内部で TGT を暗号化するために使われる特殊なアカウント。これのハッシュが漏れると「Golden Ticket」攻撃に繋がる。
- SPN の管理:サービスごとに適切な SPN を登録しておくことが重要。重複した SPN は認証不具合を招く。
よくある障害とトラブルシューティング
- 時刻ずれ(Clock skew):NTP が設定されていないと AS-REQ/REP が拒否される。
- SPN の不整合:サービス認証に失敗する場合、setspn の確認・修正が必要。
- keytab のミスマッチ:サービスの keytab が正しい鍵を持っていないとチケット検証に失敗する。
- プリオース(pre-auth)未対応:古いクライアントや設定によっては事前認証(pre-auth)が無効で脆弱性を招く可能性あり。
- チケット期限:短いチケットやポリシーで早期切断される場合にはチケットの有効期限と renewable 設定を確認。
攻撃手法とリスク(代表例)
- Kerberoasting:サービスアカウントのサービスチケット(TGS)を取得してオフラインでパスワードを総当たりする攻撃。サービス側が弱いパスワードであると危険。
- Golden Ticket:krbtgt アカウントの長期鍵が窃取されると、任意の TGT を偽造してあらゆるサービスへアクセスできるようになる深刻な攻撃。
- Silver Ticket:特定サービスの鍵(service account の鍵)が入手されると、そのサービス向けのチケットを偽造できる。
- リプレイ・中間者攻撃:適切なタイムスタンプやセッションキーの検証が無い実装だとリスクになる。
対策とベストプラクティス
- 強力なパスワード/長期鍵と AES 等のモダンな暗号の利用(RC4 の利用は避ける)
- krbtgt のローテーション(定期的なパスワード変更)と最小権限の運用
- SPN 管理の徹底と不要なサービスアカウントの削除
- 監視:異常なチケット発行や長期有効な TGT の使用、異常なサービスチケット要求をログで検知する
- NTP による時刻同期、プリオース(pre-auth)を有効にする
- PAC の検証や RBCD(Resource-Based Constrained Delegation)など最新の委任機構の理解と適用
運用・検証ツール
- kinit / klist / kvno / ktutil(MIT Kerberos): チケット取得・確認・keytab 操作
- Windows の klist、setspn、ktpass: SPN や keytab の管理
- Wireshark:Kerberos パケットのキャプチャと解析(ただし暗号化により中身は見えないことが多い)
- セキュリティツール(例:Mimikatz 等)は攻撃検証や侵入テストに使われるが、使用は適切な許可の下でのみ行うこと
まとめ
Kerberos はSSOや相互認証を実現する強力なプロトコルであり、企業内認証の中核をなしています。ただし、その安全性は実装・運用次第で左右されます。時刻同期、鍵管理(keytab/krbtgt)、SPN の適切な管理、最新暗号の利用、監視体制の整備が重要です。攻撃手法(Kerberoasting、Golden/Silver Ticket 等)を理解し、対策を講じておくことが実運用における必須事項です。
参考文献
- RFC 4120 — The Kerberos Network Authentication Service (V5)
- MIT Kerberos Consortium — official site
- Microsoft Docs — Kerberos 認証の概要
- Wikipedia — Kerberos (protocol)
- Mimikatz — GitHub(攻撃ツール例、研究目的で参照)
- ADSecurity — Active Directory / Kerberos に関する解説・事例集
投稿者プロフィール
最新の投稿
音楽2025.11.25チャールズ・アイヴズ:保険業と作曲家としての二重生活が生んだアメリカ音楽の革新
ゲーム2025.11.25ファイナルファンタジーIを深掘りする:開発背景・ゲームシステム・音楽・アート・影響を総括
ファッション2025.11.25ガウンコート徹底解説:特徴・素材・選び方と着こなし術
ゲーム2025.11.25ファイナルファンタジー全史:音楽と美術が紡ぐ革新のRPG文化遺産

