認証とセキュリティ

目次

Active Directoryの認証とは?

Active Directoryの認証とは、Microsoftのネットワーク環境において利用者の身元を確認し、適切なリソースへのアクセスを制御するための基盤となるプロセスです。

これはWindowsベースのネットワークにおいて、ユーザーが本人であることを証明し、許可されたリソースにのみアクセスできるようにするための重要なセキュリティ機能です。

ユーザー認証とリソースアクセス
Active Directoryは階層的なデータベース構造を持ち、ドメインと呼ばれる管理単位でネットワークリソースを組織化します。

認証プロセスはこのドメイン構造の中で行われ、主にドメインコントローラーと呼ばれるサーバーが認証サービスを提供します。

認証の際にはユーザー名とパスワードが基本的な証明書として使用されますが、多要素認証やスマートカード、生体認証などの高度な認証方法も組み込むことができます。

ユーザー認証の方法
Active Directoryの認証はシングルサインオン(SSO)機能も提供しており、一度認証されたユーザーは複数のリソースやサービスに再認証なしでアクセスできるようになります。

SSO
また、権限の委任やグループポリシーによる設定の一元管理も可能で、これによりセキュリティポリシーの適用と管理が効率化されます。

Active Directoryの認証システムでは、異なる認証プロトコルが環境や状況に応じて使用され、それぞれに特徴があります。

認証情報は暗号化されて保護され、不正アクセスからシステムを守るための様々な機能が実装されています。

Windowsネットワーク内だけでなく、LDAP(Lightweight Directory Access Protocol)を通じて他のシステムやアプリケーションとも連携可能であり、エンタープライズ環境における統合認証基盤として機能します。

LDAP認証
LDAPとは?
LDAP(Lightweight Directory Access Protocol)は、ネットワーク上でユーザー情報やアクセス権限などを管理するための仕組みです。
たとえば、ログイン時に「誰がどんな権限を持っているのか」をサーバーが確認するために使われます。
WindowsやLinuxなどさまざまなシステムで利用され、Active DirectoryもLDAPを使って情報を管理しています。
簡単に言うと、組織内の認証やアクセス管理を効率化するための言語のようなものです!

管理者は認証ポリシーを設定することで、パスワードの複雑さやアカウントロックアウトなどのセキュリティ対策を強化でき、不正アクセスからシステムを保護することができます。

Active Directoryの認証は、ドメインへの参加、リソースアクセス、アプリケーション利用など、様々なシナリオで使用され、組織のITインフラストラクチャの安全性と効率性を支える重要な要素となっています。

認証方式

Windowsの認証方式は主に、NTLM認証とKerberos認証があります。

それぞれに特徴があるので、順番に説明していきます。

NTLM認証

NTLM(NT LAN Manager)認証はMicrosoftが開発した認証プロトコルであり、Active Directoryネットワークにおいて広く使用されている従来からの認証方式です。

NTLMはWindows NTから導入され、現代のWindows環境でも互換性のために引き続きサポートされています。

この認証プロトコルはチャレンジレスポンス方式を採用しており、クライアントとサーバー間で直接認証情報をやり取りする点が特徴です。

認証プロセスでは、まずクライアントがサーバーにアクセスを要求し、サーバーはランダムに生成されたチャレンジ(乱数)をクライアントに送信します。

NTLM(チャレンジ)
クライアントはこのチャレンジとユーザーのパスワードハッシュを組み合わせて応答を計算し、その応答をサーバーに返送します。

NTLM(ハッシュ計算)
サーバー側ではユーザーのパスワードハッシュを使用して同じ計算を行い、クライアントの応答と一致するかを検証します。

NTLM(ハッシュ一致確認)
このプロセスにおいて、パスワード自体はネットワーク上を平文で送信されることはなく、ハッシュ化された形式でやり取りされるため、基本的なセキュリティは確保されています。

ポイント! ハッシュは一方向性があり、同じ入力からは必ず同じハッシュ値が生成されるという特性があります。
ユーザーとサーバはパスワードとチャレンジ(乱数)を知っているので同じ結果が出ますが、逆に1文字でも違うと全く異なるハッシュ値が生成されます。
これにより、パスワードを直接送信せずとも安全に本人認証が可能になるという仕組みなんです!

NTLMには複数のバージョンがあり、初期のLM(LAN Manager)、後続のNTLMv1、そして最も安全なNTLMv2へと進化してきました。

特にNTLMv2は前バージョンの脆弱性を修正し、より強固なセキュリティを提供しています。

NTLMの大きな特徴として、ドメインコントローラーに直接アクセスできない環境や、Kerberosが利用できないシナリオでもローカルアカウントを使用して認証できる柔軟性があります。

ただし、NTLMにはパスワードハッシュの再利用攻撃(Pass-the-Hash)に弱いという脆弱性や、中間者攻撃に対する脆弱性といった欠点も存在します。

パスワードハッシュの再利用攻撃(Pass-the-Hash)
Pass-the-Hash攻撃とは、攻撃者がハッシュ化された認証情報を何らかの方法(通信傍受やウイルスなど)で盗み、それを使ってシステムに不正ログインする手法です。
攻撃者はパスワードを解読せずに、利用者が計算して出したハッシュ値をそのまま認証情報として悪用するため、パスワードやチャレンジ(乱数)を知らなくてもアクセスできるのが特徴です。
答えの部分だけを盗み見て、サーバに本人と誤認させる方法です。

また、NTLMはドメイン間の信頼関係においてKerberosほど効率的ではなく、複雑なネットワーク環境では認証の連鎖が必要になることで遅延が生じることがあります。

Windowsネットワークでは基本的にKerberosが優先されますが、レガシーシステムとの互換性やKerberosが使用できない特定の状況(例:NetBIOS名でのアクセス時)においてNTLMがフォールバック認証方式として使用されます。

この二重の認証システムがWindows環境の幅広い互換性を支えています。

Kerberos認証

Kerberos認証はMIT(マサチューセッツ工科大学)で開発され、Active Directoryのメインの認証プロトコルとして採用されているチケットベースの認証システムです。

Windows 2000以降のActive Directory環境において標準認証プロトコルとして実装されており、NTLMよりも高いセキュリティと効率性を提供します。

Kerberosの中核は「Key Distribution Center(KDC)」と呼ばれるサービスで、Active DirectoryではドメインコントローラーがKDCの役割を担っています。

KDCは「Authentication Service(AS)」「Ticket Granting Service(TGS)」の二つのコンポーネントで構成されています。

KDCの構成
Kerberosの認証プロセスは「チケット」と呼ばれる暗号化された認証情報を使用し、これにより直接パスワード情報をやり取りすることなく安全な認証を実現しています。

まずユーザーがログオンすると、ASにTicket Granting Ticket(TGT)を要求します。

ASはユーザーの認証情報を検証し、KDCの秘密鍵で暗号化されたTGTを発行します。

TGT発行
このTGTはユーザーのセッション中有効であり(通常10時間)、以後の認証プロセスでパスワードを再入力する必要がなくなります。

ユーザーが特定のサービスにアクセスしようとすると、TGTを使用してTGSからそのサービス用のサービスチケットを取得します。

チケット発行
このサービスチケットは対象サービスの秘密鍵で暗号化されており、該当サービスのみが復号できるため、安全にユーザー認証が行われます。

Kerberosの大きな利点は相互認証機能で、クライアントがサーバーを、サーバーがクライアントをそれぞれ認証することにより、中間者攻撃のリスクを大幅に低減します。

また時間同期が前提となっており、チケットに有効期限が設定されることでリプレイ攻撃への耐性が強化されています。

ドメイン間やフォレスト間の信頼関係も効率的に処理でき、複雑な企業ネットワーク環境における認証の連鎖を円滑に行えます。

ただしKerberosは時刻同期が不可欠であり、ドメイン内のコンピュータ間の時差が5分を超えると認証が失敗します。

また、インターネットを介した認証シナリオではファイアウォールがKerberosの通信をブロックする場合があり、そのような状況ではNTLMが代替として使用されることがあります。

Kerberosは単一ドメイン内だけでなく、異なるドメイン間やMicrosoft以外のシステムとの相互運用性も備えており、エンタープライズレベルの統合認証インフラストラクチャとして優れた柔軟性を提供しています。

ログオンプロセスの流れ

ADによるNTLM認証とKerberos認証のフローを見てきましたが、実際にPCにログオンするときのプロセスを通しで解説します。

ユーザーがWindowsマシンの電源を入れ、ログオン画面でユーザー名とパスワードを入力することから始まります。

この認証情報はまずローカルのセキュリティサブシステム(Local Security Authority Subsystem Service、LSASS)によって処理されます。

LASS
LSASSはユーザーがドメインアカウントでログオンしようとしていることを検出すると、ドメインコントローラーとの通信を開始します。

ここでWindows OSはまず最初にKerberos認証を試みますが、これが何らかの理由で失敗した場合には自動的にNTLM認証にフォールバックします。

LSASSの認証方式の選択
Kerberos認証の場合、クライアントはドメインコントローラー上のKDC(Key Distribution Center)に対してTGT(Ticket Granting Ticket)を要求します。

ここからは、「Kerberos認証」の項で説明した流れになります。

失敗した場合は、NTLM認証に方式を変えてチャレンジの取得やハッシュ計算をLSASSが自動的にADとやり取りしてくれます。

認証が成功すると、クライアントマシンはドメインコントローラーからユーザープロファイル情報やグループメンバーシップ情報を取得し、適用される流れです。。

このようにログオンの認証においては、LSASSが統括管理としての役割を担い、ADとの認証を実行してくれているのです。

まとめ

Active Directory(AD)の認証は、組織のITインフラを守る鍵となる仕組みです。

適切な認証方式を理解し、その動作を把握することで、セキュリティリスクを低減し、管理の効率化を図ることができます。

特に、NTLMとKerberosの違いを知ることは重要です。

NTLMは古い認証方式ですが、互換性のために依然として利用されることがあります。

一方で、Kerberosはより安全で、現代の環境では推奨される認証方式です。

もし誤った設定をしてしまえば、意図しない脆弱性を抱えることになり、外部からの攻撃や権限昇格のリスクが生じる可能性があります。

また、ログオンプロセスを理解することは、トラブルシューティングやセキュリティ監査に欠かせません。

認証の流れを把握していれば、なぜログインに失敗したのか、どの通信が影響を受けているのかを迅速に判断でき、適切な対策を取ることができます。

認証は組織の全ユーザーに関わる重要な仕組みです。

AD認証を深く理解し、適切に管理できるようになることで、組織全体のセキュリティ強化と業務の安定化を実現することができます。

ぜひ、実際の環境で設定を確認しながら、さらに知識を深めてみてください!