web-dev-qa-db-ja.com

Active DirectoryがKerberosまたはNTLMのどちらを使用しているかをどのように確認しますか?

使用できるコマンドラインプログラムはありますか?

15
LeWoody

質問は頭をひねる必要があると思います。 Active DirectoryはKerberosとNTLMの両方をサポートしています。 WindowsはまずKerberosを試し、すべての要件が満たされない場合はNTLMにフォールバックします。

たとえば、\ server1\shareのような名前でファイル共有にアクセスすると、Kerberosが呼び出され、適切な権限があれば成功するはずです。ただし、IPアドレスを使用して同じファイル共有にアクセスすると、最初にKerberosが呼び出されて失敗し(IPアドレスのSPNがないため)、次にNTLMにフェールオーバーします。

そのため、プログラムがADに対して認証をどのように試みているかを判別し、どのプロトコルが使用されているかを通知する必要があります。

何があなたにこの質問をするように促したのか知りたいです。

9
KAPes

アクティブなKerberosチケットのリストを表示して、関心のあるサービスにチケットがあるかどうかを確認できます。 klist.exe を実行します。

registry をハッキングした場合、Kerberosイベントをログに記録する方法もあります。

6
TonyUser

コンピューターがサーバーであろうとワークステーションであろうと、ログオンイベントを実際に監査する必要があります。システムにアクセスしているユーザーを特定し、セキュリティ関連の問題のトラブルシューティングを行うと役立ちます。

監査ポリシーは、グループポリシーを使用して変更できます。開始...実行... gpedit.msc ...コンピューターの構成、Windowsの設定、セキュリティの設定、ローカルポリシー、監査ポリシー、「ログオンイベントの監査」。 [成功]および[失敗]チェックボックスをオンにします。ログアウトしてログインし、Windowsセキュリティイベントログにいくつかの一般的な540イベントを確認してください。

2
Eric H

NetstatはすべてのリッスンTCPおよびUDP接続を示します。オプション-naはすべての接続に使用され、名前またはポートの解決はありません。'b 'オプションは、それに関連するプログラムを表示します。DNSの場合が実行されていると、他の接続がたくさん表示される可能性があるため、TCPも指定する必要がある場合があります。

Kerberosは、Active Directoryドメインコントローラーを展開する場合に最も確実に実行されます。

netstat -nab

0
Jason B Shrout

このツールを試すことができます。 http://blog.michelbarneveld.nl/media/p/33.aspx

これは、Webサイトで認証をテストするためのツールです。使用されている認証タイプが表示されます:Kerberos、NTLM、基本、なし。ただし、使用されるSPN、HTTPヘッダー、復号化されたNTLMおよびKerberos認証ヘッダーなどの情報も表示されます。また、Kerberosチケットを表示および削除することもできます。

0
Davis

ログオンイベントを監査していると仮定して、セキュリティイベントログを確認し、540イベントを探します。特定の認証がKerberosまたはNTLMのどちらで行われたかがわかります。

0
Boden
 public string FindAllUsers()
        {
            string strReturn="";
            try
            {
                DirectoryEntry directoryEntry = new DirectoryEntry("WinNT://" + Environment.UserDomainName);
                string userNames = "";
                string authenticationType = "";
                foreach (DirectoryEntry child in directoryEntry.Children)
                {
                    if (child.SchemaClassName == "User")
                    {
                        userNames += child.Name + Environment.NewLine; //Iterates and binds all user using a newline
                        authenticationType += child.Username + Environment.NewLine;
                    }
                }

                strReturn = userNames + "\n\n" + authenticationType;
                //Console.WriteLine("************************Users************************");
                //Console.WriteLine(userNames);
                //Console.WriteLine("*****************Authentication Type*****************");
                //Console.WriteLine(authenticationType);
            }
            catch (Exception)
            {
                Console.WriteLine("Network error occured.");
                strReturn = "";
            }
            return strReturn;
        }
0
user262211