проверить часто используемые пароли на SQL Server - PullRequest
1 голос
/ 07 мая 2019

NCSC опубликовал список 100 000 наиболее часто используемых паролей, см. 100K паролей
Я задавался вопросом, использовал ли кто-нибудь из моих пользователей один из этих паролей, поэтому я написал чек , вдохновленный идеей bp_check.

Правильно ли я это делаю?
У меня были проблемы с UniCode, но это уже должно быть решено.

1 Ответ

2 голосов
/ 07 мая 2019

Вот мой код для запуска такой проверки пароля:

--    script to check if any of the passwords on your SQL Server is amongst the 100.000 most used passwords that Troy Hunt and NCSC released

--    see https://www.ncsc.gov.uk/blog-post/passwords-passwords-everywhere


    --drop table dbo.PwnedPasswordTop100k 
    create table dbo.PwnedPasswordTop100k ( pw nvarchar(500) collate Latin1_General_CS_AS not null)
    go
    bulk insert dbo.PwnedPasswordTop100k
    FROM 'c:\temp\PwnedPasswordTop100k.txt'
    WITH
    (
    FIELDTERMINATOR = ',',
    ROWTERMINATOR = '\n'
     , codepage=65001 
    )
    go

    SELECT sl.name , ppt.pw 
    from sys.sql_logins sl
    cross join dbo.PwnedPasswordTop100k ppt
    where PWDCOMPARE(ppt.pw, sl.password_hash) = 1  
    union all
    SELECT s.name, 'password is NULL' FROM sys.sql_logins s  -- password is null (from idea from BP_Check http://aka.ms/BPCheck;)
    where password_hash is null 
    and name NOT IN ('MSCRMSqlClrLogin','##MS_SmoExtendedSigningCertificate##','##MS_PolicySigningCertificate##','##MS_SQLResourceSigningCertificate##','##MS_SQLReplicationSigningCertificate##','##MS_SQLAuthenticatorCertificate##','##MS_AgentSigningCertificate##','##MS_SQLEnableSystemAssemblyLoadingUser##')
    union all
    SELECT s.name, s.Name FROM sys.sql_logins s   -- password the same as login (from idea from BP_Check http://aka.ms/BPCheck;)
    where PWDCOMPARE(s.name, s.name) = 1

    --select top (10000) * from dbo.PwnedPasswordTop100k where pw like N'пїЅпїЅпїЅпїЅ'

    begin try
      drop table dbo.PwnedPasswordTop100k 
    end try
    begin catch
    end catch

Файл PwnedPasswordTop100k.txt необходимо скопировать в c: \ temp на SQL Server и в учетную записькоторый запускает SQL Server, должен иметь доступ к файлу.Либо измените путь на место, которое может видеть SQL Server.

Не у всех есть доступ к общему ресурсу, который может видеть SQL Server.
Итак, я также написал скрипт со всеми паролями: Скрипт с 100 000 паролей
Это оператор SELECT, который составляет 1500 кБ.
Довольно большой, но вы можете запустить его в SQL Server Management Studio.

Мой SQL Server может проверять около 6 пользователей в минуту , поэтому сценарий не очень быстрый.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...