Sql-Server-2014
查找密碼不復雜的帳戶
我可以使用此命令查看所有強制執行密碼策略的 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');
一般而言,所有密碼都應定期更改,因此保護此策略更改應該相對容易。
自動過期密碼可能會給應用程序訪問帶來問題,因此這在您的環境中可能是一個可行的解決方案,也可能不是。但是手動更改密碼應該不會造成問題。