Ana içeriğe atla

PWDCOMPARE() ile SQL Server'da NonCompliant Password kontrolü

Bu yazı SQL Server 2008 ve sonrasi için geçerli bir yazıdır. SQL Server üzerinde tanımlı SQL loginlerin şifrelerinin bazı çok bilinen şifrelerle aynı olup olmadığı kontrolü yapılır. Faydalı oması dileğiyle.

İlgili Transact-SQL'in kullanım şekli (syntax) aşağıdaki gibidir.
PWDCOMPARE ( 'clear_text_password', password_hash [ , version ] )
Kullanılabilecek argümanların açıklaması aşağıdaki gibidir.
  •  clear_text_password: Kontrol edeceğimiz şifrelenmemiş (unecnrypted) password. 
  •  password_hash: Logine ait password encrption hash bilgisi.
  •  version: İsteğe bağlı olarak kullanılabilen bu parametre ile SQL Server 2000 öncesinden  taşınan ancak yeni versiyona convert edilmemiş loginlerin password_hashlerinin kontrol  edilmesi imkanı tanınır.


Aşağıdaki T-SQL ile şifresi boş olan loginler getirilir.

SELECT name FROM sys.sql_logins  

WHERE PWDCOMPARE('', password_hash) = 1  

Aşağıdaki T-SQL ile şifresi password olan loginler getirilir.

SELECT name FROM sys.sql_logins  
WHERE PWDCOMPARE('password', password_hash) =

Aşağıdaki T-SQL ile şifresi login ismiyle aynı olan loginler getirilir.

SELECT name FROM sys.sql_logins  
WHERE PWDCOMPARE(name, password_hash) = 1


Bu scriptler data güvenliğinizi maksimize edebilmek adına çeşitlendirilerek kullanılabilir. Aynı zamanda database hack tehditlerine karşı mutlaka sistemde takip edilmesi gereken bir T-SQL syntaxı olarak yer almalıdır. Bilgimiz dışında çalıştırıldığında üretilecek alert mekanizmalarıyla durum kontrol altına alınmalıdır.

Yorumlar

Bu blogdaki popüler yayınlar

Check Computer Object is Alive On Domain

Powershell'in gücü system admin rolündeki kişiler için tartışılmaz. Zaman zaman üzerinde aging tanımı olmayan ortamlarda, düzgün yönetilemeyen domain ve dns ortamlarında aslında kapalı olan ve kapalı olmamasına rağmen domainden düşmüş computer objelerinin tespit edilebilmesi için aşağıdaki gibi bir script geliştirmiştim. Umarım faydası olur, her türlü ek geliştirme için hakkiogretmen@gmail.com adresine mail atabilirsiniz. Import-Module ActiveDirectory $myServers = @("servers") If (Test-Path "D:\Temp\PasswordLastSetResult.txt"){ Remove-Item "D:\Temp\PasswordLastSetResult.txt" } $Servers_OU =  "OU=ServersOU,OU=ABCServersOU,DC=mydomain,DC=dmn,DC=com" foreach ($myserver in $myServers)         {         $mycomp = Get-ADComputer –SearchBase $Servers_OU –SearchScope SubTree -Filter { OperatingSystem -like "Windows Server*"} -Properties PasswordLastSet,IPv4Address | Select * | Where-Object {$_.Name -eq $myserver} trap [Syste...

Configure IIS Application pool to use gMSA

Daha önce yayınladığım  gMSA oluşturma  yazımda Active Directory'de nasıl gMSA oluşturacağımı paylaşmıştım. Bu yazıda ise bu gMSA 'i nasıl web application sunucusunda kullanıma alacağımızı aktarmaya çalışacağım. Web Application'ımız veritabanı bağlantısı kuracak ise SQL Server'da gMSA'i yetkilendirme yazımı inceleyebilirsiniz. Umarım faydalı olur. IIS Manager'ı (run-->inetmgr) açarak Application Pools listemizi açmalıyız. Application Pools Llist Değişiklik yapmak istediğimiz Application Pool seçilerek Advanced Settings ekranı açılır. Bu ekranda değiştireceğimiz alan Identity alanıdır. Advanced Settings --> Identity Application Pool'umuz gMSA kullanıcımız verilerek konfigüre edilir. Username kısmına domain\gMSA$ şeklinde gMSA eklenir. Password Active Directory tarafından yönetildiği için bu alanlar boş bırakılır. Configure Identity Credentials Uygulamamız içerisinde Windows Authentication kullanılmıyorsa connection string'imizi d...

SPN Registration for SQL Server

SSRS altyapı olarak HTTP kullandığı için SPN bu şekilde register edilir (SSRS aslında Web Servistir) setspn -S HTTP/servername.domain.com:port domain\accountname SQL Server için SPN register MSSQLSvc kullanılarak yapılılr. Normal şartlarda SQL server her start sırasında SPN registration işlemi yenilenir. setspn -S MSSQLSvc/servername.domain.com:port domain\accountname Analysis Services için SPN register MSOLAPSvc.3 kullanılarak yapılır. setspsn -S MSOLAPSvc.3/servername.domain.com:instance domain\accountname Bu işlemleri yapmak için Domain Admin yetkileri gerekmektedir. SPN listesini görmek için ise -L parametresi kullanılır.  setspsn -L domain\accountname