Kerberos(ケルベロス)とは?パスワードを送らずにチケットでログインする仕組み¶
最終確認: 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 に見せてそのサービス専用のチケットをもらい、サービスに見せる。パスワードそのものはネットワークに流れない。
- ログオン(AS):PC は、パスワードから作った鍵で「今の時刻」を暗号化して DC に送る。DC は同じ鍵で開けられれば本人と分かる(事前認証)
- DC は TGT を返す。TGT は krbtgt の鍵で封印されていて、PC には中身を書き換えられない
- ファイルサーバーや Webアプリを使うとき、PC は TGT と「どのサービスに入りたいか(SPN)」を DC に送る(TGS)
- DC は、そのサービスのアカウントの鍵で封印したサービスチケットを返す
- PC はサービスチケットをサービスに見せる。サービスは自分の鍵で開けて、誰か・どのグループか(PAC)を確かめる。DC に問い合わせなくてよい
イメージ(たとえ話)¶
- 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への攻撃には何がある?(攻撃者の視点)¶
| 攻撃 | 何をする | 対策 |
|---|---|---|
| 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回リセット(間を空ける)。すべての管理者のパスワードも変える |
関連メモ¶
- NTLMとは?(Kerberos が使えないときの古い認証)
- LDAPとは?(AD の名簿を引く仕組み)
- gMSA(グループ管理サービスアカウント)とは?
- Kestrelとは?(Windows 認証と SPN)
- Kestrelの冗長化(クラスター名の SPN)
- 認証と認可・OAuthとは?
- 多要素認証(MFA)とは?
確認したいこと¶
- SPN が付いたユーザーアカウント(gMSA でないもの)はいくつあるか。パスワードは何文字か
- ドメインで RC4 はまだ使われているか(
klistの暗号の種類、DC のイベントログ) - 制約なし委任が設定されたコンピューター・アカウントはないか
- krbtgt のパスワードを最後にリセットしたのはいつか
- 管理者アカウントは Protected Users に入っているか