コンテンツにスキップ

Kerberos(ケルベロス)とは?パスワードを送らずにチケットでログインする仕組み

2026-10-28 更新約13分で読めます

最終確認: 2026-10-27

30秒で復習

  • Kerberos(ケルベロス)=Active Directory(AD)の標準の認証の仕組み。 ネットワークにパスワードを流さず、DC が発行するチケットを見せてサービスに入る。
  • 登場人物は3人:利用者のPC・DC(KDC:チケットを発行する係)・サービス(ファイルサーバー、Webアプリなど)。
  • 流れは2段階:まずログオン時にTGT(入場リストバンド)をもらい、サービスを使うたびに TGT を見せてサービスチケット(乗り物券)をもらう。
  • サービスは名前(SPN)で見分ける。SPN がない・IPアドレスで接続した、などのときは古い NTLM に切り替わる。
  • 時刻が5分以上ずれるとログインできない(チケットに時刻が入っているため)。
  • 有名な攻撃:Kerberoasting(サービスアカウントのパスワードを持ち帰って解く → gMSA で防げる)、Golden Ticket(krbtgt の鍵で TGT を偽造)。
  • 覚え方:「入口でリストバンド(TGT)、乗り場ごとに乗り物券(サービスチケット)。パスワードは入口で一度だけ」

こんな場面で出会う

  • 朝 PC にログオンしたあと、ファイルサーバーや社内サイトにパスワードなしで入れる → 裏で Kerberos のチケットが使われている
  • 「時刻が違うためログオンできません」と言われた PC → チケットの時刻チェック(5分)に引っかかっている
  • グループに追加してもらったのに、ログオンし直すまでフォルダーが開けない → 所属グループはチケットの中にあるから

用語の正式名称と読み方

用語 読み方・正式名称 意味
Kerberos ケルベロス MIT で生まれた認証の仕組み。AD は Windows 2000 から標準で使う。名前はギリシャ神話の3つの頭の番犬
KDC Key Distribution Center チケットを発行する係。AD ではすべての DC が KDC。ポートは 88
AS Authentication Service KDC のうち、最初の本人確認をして TGT を出す係
TGS Ticket Granting Service KDC のうち、TGT を見てサービスチケットを出す係
TGT Ticket Granting Ticket 「チケットをもらうためのチケット」。既定で約10時間有効
サービスチケット Service Ticket(ST、TGS チケットとも) 特定のサービスに入るためのチケット
SPN Service Principal Name サービスの名前。HTTP/web01.corp.example.com のように「種類/ホスト名」で書く
krbtgt ケーアールビーティージー TGT を暗号化する鍵を持つ、AD の特別なアカウント
PAC Privilege Attribute Certificate チケットの中に入っている「所属グループ」などの情報
NTLM NT LAN Manager Kerberos より古い Windows の認証。チャレンジとレスポンスでやり取りする

質問:Kerberosとは? どんな流れでログインする?

答え: 最初に一度だけ DC に本人確認をしてもらい、TGT をもらう。あとはサービスを使うたびに、TGT を DC に見せてそのサービス専用のチケットをもらい、サービスに見せる。パスワードそのものはネットワークに流れない。

利用者のPC DC(KDC) AS・TGS サービス web01 ① ログオン(パスワード由来の鍵で証明) ② TGT(入場リストバンド・約10時間) ③ TGT+「web01 の HTTP に入りたい」 ④ サービスチケット(web01 の鍵で封印) ⑤ サービスチケットを見せる(パスワードは送らない) web01 は自分の鍵でチケットを開けて確かめる。DC への問い合わせはいらない ※ チケットには時刻が入っている。PC と DC の時計が5分以上ずれると失敗する
  1. ログオン(AS):PC は、パスワードから作った鍵で「今の時刻」を暗号化して DC に送る。DC は同じ鍵で開けられれば本人と分かる(事前認証)
  2. DC は TGT を返す。TGT は krbtgt の鍵で封印されていて、PC には中身を書き換えられない
  3. ファイルサーバーや Webアプリを使うとき、PC は TGT と「どのサービスに入りたいか(SPN)」を DC に送る(TGS)
  4. DC は、そのサービスのアカウントの鍵で封印したサービスチケットを返す
  5. PC はサービスチケットをサービスに見せる。サービスは自分の鍵で開けて、誰か・どのグループか(PAC)を確かめる。DC に問い合わせなくてよい

イメージ(たとえ話)

入口 AS 身分を一度だけ確認 → リストバンド(TGT) 券売所 TGS リストバンドを見せる → 乗り物券(チケット) 乗り物の係員 サービス 券を見るだけ 入口に電話しない パスワードを使うのは入口の一度だけ。あとはチケットを見せて回る
  • TGT=遊園地の入場リストバンド。 入口(AS)で一度だけチケットと身分を確かめ、その日一日使える。
  • サービスチケット=乗り物ごとの券。 券売所(TGS)でリストバンドを見せると、その乗り物専用の券をくれる。
  • 乗り物の係員(サービス)は券を見るだけ。 入口に電話して確認しなくてよい。
  • 時刻のずれ=券の日付。 時計が5分以上ずれていると「今日の券じゃない」と断られる。

質問:NTLMとは何が違う? なぜKerberosのほうがよい?

観点 Kerberos NTLM
しくみ DC が発行したチケットを見せる サーバーが出す問題(チャレンジ)に、パスワードから作った答えを返す
サーバーの確認 サービスも本物か確かめられる(相互認証) クライアントだけを確かめる
DC への問い合わせ チケットがあれば不要 ログインのたびにサーバーが DC に確認する
委任(代理でアクセス) できる(制約付き委任など) できない
攻撃への強さ 比較的強い リレー攻撃・Pass-the-Hash に弱い
使われる場面 ドメインの中で、名前(FQDN)で接続したとき IPアドレスで接続、SPN がない、ドメイン外のPC、などのとき
  • NTLM の仕組みと弱点、減らし方は「NTLMとは」にまとめた。
  • 「Kerberos のつもりが、実は NTLM で動いていた」はよくある。SPN の登録漏れや、IPアドレスでのアクセスが原因になりやすい。
  • Microsoft は NTLM を段階的に廃止する方針。今のうちに「どこで NTLM が使われているか」を監査ログで確かめておくとよい。

質問:SPNとは? なぜ大事?

答え: SPN は「このサービスは、どのアカウントで動いているか」を DC に教える名札。DC はサービスチケットを、SPN が登録されたアカウントの鍵で封印する。

サービス SPN の例 登録先のアカウント
Webアプリ(IIS・Kestrel) HTTP/web01.corp.example.com アプリを動かしている gMSA(またはコンピューター)
SQL Server MSSQLSvc/sql01.corp.example.com:1433 SQL Server のサービスアカウント
ファイル共有 cifs/fs01.corp.example.com コンピューターアカウント(自動で登録される)
  • SPN がどこにも登録されていない → チケットが作れず、NTLM に切り替わる(またはログインできない)。
  • SPN が2つのアカウントに重複している → DC がどちらの鍵で封印すればよいか分からず、ログインに失敗する。
  • Kestrel の冗長化では、クラスターの名前の SPN を gMSA に登録する。
# SPN の確認・登録(setspn)
setspn -L CORP\svc-web$                            # このアカウントの SPN を一覧
setspn -Q HTTP/web01.corp.example.com              # この SPN がどのアカウントにあるか
setspn -S HTTP/web01.corp.example.com CORP\svc-web$  # 重複を確かめてから登録

# 自分の PC が持っているチケットを見る
klist            # TGT とサービスチケットの一覧(有効期限・暗号の種類)
klist purge      # チケットを捨てる(グループを変えたのに反映されないとき)

グループに追加したのに権限が反映されない

所属グループはチケットの中(PAC)に入っている。チケットは約10時間使い回されるので、グループを変えてもログオンし直すか klist purge するまで古いグループのまま。

質問:委任(デリゲーション)とは?

答え: 「Webアプリが、利用者の代わりに裏の SQL Server やファイルサーバーへアクセスする」こと(ダブルホップ)。Kerberos ならできるが、任せ方を間違えると危ない。

種類 何ができる 安全さ
制約なし委任 利用者の TGT そのものを預かり、どのサービスにでもなりすませる ✕ 危険。そのサーバーを乗っ取られると、管理者の TGT まで盗まれる
制約付き委任 決めたサービス(SPN)にだけ、利用者として入れる ○
リソースベースの制約付き委任(RBCD) 受ける側のサービスが「誰からの委任を受けるか」を決める ○ 今のおすすめ。ただし設定を書き換えられる人を絞る
  • 管理者アカウントは「アカウントは重要なので委任できない」にチェックするか、Protected Users グループに入れて、委任されないようにする。

質問:Kerberosへの攻撃には何がある?(攻撃者の視点)

① チケットを要求 普通の社員アカウントで SPN付きの相手を指定 ② チケットが届く サービスアカウントの パスワード由来の鍵で封印 ③ 持ち帰って総当たり 攻撃者の PC の中で解く DC のログに残りにくい 人が決めたパスワード (短い・何年も同じ) ✕ 解かれて権限を奪われる gMSA (120文字のランダム・自動で更新) ○ 現実的に解けない
攻撃 何をする 対策
Kerberoasting(ケルベロースティング) 普通の社員アカウントでも、SPN の付いたアカウントのサービスチケットを要求できる。チケットはそのアカウントのパスワードから作った鍵で封印されているので、持ち帰って総当たりで解く サービスアカウントは gMSA(120文字のランダム・自動更新)にする。普通のアカウントなら25文字以上。RC4 をやめて AES にする
AS-REP Roasting 「事前認証を必要としない」設定のアカウントは、パスワードなしで応答をもらえるので、それを持ち帰って解く その設定をオフにする(既定はオン=事前認証あり)
Golden Ticket(ゴールデンチケット) krbtgt の鍵を盗み、どんなユーザー・どんなグループの TGT でも偽造する。ドメインを完全に支配される DC を守る(Tier 0)。krbtgt のパスワードを2回リセットする(前の鍵も1つ覚えているため、時間を空けて2回)
Silver Ticket(シルバーチケット) サービスアカウントの鍵を盗み、そのサービス用のチケットを偽造する。DC を通らないので気づきにくい サービスアカウントを gMSA に。PAC の検証を有効にする
Pass-the-Ticket PC のメモリからチケットを盗んで、別の PC で使う 管理者は管理用の端末だけでログオン。Credential Guard、Protected Users
制約なし委任の悪用 そのサーバーにログオンした人の TGT を盗む 制約なし委任をやめる

Kerberoasting がやっかいな理由

チケットの要求は正規の操作で、どの社員アカウントでもできる。持ち帰ったあとの総当たりは攻撃者の PC の中で行うので、DC のログにはほとんど残らない。だから「解けないパスワードにしておく」のがいちばん効く。

質問:会社としてどう守る?

対策 防げるもの
サービスアカウントを gMSA にする Kerberoasting、Silver Ticket、パスワードの使い回し
AES だけにして、RC4 を止める(Microsoft も既定で RC4 を使わない方向へ進めている) Kerberoasting を速く解かれること
管理者を Protected Users に入れる(NTLM・RC4・委任を使わない、TGT は4時間) Pass-the-Ticket、委任による盗難
制約なし委任をやめ、制約付き委任・RBCD にする TGT の盗難
krbtgt のパスワードを定期的に、侵害時は2回リセット Golden Ticket
時刻同期(DC の PDC エミュレーターを正確な時刻源に) 時刻ずれによるログイン失敗
NTLM の利用を監査して減らす リレー攻撃、Pass-the-Hash
「SPN の付いたユーザーアカウント」と「事前認証なしのアカウント」を棚卸し Kerberoasting、AS-REP Roasting

質問:Entra ID(クラウド)でもKerberosを使う?

答え: Entra ID の基本は Kerberos ではなく、OAuth・OpenID Connect。 Kerberos はオンプレの AD の仕組み。ただし、つなぎの機能はある。

機能 役割
Microsoft Entra Kerberos Entra ID が Kerberos のチケットを出せるようにする。Azure Files への接続や、Windows Hello for Business のクラウド Kerberos 信頼で使う
アプリケーション プロキシ(KCD) クラウドでログインした利用者を、オンプレの Windows 認証のアプリへ Kerberos でつなぐ

具体例

場面 確認すること
社内 Webアプリで Windows 認証が通らない SPN が登録されているか・重複していないか(setspn -Q)。ブラウザでイントラネットとして扱われているか
「時刻が違う」エラーでログインできない PC と DC の時刻が5分以上ずれていないか(w32tm /query /status)
グループを追加したのに見えない ログオンし直す、または klist purge
監査で Kerberoasting を指摘された SPN の付いたユーザーアカウントを gMSA へ。パスワードを長く、AES のみへ
DC が乗っ取られた疑い krbtgt を2回リセット(間を空ける)。すべての管理者のパスワードも変える

関連メモ

確認したいこと

  • SPN が付いたユーザーアカウント(gMSA でないもの)はいくつあるか。パスワードは何文字か
  • ドメインで RC4 はまだ使われているか(klist の暗号の種類、DC のイベントログ)
  • 制約なし委任が設定されたコンピューター・アカウントはないか
  • krbtgt のパスワードを最後にリセットしたのはいつか
  • 管理者アカウントは Protected Users に入っているか

参考資料