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...

Powershell Kullanarak Windows Features Yönetimi (Import And Export)

Bu yazı Windows Server 2008, Windows Server 2008 R2, Windows Server 2012, Windows Server 2012 R2 ve Windows Server 2016 işletim sistemleri üzerinde kullanılabilecek bilgiler içerir. Yazıyı okumaya başlamadan önce yazı içerisinde kullanılacak Get-WindowsFeature ve Add-WindowsFeature cmdletleriyle ilgili detaylı bilgileri inceleyebilirsiniz. Kendi ortamınızda test yapmadan önce ServerManager modülünü import etmelisiniz, Import-Module cmdlet için de yine MSDN üzerindeki bilgilerden faydalanabilirsiniz. Umarım faydalı bir yazı olmuştur. Birden fazla sunucuya benzer kurulumları yapmak istediğimizde karşımıza operasyonel zorluklar çıkabiliyor. Bu işlemleri hızlandırmanın & standart bir hale getirmenin bir çok yolu var ancak bu yazıda bir sunucu üzerinde kurulu Windows Feature'ların powershell ile toplanarak, diğer bir sunucuda kurulması için en basit olduğunu düşündüğüm yöntemi paylaşacağım. İlk olarak servermanager modülünün Powershell sessionımıza import edilmesi gerekmekted...

Windows Feature Batch Deployment

Aşağıdaki function ile bir sunucu üzerinde oluışturduğumuz configuration file dosyası ile uzak lokasyondaki birden çok sunucuya yükleme yapabiliriz. Umarım faydalı olur, her türlü ek geliştirme için hakki.ogretmen@gmail.com adresine mail atabilirsiniz. function Invoke-WindowsFeatureBatchDeployment { param ( [parameter(mandatory)] [string[]] $ComputerNames, [parameter(mandatory)] [string] $ConfigurationFilePath ) # Deploy the features on multiple computers simultaneously. $jobs = @() foreach($ComputerName in $ComputerNames) { $jobs += Start-Job -Command { Install-WindowsFeature -ConfigurationFilePath $using:ConfigurationFilePath -ComputerName $using:ComputerName -Restart } } Receive-Job -Job $jobs -Wait | Select-Object Success, RestartNeeded, ExitCode, FeatureResult }