Como banir senhas padrão e fazer com que todos te odeiem

O homem, como você sabe, é uma criatura preguiçosa. E ainda mais quando se trata de escolher uma senha forte.

Eu acho que cada um dos administradores já encontrou o problema de usar senhas leves e padrão. Esse fenômeno é frequentemente encontrado entre os escalões superiores da administração da empresa. Sim, sim, está entre aqueles que têm acesso a informações classificadas ou comerciais e seria extremamente indesejável eliminar as conseqüências do vazamento / invasão de senhas e outros incidentes.

Na minha prática, houve um caso em que, em um domínio do Active Directory com uma diretiva de senha ativada, os contadores independentes chegaram à ideia de que uma senha no formato "Pas $ w0rd1234" funciona perfeitamente para os requisitos da diretiva. A conseqüência foi o uso generalizado dessa senha em todos os lugares. Às vezes, ele diferia apenas em um conjunto de números.

Eu realmente queria poder incluir não apenas uma política de senha e definir um conjunto de caracteres, mas também filtrar por dicionário. Para excluir a possibilidade de usar esse tipo de senha.

A Microsoft nos informa, por referência, que quem sabe segurar o compilador corretamente, o IDE e sabe pronunciar C ++ corretamente, pode compilar e usar a biblioteca de que precisa por conta própria. Seu humilde servo não é capaz disso, então tive que procurar uma solução pronta.

Após uma longa hora de pesquisa, duas opções para resolver o problema foram reveladas aos olhos. Claro, estou falando sobre a solução OpenSource. Afinal, opções pagas - de e para.

Opção número 1. OpenPasswordFilter

Não há confirmações no início do ano 2. O instalador nativo funciona todas as vezes, você precisa corrigi-lo manualmente. Cria seu próprio serviço separado. Ao atualizar o arquivo de senha, a DLL não capta automaticamente o conteúdo alterado, é necessário interromper o serviço, aguardar o tempo limite, editar o arquivo e iniciar o serviço.

Não congele!

Opção número 2. PassFiltEx

O projeto é ativo, vivo e nem precisa chutar um corpo frio.

Instalar um filtro envolve copiar dois arquivos e criar várias entradas do Registro. O arquivo da senha não está bloqueado, ou seja, é editável e, de acordo com a idéia do autor do projeto, é simplesmente lido uma vez por minuto. Além disso, com a ajuda de entradas adicionais do registro, você pode configurar adicionalmente o próprio filtro e até as nuances da diretiva de senha.

Então
Dado: domínio do Active Directory test.local
Estação de trabalho de teste do Windows 8.1 (insignificante para condições da tarefa)
Filtro de senha PassFiltEx

  • Faça o download da versão mais recente do PassFiltEx no link
  • Copie PassFiltEx.dll para C: \ Windows \ System32 (ou % SystemRoot% \ System32 ).
    Copie PassFiltExBlacklist.txt para C: \ Windows \ System32 (ou % SystemRoot% \ System32 ). Se necessário, complemente-o com nossos modelos.


  • Editando a ramificação do registro: HKLM \ SYSTEM \ CurrentControlSet \ Control \ Lsa => Pacotes de Notificação
    Adicione PassFiltEx ao final da lista. (Nenhuma extensão é necessária.) A lista completa de pacotes usados ​​para verificação será parecida com esta " rassfm scecli PassFiltEx ".


  • Nós reiniciamos o controlador de domínio.
  • Repetimos o procedimento acima para todos os controladores de domínio.

Você também pode adicionar as seguintes entradas do Registro, o que oferece mais flexibilidade ao usar esse filtro:

Seção: HKLM \ SOFTWARE \ PassFiltEx - é criado automaticamente.

  • HKLM \ SOFTWARE \ PassFiltEx \ BlacklistFileName , REG_SZ, Padrão: PassFiltExBlacklist.txt

    BlacklistFileName - permite especificar um caminho personalizado para o arquivo com modelos de senha. Se essa entrada do registro estiver vazia ou não existir, o caminho padrão será usado, ou seja, % SystemRoot% \ System32 . Você pode até especificar o caminho da rede, MAS você precisa lembrar que o arquivo de modelo deve ter permissões claras para ler, escrever, excluir, alterar.
  • HKLM \ SOFTWARE \ PassFiltEx \ TokenPercentageOfPassword , REG_DWORD, Padrão: 60

    TokenPercentageOfPassword - permite especificar a porcentagem de ocorrência da máscara na nova senha. O valor padrão é 60%. Por exemplo, se uma porcentagem de ocorrência de 60 for especificada e a linha starwars estiver no arquivo de modelo, a senha será Starwars1! será rejeitada, enquanto a senha starwars1! DarthVader88 será aceita, pois a porcentagem de ocorrências da linha na senha é inferior a 60%
  • HKLM \ SOFTWARE \ PassFiltEx \ RequireCharClasses , REG_DWORD, Padrão: 0

    RequireCharClasses - aprimora os requisitos de senha em comparação com os requisitos padrão de complexidade de senha do ActiveDirectory. Os requisitos de complexidade incorporados exigem 3 de 5 tipos diferentes de caracteres possíveis: maiúsculas, minúsculas, dígito, especial e Unicode. Usando esta entrada do registro, você pode definir seus requisitos de complexidade de senha. O valor que pode ser especificado é um conjunto de bits, cada um com uma potência correspondente de dois.

    Ou seja - 1 = letras minúsculas, 2 = letras maiúsculas, 4 = dígitos, 8 = caracteres especiais e 16 = caracteres Unicode.

    Assim, com um valor de 7, os requisitos serão "Maiúsculas E minúsculas E dígitos" e com o valor 31, "Maiúsculas E minúsculas E dígitos E caractere especial E caractere especial Unicode".

    Você pode até combinar - 19 = "Maiúsculas E minúsculas E caracteres Unicode".


Várias regras ao compilar um arquivo de modelo:

  • Os padrões não diferenciam maiúsculas de minúsculas. Portanto, a entrada no arquivo starwars e StarWarS será determinada como o mesmo valor.
  • O arquivo da lista negra é relido a cada 60 segundos, para que você possa editá-lo facilmente, depois de um minuto os novos dados já serão usados ​​pelo filtro.
  • Atualmente, não há suporte Unicode para validação de padrão. Ou seja, você pode usar caracteres Unicode nas senhas, mas o filtro não funcionará. Isso não é crítico, porque não vi usuários que usam senhas Unicode.
  • É aconselhável não permitir linhas em branco no arquivo de modelo. Na depuração, um erro é visível quando os dados do arquivo são carregados. O filtro funciona, mas por que os extras?

Para depuração, existem arquivos em lotes no arquivo morto que permitem criar um log e analisá-lo usando, por exemplo, o Microsoft Message Analyzer.

Esse filtro de senha usa o rastreamento de eventos para Windows.

O provedor ETW para esse filtro de senha é 07d83223-7594-4852-babc-784803fdf6c5 . Portanto, por exemplo, você pode configurar o rastreamento de eventos após a próxima reinicialização:

logman create trace autosession\PassFiltEx -o %SystemRoot%\Debug\PassFiltEx.etl -p "{07d83223-7594-4852-babc-784803fdf6c5}" 0xFFFFFFFF -ets 

O rastreamento será iniciado após a próxima reinicialização do sistema. Para parar:
logman stop PassFiltEx -ets && logman delete autosession\PassFiltEx -ets
Todos esses comandos são especificados nos scripts StartTracingAtBoot.cmd e StopTracingAtBoot.cmd .

Para uma verificação única do filtro, você pode usar StartTracing.cmd e StopTracing.cmd .

Para ler convenientemente a exaustão de depuração desse filtro no Microsoft Message Analyzer, é recomendável usar as seguintes configurações:





Quando você para o log e analisa no Microsoft Message Analyzer , tudo se parece com isso:



Aqui você pode ver que houve uma tentativa de definir uma senha para o usuário - a palavra mágica SET na depuração nos fala sobre isso. E a senha foi rejeitada devido à sua presença no arquivo de modelo e mais de 30% corresponde ao texto digitado.

Com uma tentativa bem-sucedida de alterar a senha, vemos o seguinte:



Há algum inconveniente para o usuário final. Quando você tenta alterar a senha que cai na lista de arquivos de modelo, a mensagem na tela não difere em inteligência e perspicácia da mensagem padrão quando a política de senha não é passada.



Portanto, esteja preparado para chamadas e gritos: "Digitei a senha como deveria, mas ela não funciona".

Sumário


Essa biblioteca permite proibir o uso de senhas simples ou padrão no domínio do Active Directory. Diga não! senhas no formato: "P @ ssw0rd", "Qwerty123", "ADm1n098".
Sim, é claro, os usuários vão amar você ainda mais por essa preocupação com a segurança e a necessidade de criar senhas furiosas. E, talvez, o número de chamadas e solicitações de ajuda com a senha que você adicionará. Mas a segurança tem um preço.

Links para recursos utilizados:

Artigo da Microsoft sobre a biblioteca de filtros de senha personalizada: Filtros de senha
PassFiltEx: PassFiltEx
Release Link: Versão mais recente
Listas de Senhas:
DanielMiessler lista: Link.
Lista de palavras de weakpass.com: Link.
Lista de palavras do berzerk0 repo: Link.
Microsoft Message Analyzer: Microsoft Message Analyzer.

Source: https://habr.com/ru/post/pt446336/


All Articles