Windows Server 2003, Windows XP ve Windows 2000 için ağ erişim doğrulama algoritmaları ve örnekler

Bu makalede, NTLM protokolü kullanılarak ağ erişimi sırasında Windows hesabı doğrulamasının nasıl çalıştığının nasıl gözlemlendiği açıklanmaktadır.

Şunlar için geçerlidir: Windows 10 - tüm sürümler, Windows Server 2012 R2
Özgün KB numarası: 103390

Özet

Aşağıda, NTLM protokolü kullanılarak ağ erişimi sırasında Windows hesabı doğrulamasının nasıl çalıştığını açıklayan basitleştirilmiş bir algoritma yer alır. Örnek olarak sunucu ileti bloğu (SMB) protokolü üzerinden erişim kullanıyor, ancak NTLM kimlik doğrulamasını destekleyen diğer tüm sunucu uygulamaları için geçerlidir. Bu tartışma, bu sürecin iç çalışmalarını kapsamaz. Bu bilgilerle, belirlenimci koşullar altında Windows ağ oturum açma davranışını tahmin edebilirsiniz.

Kullanıcının kimliğini doğrulamak ve sunucu kaynaklarına erişim elde etmek için Kerberos kullanıldığında, işlem NTLM'nin yaptığı işlemden farklıdır.

Yerel veritabanının etki alanı veritabanı ve etki alanı denetleyicilerindeki tek veritabanı olduğunu unutmayın. Ancak diğer sunucularda ve tüm bilgisayarlarda yerel veritabanı etki alanı denetleyicisinden farklıdır.

Arka plan bilgileri

İki Windows Server 2003 tabanlı, Windows XP tabanlı veya Windows 2000 tabanlı bilgisayar bir ağ üzerinden iletişim kurarken, sunucu ileti bloğu (SMB) adlı üst düzey bir protokol kullanır. SMB komutları, NetBIOS Gelişmiş Kullanıcı Arabirimi (NetBEUI) veya TCP/IP gibi aktarım protokollerine eklenir. Örneğin, bir istemci bilgisayar bir NET USE komut gerçekleştirdiğinde bir "SMB Oturumu Kurulumu ve X" çerçevesi gönderilir.

Windows'ta "Oturum Kurulumu" SMB'sinde kullanıcı hesabı, şifrelenmiş parola ve oturum açma etki alanının karma işlevi bulunur. Bir etki alanı denetleyicisi, istemcinin NET USE komutunu tamamlama izinlerine sahip olup olmadığını belirlemek için tüm bu bilgileri inceler.

Algoritma

Windows istemci bilgisayarı bir sunucuya aşağıdaki komutu gönderir:

NET USE x: \\server\share

Windows istemci bilgisayarı, oturum açma etki alanını, kullanıcı hesabını ve parolasını içeren bir "Oturum Kurulumu" SMB'si gönderir.

Sunucu, SMB tarafından belirtilen etki alanı adını veya bilgisayar adını inceler. Ad sunucunun kendi adıysa aşağıdaki algoritma çalıştırılır:

    It checks its own domain database or computer database for
        a matching account.
    If it finds a matching account then
        The SMB password is compared to the domain database password or the computer database password.
        If  the password matches then
            The command completed successfully.
        If  the password does NOT match then
            The user is prompted for a password.
                The password is retested as above.
            System error 1326 has occurred. Logon failure: unknown
            user name or bad password.
        End
    If  it does NOT find the account in the domain Security Accounts Manager (SAM) database or computer SAM database then
        Guest permissions are tested.
        If  the guest account is enabled
            The command completed successfully.
        If  the guest account is disabled
            (* See Note a).
            The user is prompted for a password.
            System error 1326 has occurred. Logon failure:
                unknown user name or bad password.
        End

SMB'de belirtilen etki alanı sunucunun güvendiği bir etki alanıysa, aşağıdaki algoritma çalıştırılır:

    The server will do pass-through authentication. The
        network logon request will be sent to a server that has a domain controller role in the
        specified trusted domain.

Güvenli bir kanal ayarlanmadıysa aşağıdaki algoritma çalıştırılır:

The trusted domain controller checks its own domain database
        for a matching account.
    If the trusted domain controller finds a matching account, then
       NOT for Windows 2000 and later versions:
    It determines whether the account is a local or global account.
       If the account is local, then
           Guest permissions on the original server are tested.
           If the guest account is enabled
               The command completed successfully.
           If the guest account is disabled
               (* See Note 1) The user is prompted for a password.
               System error 1326 has occurred. Logon failure:
               unknown user name or bad password.
        End
        If the account is global (the only option for Active Directory)
           The SMB password is compared to the domain database
               password.
           If  the password matches, then
               The command completed successfully.
               (* See Note 2)
           If  the password does NOT match, then
               The user is prompted for a password.
                   The password is retested as above.
               System error 1326 has occurred. Logon failure:
               unknown user name or bad password.
       End
    If the trusted domain controller does NOT find the account in the trusted domain controller
           database, then
       Guest permissions are tested on the original server, not the trusted domain.  (* See Note 3)
       If  the guest account is enabled
           The user will have original server guest access.
           The command completed successfully.
       If  the guest account is disabled
           (* See Note 1) The user is prompted for a password.
           System error 1326 has occurred. Logon failure:
           unknown user name or bad password.
    End

Önemli

Aşağıdaki durumlarda, istemcinin sunucunun sahip olduğu veya bildiği farklı bir kullanıcı etki alanı kullandığı senaryolar ele alınmıştır. NTLMv2 kimlik doğrulama protokolünde anlaşmaya varıldığında bu uyuşmazlıkta bir sorun oluşur. v2'deki NTLM parola tuzu kullanır ve kullanıcı etki alanı bu tuzda istemci tarafından kullanılır.

Sunucu bilgileri alıp kullanıcıyı yerel veritabanında bulduğunda, sunucu salt ve karmayı hesaplamak için LOCAL veritabanının adını kullanır. Bu nedenle, istemci tarafından gönderilen "kaynak etki alanı" boşsa veya bilinmeyen bir etki alanıysa, tuz ve dolayısıyla parola karması eşleşmez. Bu gibi durumlarda, kimlik doğrulama girişimi "bilinmeyen kullanıcı adı veya hatalı parola" (STATUS_LOGON_FAILURE) hatasıyla başarısız olur. Girişimin denetim olayı "yanlış parola" simgesi STATUS_WRONG_PASSWORD bildirecektir.

Örnek olay:

Günlük Adı: Güvenlik
Kaynak: Microsoft-Windows-Security-Auditing
Olay Kimliği: 4625
Görev Kategorisi: Oturum Açma
Düzey: Bilgi
Anahtar Sözcükler: Denetim Hatası
Bilgisayar: sunucu-bilgisayar1
Açıklama:
Bir hesap oturum açamadı.

Konu:

Güvenlik Kimliği: NULL SID
Hesap Adı: -
Hesap Etki Alanı: -
Oturum Açma Kimliği: 0x0

Oturum açma türü: 3

Oturum açma işleminin başarısız olduğu hesap:

Güvenlik Kimliği: NULL SID
Hesap Adı: ntadmin
Hesap Etki Alanı: istemci-bilgisayar1

Hata bilgileri:

Hata Nedeni: Bilinmeyen kullanıcı adı veya hatalı parola.
Durum: 0xc000006d
Alt Durum: 0xc000006a
...

Ayrıntılı kimlik doğrulama bilgileri:

Oturum Açma İşlemi: NtLmSsp
Kimlik Doğrulama Paketi: NTLM
Transited Services: -
Paket Adı (yalnızca NTLM): -
Anahtar Uzunluğu: 0

Bu senaryodan kaçınmak için istemciye doğru etki alanı adını açıkça eklemeniz gerekir. Bir çalışma grubu senaryosunda sürücü eşlemesi için aşağıdakiler olabilir:
Net use x: \\server-computer1\data /u:server-computer1\ntadmin *

SMB'de belirtilen etki alanı sunucu tarafından bilinmiyorsa(örneğin, bir etki alanı belirtildiyse ancak sunucu tarafından güvenilen etki alanı veya etki alanı denetleyicisi olarak tanınmadıysa- aşağıdaki algoritma çalıştırılır:

    It  will check its own account database for
        a matching account
    If  the server finds a matching account, then
        The SMB password is compared to the domain database password or the computer database password.
        If  the password matches, then
            The command completed successfully.
        If  the password does NOT match, then
            The user is prompted for a password.
                The password is retested as above.
            System error 1326 has occurred. Logon failure: unknown
            user name or bad password.
    End
    If  it does NOT find the account in the domain database then
        guest permissions are tested.
        If  the guest account is enabled
            The command completed successfully.
        If  the guest account is disabled
            System error 1326 has occurred. Logon failure:
            unknown user name or bad password.
    End

SMB'de belirtilen etki alanı NULL ise, yani etki alanı belirtilmezse, aşağıdaki algoritma çalıştırılır:

    The server will treat this as a local network logon. The server
        will test for a matching account in its own database.
    If  it finds a matching account, then
        The SMB password is compared to the SAM database password.
        If  the password matches, then
            The command completed successfully.
        If  the password does NOT match, then
            The user is prompted for a password.
                The password is retested as above.
            System error 1326 has occurred. Logon failure: unknown
            user name or bad password.
    End
    If  it does NOT find the account in the local SAM database AND
      LsaLookupRestrictIsolatedNameLevel=0 AND NeverPing=0, then (* See Note 4)
        The server will simultaneously ask each domain that it trusts whether it has account that
            matches the SMB account.
        The first trusted domain to reply is sent a request to
            perform pass-through authentication of the client
            information.
        The trusted domain will look in its own database.
        If  an account that matches the SMB account is found, then
            The trusted domain determines whether the account is a local or global
                account.
           Not for Windows 2000 and later versions:
            If  the account is local then
                Guest permissions on the original server are tested.
                If  the guest account is enabled
                    The command completed successfully.
                If  the guest account is disabled
                The user will be prompted for a password.
                Regardless of what password is entered, the user will receive
                    "Error 5: Access has been denied."
            End
            If  the account is global (the only option for Active Directory)
                The password that was specified in the SMB is compared
                    to the SAM database password.
                If  the password matches, then
                    The command completed successfully.
                If  the password does NOT match, then
                    The user is prompted for a password.
                        The password is retested as above.
                    System error 1326 has occurred. Logon failure:
                    unknown user name or bad password.
            End
    If  no trusted domains respond to the request to identify the
        account, then
        Guest permissions are tested on the original server,
            not the trusted server.
        If  the guest account is enabled
            The command completed successfully.
        If  the guest account is disabled
            System error 1326 has occurred. Logon failure:
            unknown user name or bad password.
    End

Notlar

  1. Konuk hesabı devre dışı bırakılırsa ve kullanıcının hesabı yoksa, sunucu yine de parola istemeye devam eder. Hiçbir parola gereksinimlerini karşılamasa da, sunucu güvenlik önlemi olarak parola istemeye devam eder. Bu güvenlik önlemi, yetkisiz bir kullanıcının hesabın mevcut olduğu durumla hesabın mevcut olmadığı durumlar arasındaki farkı belirleyememesini güvenceye alır. Hesabın mevcut olup olmadığına bakılmaksızın kullanıcıdan her zaman parola istenir.

  2. Bu noktada, yanıttaki güvenilen etki alanından aşağıdaki bilgiler döndürülür: Etki Alanı SID, Kullanıcı Kimliği, Genel Grup Üyelikleri, Oturum Açma Zamanı, Oturum Kapatma Zamanı, KickOffTime, Tam Ad, Parola Soyadı Kümesi, Parola BayrağıNı Değiştirebilir, Parola BayrağıNı Değiştirmelidir, Kullanıcı Betiği, Profil Yolu, Giriş Dizini ve Hatalı Parola Sayısı.

  3. Güvenilen etki alanında hesap bulunamazsa, işletim sisteminin sunucuya karşı kimlik doğrulaması için tutarlı davranış garantisi vermek için yerel konuk hesabını kullanması gerekir.

  4. LsaLookupRestrictIsolatedNameLevel ve NeverPing kayıt defteri girdilerini kullanarak güvenilen etki alanlarında yalıtılmış adların aranmasını ve oturum açmasını kısıtlama hakkında daha fazla bilgi için bkz. Active Directory etki alanı denetleyicisinde çok fazla dış güvenleriniz varsa Lsass.exe işlemi yanıt vermeyi durdurabilir.

    • Güvenilen etki alanlarındaki konuk hesapları hiçbir zaman kullanılamaz.

    • Gerçek iç işlem, burada açıklanan algoritmalardan daha karmaşıktır.

    • Bu algoritmalar, geçişli kimlik doğrulamasının gerçek mekaniği hakkında bilgi vermez. Daha fazla bilgi için bkz. Windows'da NTLM kullanıcı kimlik doğrulaması

    • Bu algoritmalar Windows Server 2003, Windows XP ve Windows 2000'de kullanılan parola şifreleme işlemini tartışmaz. Kimlik doğrulama isteğinin bir parçası olarak tek yönlü parola karmasından türetilmiş bir ikili büyük nesne (BLOB) gönderilir. Bu BLOB'un içeriği, oturum açma için seçilen kimlik doğrulama protokolüne bağlıdır.

    • Bu makalede, Microsoft Kimlik Doğrulama Modülü'ne ilişkin iç çalışmalar ele alınmaz.

    • Bu algoritmalar, etkinleştirildiğinde konuk hesabının parolası olmadığını varsayar. Varsayılan olarak, konuk hesabının Windows Server 2003, Windows XP ve Windows 2000'de parolası yoktur. Bir konuk hesabı parolası belirtilirse, SMB'de gönderilen kullanıcı parolası bu konuk hesabı parolası ile eşleşmelidir.

Örnekler

Aşağıda, bu algoritmaların çalışma örnekleri verilmiştir.

Örnek 1

SCRATCH-DOMAIN etki alanı hesap veritabanındaki hesap adı ve parolayı kullanarak bilgisayarda oturum açtınız. SCRATCH-DOMAIN etki alanı için etki alanı denetleyicisi için komutunu çalıştırdığınızda NET USE \\SCRATCH , komut başarıyla tamamlanır. SCRATCH-DOMAIN etki alanına güvenen etki alanı denetleyicisi için komutunu çalıştırdığınızda NET USE \\NET aşağıdaki hata iletisini alırsınız:

Sistem hatası 1326 oluştu. Oturum açma hatası: bilinmeyen kullanıcı adı veya hatalı parola.

\SCRATCH-DOMAIN\USER1 hesabının \\NET üzerinde izinleri vardır.

Not

Bu örnekte aşağıdaki yapılandırmalar varsayılır.

Yapılandırma

Yerel güvenlik yetkilisi olan bilgisayar:

-Oturum açma hesabı: KULLANICI1
-Parola: PSW1
-Oturum Açma Etki Alanı: LOCAL1

Active Directory etki alanı denetleyicisi:

-Sunucu Adı: NET</WWITEM>
-Etki Alanı: NET-DOMAIN</WWITEM>
-Güven: NET-DOMAIN Trust SCRATCH-DOMAIN (Bu nedenle,
SCRATCH-ETKİ ALANI üzerindeki hesaplara izinler verilebilir
net- ETKİ ALANI'nda).

NET-DOMAIN etki alanı:

  • NET-DOMAIN etki alanının etki alanı hesap veritabanı USER1 için bir hesap içermiyor.
  • Konuk hesabı devre dışı bırakıldı.

Windows Server 2003:

-Sunucu Adı: SCRATCH
-Etki Alanı: SCRATCH-DOMAIN
-Domain Database contains account: USER1
-Etki Alanı Veritabanı parola içeriyor: PSW1

Bu örnekte bilgisayar, bilgisayarın etki alanı hesabının bulunduğu SCRATCH-DOMAIN etki alanında değil yerel etki alanında oturum açar.

Örnek 2

komutunu çalıştırdığınızda NET USE x: \\NET\share aşağıdaki adımlar gerçekleşir:

  1. Bilgisayar , "Oturum Kurulumu" SMB'sinde aşağıdakileri gönderir:

    • account = "USER1"
    • password = "PSW1"
    • domain = "LOCAL1"
  2. \\NET sunucusu SMB'yi alır ve hesap adına bakar.

  3. Sunucu yerel etki alanı hesabı veritabanını inceler ve eşleşme bulamaz.

  4. Sunucu daha sonra SMB etki alanı adını inceler.

  5. Sunucu "LOCAL1" öğesine güvenmediğinden, sunucu güvenilen etki alanlarını denetlemez.

  6. Sunucu daha sonra konuk hesabını denetler.

  7. Konuk hesabı devre dışı bırakıldı, bu nedenle "Sistem hatası 1326 oluştu. Oturum açma hatası: bilinmeyen kullanıcı adı veya hatalı parola." hata iletisi oluşturulur.

Örnek 3

komutunu çalıştırdığınızda NET USE x: \\SCRATCH\share aşağıdaki adımlar gerçekleşir:

  1. Bilgisayar , "Oturum Kurulumu" SMB'sinde aşağıdakileri gönderir:

    • account = "USER1"
    • password = "PSW1"
    • domain = "LOCAL1"
  2. \\SCRATCH sunucusu SMB'yi alır ve hesap adını inceler.

  3. Sunucu yerel etki alanı hesabı veritabanını inceler ve bir eşleşme bulur.

  4. Sunucu daha sonra SMB parolasını etki alanı hesabı parolası ile karşılaştırır.

  5. Parolalar eşleşsin.

Bu nedenle, "Komut Başarıyla Tamamlanıyor" iletisi oluşturulur. Örnek 2 ve Örnek 3'te, güven ilişkisi kullanılamaz. Bilgisayar SCRATCH-DOMAIN etki alanında oturum açmış olsaydı, NET USE x: \\NET\share komut başarılı olurdu.

İdeal çözüm, tüm bilgisayarların bir etki alanında oturum açmasını sağlamaktır. Oturum açmak için kullanıcının etki alanını, hesabı ve parolayı belirtmesi gerekir. Bunu yaptıktan sonra, tüm NET USE -type komutları doğru etki alanı, hesap ve parola bilgilerini geçirir. Yöneticiler hem bilgisayarlarda hem de birden çok etki alanlarında yinelenen hesaplardan kaçınmaya çalışmalıdır. Windows Server 2003 tabanlı, Windows XP tabanlı ve Windows 2000 tabanlı bilgisayarlar, etki alanları arasındaki güvenleri ve etki alanı veritabanlarını kullanabilen üyeleri kullanarak bu yapılandırmayı önlemeye yardımcı olur.

Geçici Çözüm

Bu durumlarda kullanılabilecek bir geçici çözüm vardır. Bilgisayardan aşağıdaki komutu çalıştırabilirsiniz:

NET USE X: \\NET\SHARE /USER:SCRATCH-DOMAIN\USER1 PSW1

Bu komutta aşağıdakiler doğrudur:

  • \\NET = Erişilmekte olan etki alanı denetleyicisinin bilgisayar adı.
  • \PAYLAŞ = Paylaşım adı.
  • /USER: "Oturum Kurulumu" SMB'sinde belirtilmesi gereken etki alanını, hesabı ve parolayı belirtmenize olanak tanıyan komut satırı parametresi.
  • SCRATCH-DOMAIN = Kullanıcı hesabının bulunduğu etki alanının etki alanı adı.
  • \USER1 = doğrulanacak hesap.
  • PSW1 = etki alanındaki hesapla eşleşen parola.

Bu komut hakkında daha fazla bilgi için komut istemine aşağıdakileri yazın:

NET USE /?  

NULL etki alanı adları

Windows Server 2003, Windows XP ve Windows 2000'de bulunan Microsoft SMB istemcisi, "Oturum Kurulumu SMB'sinde [x73]" SMB'sinde NULL etki alanı adları gönderir. Microsoft SMB istemcisi, etki alanı adını oturum açma etki alanı adını belirterek ve ETKI alanı adı NET USE komutunda belirtilmezse NULL karakter göndererek işler. Microsoft SMB istemcisi, Örnek 1'de açıklanan davranışı da sergiler.

Not

  • Varsayılan etki alanı adı, "ETKİALANI =" satırındaki LANMAN.INI dosyasında belirtilir. Bu, komutuyla anahtar tarafından /DOMAIN:NET LOGON geçersiz kılınabilir.
  • Genellikle SMB'de "NULL" için iki gösterim vardır: Sıfır uzunluklu bir etki alanı adı ve soru işareti karakterinden (?) oluşan bir baytlık etki alanı adı. SMB sunucusu soru işaretini yakalar ve yerel güvenlik yetkilisine (LSA) geçirmeden önce null olarak çevirir.

Sorun giderme

Ağ erişim sorunlarını gidermek için iyi bir ipucu, aşağıdakileri yaparak denetimi etkinleştirmektir.

Windows 2000 tabanlı etki alanı denetleyicilerinin Windows 2000 ve sonraki sürümleri

  1. Etki alanı denetleyicisindeki Yönetim Araçları'ndan Active Directory Kullanıcıları ve Bilgisayarları başlatın.
  2. Etki Alanı Denetleyicileri OU'sa sağ tıklayın ve ardından Özellikler'e tıklayın.
  3. grup ilkesi sekmesinde Varsayılan Etki Alanı Denetleyicisi İlkesi'ne çift tıklayın.
  4. İlke Düzenleyici Bilgisayar Ayarları'na, Windows Ayarları'na, Güvenlik Ayarları'na, Yerel İlkeler'e ve ardından Denetim İlkesi'ne tıklayın.
  5. Oturum Açma ve Hesap Oturum Açma Başarılı seçeneğini ve Hata seçeneğini belirleyin.

Windows 2000 sunucuları ve üyeleri için etki alanı ayarları

  1. Etki alanı denetleyicisindeki Yönetim Araçları'ndan Active Directory Kullanıcıları ve Bilgisayarları başlatın.
  2. Etki alanı adına sağ tıklayın ve ardından Özellikler'e tıklayın.
  3. grup ilkesi sekmesinde Varsayılan Etki Alanı İlkesi'ne çift tıklayın.
  4. İlke Düzenleyici Bilgisayar Ayarları'na, Windows Ayarları'na,Güvenlik Ayarları'na, Yerel İlkeler'e ve ardından Denetim İlkesi'ne tıklayın.
  5. Oturum Açma ve Hesap Oturum Açma Başarılı seçeneğini ve Hata seçeneğini belirleyin.

Windows 2000 sunucuları ve üyeleri için yerel ayarlar

  1. Yönetim Araçları'ndan Yerel Güvenlik İlkesi'ni başlatın.
  2. Denetim İlkesi'ni açın.
  3. Oturum Açma ve Hesap Oturum Açma Başarılı seçeneğini ve Hata seçeneğini belirleyin. Şimdi, bir ağ kullanıcısı bu sunucuya uzaktan eriştiğinde, Olay Görüntüleyicisi bir denetim kaydı günlüğe kaydedilir. Bu olayları Olay Görüntüleyicisi görmek için Günlük menüsünde Güvenlik'e tıklayın.

Güven ilişkileri, doğrudan kimlik doğrulaması, kullanıcı izinleri ve etki alanı oturum açma işlemleri hakkında daha fazla bilgi için bkz. "Windows Server 2003 Güvenlik Hizmetleri'ne Teknik Genel Bakış."

Daha fazla bilgi

Temel olarak, aynı ağ erişim doğrulama algoritmaları Windows Server 2008, Windows Server 2008 R2, Windows Server 2012 Windows Server 2012 R2'ye uygulanır.

Bu işletim sisteminin SMB'de birkaç yeni özelliği vardır.

Windows Server 2008

Windows Server 2012