【初心者向け】ActiveDirectory とは　Part3

今回はActiveDirectory(以下AD)のメイン機能である「ログイン認証の管理」についてまとめます。その他機能や利用用途、ADってそもそも何なのかということは別記事にしていますので参考までに。

[【初心者向け】ActiveDirectory とは？](https://qiita.com/u-bayashi/items/57d76760f60617a938ef)
[【初心者向け】ActiveDirectory とは　Part2](https://qiita.com/u-bayashi/items/060505750d358b57b586)

本記事は具体的なAD機能設定の解説ではないのであしからず。

# 本記事の概要
本記事ではADにおけるアクセス制御、認証についてまとめます。具体的には例えばファイルサーバへのアクセス認証はどのように行われているかといった内容になります。




# ADにおける認証
一般的にAD環境において、PCログインの際にユーザIDとPWによる認証が通ってしまえば、ファイルサーバへのアクセス時やAD連携したシステムログインの際に再度認証を求められることなく利用できます。そのため***部分的にはSSO(シングルサインオン)*** が実現でき、利用者とっては便利な環境と言えます。AD環境において、これは<font color="Red">***「Kerberos認証」***</font>という認証方式で実現されています。

![SSO.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/edbe6db8-4f1e-a9e1-830b-1b697fb724af.png)


## Kerberos認証とは?
Kerberos（ケルベロス）とはギリシャ神話に出てくるあいつです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/7cd82bc1-6c1d-2342-fbb0-038b749fef16.png)



詳細についてCopilot先生に聞いたところ下記回答でした。


>Kerberos認証は、ネットワーク上で安全に認証を行うためのプロトコルです。
主に企業のネットワークやシングルサインオン（SSO）システムで使用されます。
>以下はその基本的な仕組みです

>初期認証: ユーザーがログインすると認証サーバー（AS）がユーザーの資格情報を確認し、チケット付与チケット（TGT）を発行します。
サービスリクエスト: ユーザーが特定のサービスにアクセスする際、TGTを使ってチケット付与サーバー（TGS）からサービスチケットを取得します。
サービスアクセス: サービスチケットを提示して、目的のサービスにアクセスします。

まとめ、補足すると
ユーザID/PWで初期認証を行った後はチケットを使って利用したいシステムの認証を行うことで、初期認証以降はユーザID/PWによらない認証を行う認証方式です。

ちなみの名前の由来ですが
>ケルベロスは、死者の世界への門を守る 3 つの頭を持つ犬でした。この名前は、Kerberos プロトコルの 3 つの「頭」、すなわちクライアント、サーバー、Kerberos の「チケット」を発行するKerberos Key Distribution Center（KDC、Kerberos 鍵配布センター）を指しています。

とのことです。

[出典]
https://www.keepersecurity.com/ja_JP/resources/glossary/what-is-kerberos/#:~:text=%E3%83%81%E3%82%B1%E3%83%83%E3%83%88%E3%81%AF%E3%80%81Kerberos%20%E8%AA%8D%E8%A8%BC%E3%83%97%E3%83%AD%E3%83%88%E3%82%B3%E3%83%AB,%E6%8A%91%E3%81%88%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82

## Kerberos認証の仕組み
Kerberos認証では大きく下記の３ステップでサービス(リソース)利用許可の認証を行っています。

① 利用者(接続元)をドメインユーザID・PWを使って認証＆マスターチケットの発行
② サービスチケットの発行
③ 利用したいサービス(リソース)へ接続

ややこしいのですがKerberos認証は「MicrosoftのAD」だけで利用されてる規格ではなく、その仕様は RFC 4120 で標準化されています。認証に登場するサービスや用語で同じものですがKerberos認証用語とAD用語で名前・呼び方が違ったりするので以下にまとめます。

| 内容 | Kerberos認証用語 |AD用語 |
| :---: | :---: |:---: |
| 管理の及ぶ範囲 | レルム(realmd) |ドメイン(Domain) |
| 認証とチケット発行サーバ | key distribution center(KDC) |Domain controller(DC) |
| 認証対象| プリンシパル |オブジェクト |

補足
- KDC（Key Distribution Center）はASとTGSの機能を持つ
- AS（Authentication Server）はユーザーからの認証要求を受け取る認証サーバ
- TGS（Ticket Granting Server）は認証の代わりに用いるチケットを発行するサーバ

### ① 利用者(接続元)をドメインユーザID・PWを使って認証＆マスターチケットの発行
認証の初期認証からTGTと呼ばれるマスターチケットの発行までを図にするとこんな感じです。

![利用者(接続元)をドメインユーザID・PWを使って認証＆マスターチケットの発行.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/8fc34c5a-c8bc-23d4-fc4b-b7a239b8fc51.png)

クライアントからKDC(ADからドメインコントローラー)に認証要求を行い、TGT(マスターチケット)を発行してもらいます。

### ② サービスチケットの発行
発行されたTGTを使って、KDCに「○○のサービスを使いたい」というリクエストを出し、サービス利用するためのチケット(サービスチケット)を発行してもらいます。


![② サービスチケットの発行.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/fbd7a4ab-d3d2-c4f4-6a3f-c63ac6b8253d.png)

### ③ 利用したいサービス(リソース)へ接続
サービスチケットを使い、サービスプリンシパルにアクセス要求を行います。

![利用したいサービス(リソース)へ接続.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/1db445fb-a04d-46fd-a2bb-1dc12d539ff1.png)

## AD認証(Kerberos認証)への攻撃
Kerberos認証の仕組みを悪用した攻撃として、有名どころとしては次のようなものがあります。

- Golden Ticket攻撃 
--->攻撃者が正規のユーザになりすまし、有効期間の長いTGTを発行させる。そのTGTを使ってサービスチケット要求し、各プリンシパルに不正アクセスを行う。

- Silver Ticket攻撃
--->攻撃者がサービスチケットの内容を盗聴(もしくは解析)し、サービスチケットを偽装し、サービスプリンシパルへアクセスを行う。


![再度修正.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/e4ad1ebf-9684-e792-ec82-29ef44a4faa4.png)



上記の攻撃対策のため、チケットの情報は暗号化されていたり、時刻同期のためのタイムスタンプの埋め込みなどがされています。

# SSOとKerberos認証
Kerberos認証も初期認証後は連携されたサービス・システムでのID/PW認証は基本的に求められないのでSSOと言ってもよいと思いますが、あくまてレルム（ドメイン）の範囲内でのことです。ドメイン外のシステムとはSSOできないので、ご注意ください。



# おわりに
AD系の認証でトラブルがあってから色々調べましたがADは奥が深いですね。どこかでADにおけるDNSの役割についても記事にしたいと思います。



# 参考にしたサイト

https://blog.jbs.co.jp/entry/2024/10/10/111747
https://pkiwithadcs.com/basic_knowledge_about_kerberos_authentication/
https://zenn.dev/furururu02/articles/a98e88271b03e7
https://milestone-of-se.nesuke.com/sv-advanced/activedirectory/ad-dns-srv-record/
https://dev.classmethod.jp/articles/detecting-kerberos-attack/
https://dev.classmethod.jp/articles/detecting-kerberos-attack-2/
https://www.crowdstrike.com/ja-jp/cybersecurity-101/cyberattacks/kerberoasting/
https://www.mbsd.jp/research/20190520/password2/
https://dev.classmethod.jp/articles/detecting-kerberos-attack/#toc-silver-tickets
https://note.com/tkusa/n/n2870d25ff4da