Sql-Server-2014

查找密碼不復雜的帳戶

  • September 9, 2019

我可以使用此命令查看所有強制執行密碼策略的 SQL 登錄密碼

SELECT * FROM sys.sql_logins WHERE is_policy_checked = 1

但是,似乎在檢查強制密碼策略時,它需要下一次密碼更改才能強制執行該策略,並不意味著目前密碼可以:

這篇 MS 文章指出

密碼複雜性策略旨在通過增加可能的密碼數量來阻止暴力攻擊。實施密碼複雜性策略時,新密碼必須符合以下準則:

我可以通過以下方式驗證上述內容

使用弱密碼創建登錄:

CREATE LOGIN [TestLogin] WITH PASSWORD=N'weak', CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF

執行政策

ALTER LOGIN [TestLogin] WITH CHECK_POLICY=ON

此時,以下查詢返回 1

SELECT is_policy_checked FROM sys.sql_logins WHERE name = 'TestLogin'

那麼無論如何我可以檢查哪些 SQL 帳戶的密碼較弱嗎?我的猜測是“不”,因為我認為這是一個安全漏洞,唯一的方法是在策略設置為檢查時更改所有密碼。

也許這會幫助 PWDCOMPARE ( https://docs.microsoft.com/en-us/sql/t-sql/functions/pwdcompare-transact-sql?view=sql-server-2017 )?

一些例子: https ://dzone.com/articles/use-pwdcompare-to-find-sql-logins-with-weak-passwo

學分@SQLRockstar連結

首先,讓我們建立一個弱密碼列表並將其保存到文件中:

$pwdList = Get-Content .\password_list.txt

建構查詢並針對 SQL Server 執行:

$SQLText = "SELECT name FROM sys.sql_logins WHERE PWDCOMPARE('$password', password_hash) = 1;"
Invoke-Sqlcmd -Query $SQLText -ServerInstance $SQLServer
}

如果您有任何執法責任或能力;

在 SQL 中修改強制密碼策略之後。您要求密碼需要在特定時間/日期更新,並且您可以驗證發生的情況

SELECT LOGINPROPERTY('YourLoginName', 'PasswordLastSetTime');

程式碼源

一般而言,所有密碼都應定期更改,因此保護此策略更改應該相對容易。

自動過期密碼可能會給應用程序訪問帶來問題,因此這在您的環境中可能是一個可行的解決方案,也可能不是。但是手動更改密碼應該不會造成問題。

引用自:https://dba.stackexchange.com/questions/241609