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: 0x0Oturum 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-bilgisayar1Hata 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
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.
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ı.
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.
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:
Bilgisayar , "Oturum Kurulumu" SMB'sinde aşağıdakileri gönderir:
- account = "USER1"
- password = "PSW1"
- domain = "LOCAL1"
\\NET sunucusu SMB'yi alır ve hesap adına bakar.
Sunucu yerel etki alanı hesabı veritabanını inceler ve eşleşme bulamaz.
Sunucu daha sonra SMB etki alanı adını inceler.
Sunucu "LOCAL1" öğesine güvenmediğinden, sunucu güvenilen etki alanlarını denetlemez.
Sunucu daha sonra konuk hesabını denetler.
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:
Bilgisayar , "Oturum Kurulumu" SMB'sinde aşağıdakileri gönderir:
- account = "USER1"
- password = "PSW1"
- domain = "LOCAL1"
\\SCRATCH sunucusu SMB'yi alır ve hesap adını inceler.
Sunucu yerel etki alanı hesabı veritabanını inceler ve bir eşleşme bulur.
Sunucu daha sonra SMB parolasını etki alanı hesabı parolası ile karşılaştırır.
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
- Etki alanı denetleyicisindeki Yönetim Araçları'ndan Active Directory Kullanıcıları ve Bilgisayarları başlatın.
- Etki Alanı Denetleyicileri OU'sa sağ tıklayın ve ardından Özellikler'e tıklayın.
- grup ilkesi sekmesinde Varsayılan Etki Alanı Denetleyicisi İlkesi'ne çift tıklayın.
- İ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.
- 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ı
- Etki alanı denetleyicisindeki Yönetim Araçları'ndan Active Directory Kullanıcıları ve Bilgisayarları başlatın.
- Etki alanı adına sağ tıklayın ve ardından Özellikler'e tıklayın.
- grup ilkesi sekmesinde Varsayılan Etki Alanı İlkesi'ne çift tıklayın.
- İ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.
- 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
- Yönetim Araçları'ndan Yerel Güvenlik İlkesi'ni başlatın.
- Denetim İlkesi'ni açın.
- 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
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin