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.

Acho que todo administrador já enfrentou o problema de usar senhas leves e padrão. Este fenômeno ocorre frequentemente entre os escalões superiores da gestão das empresas. Sim, sim, precisamente entre aqueles que têm acesso a informações secretas ou comerciais e seria extremamente indesejável eliminar as consequências de vazamentos/hacking de senhas e outros incidentes.

Na minha prática, houve um caso em que, em um domínio do Active Directory com uma política de senha habilitada, os contadores chegaram à ideia de que uma senha como “Pas$w0rd1234” se adequava perfeitamente aos requisitos da política. A consequência foi o uso generalizado desta senha em todos os lugares. Às vezes ele diferia apenas em seu conjunto de números.

Eu realmente queria poder não apenas ativar uma política de senha e definir um conjunto de caracteres, mas também filtrar por dicionário. Para excluir a possibilidade de utilização de tais senhas.

A Microsoft gentilmente nos informa através do link que qualquer pessoa que saiba segurar um compilador, IDE corretamente em suas mãos e saiba pronunciar C++ corretamente, é capaz de compilar a biblioteca que precisa e utilizá-la de acordo com seu próprio entendimento. Seu humilde servo não é capaz disso, então tive que procurar uma solução pronta.

Após uma longa hora de busca, foram reveladas duas opções para solucionar o problema. Estou, é claro, falando sobre a solução OpenSource. Afinal, existem opções pagas – do início ao fim.

Opção número 1. Filtro OpenPassword

Não há commits há cerca de 2 anos. O instalador nativo funciona de vez em quando, você precisa corrigi-lo manualmente. Cria seu próprio serviço separado. Ao atualizar um arquivo de senha, a DLL não coleta automaticamente o conteúdo alterado; você precisa parar o serviço, aguardar um tempo limite, editar o arquivo e iniciar o serviço.

Sem gelo!

Opção número 2. PassFiltEx

O projeto está ativo, vivo e não há necessidade nem de chutar o corpo frio.
A instalação do filtro envolve a cópia de dois arquivos e a criação de várias entradas de registro. O arquivo de senha não fica bloqueado, ou seja, está disponível para edição e, conforme ideia do autor do projeto, basta lê-lo uma vez por minuto. Além disso, usando entradas de registro adicionais, você pode configurar ainda mais o filtro em si e até mesmo as nuances da política de senha.

Assim.
Dado: domínio do Active Directory test.local
Estação de trabalho de teste do Windows 8.1 (não importante para a finalidade do problema)
filtro de senha PassFiltEx

  • Baixe a versão mais recente no link PassFiltEx
  • cópia de PassFiltEx.dll в C: WindowsSystem32 (ou % SystemRoot% System32).
    cópia de PassFiltExBlacklist.txt в C: WindowsSystem32 (ou % SystemRoot% System32). Se necessário, complementamos com nossos próprios modelos
    Como banir senhas padrão e fazer com que todos te odeiem
  • Editando a ramificação do registro: HKLMSYSTEMCurrentControlSetControlLsa => Pacotes de notificação
    Adicionar PassFiltEx até o final da lista. (A extensão não precisa ser especificada.) A lista completa de pacotes usados ​​para verificação será semelhante a “rassfm scecli PassFiltEx".
    Como banir senhas padrão e fazer com que todos te odeiem
  • Reinicie o controlador de domínio.
  • Repetimos o procedimento acima para todos os controladores de domínio.

Você também pode adicionar as seguintes entradas de registro, o que oferece mais flexibilidade no uso desse filtro:

Seção: HKLMSOFTWAREPassFiltEx — é criado automaticamente.

  • HKLMSOFTWAREPassFiltExBlacklistFileName, REG_SZ, Padrão: PassFiltExBlacklist.txt

    Lista negraNome do arquivo — permite especificar um caminho personalizado para um arquivo com modelos de senha. Se esta entrada de registro estiver vazia ou não existir, o caminho padrão será usado, que é - % SystemRoot% System32. Você pode até especificar um caminho de rede, MAS é preciso lembrar que o arquivo de modelo deve ter permissões claras para leitura, gravação, exclusão e alteração.

  • HKLMSOFTWAREPassFiltExTokenPercentageOfPassword, REG_DWORD, Padrão: 60

    TokenPercentageOfPassword — permite especificar a porcentagem da máscara na nova senha. O valor padrão é 60%. Por exemplo, se a ocorrência percentual for 60 e a string starwars estiver no arquivo de modelo, então a senha Guerra nas Estrelas1! será rejeitado enquanto a senha guerra nas estrelas1!DarthVader88 será aceito porque a porcentagem da string na senha é inferior a 60%

  • HKLMSOFTWAREPassFiltExRequireCharClasses, REG_DWORD, Padrão: 0

    RequireCharClasses — permite expandir os requisitos de senha em comparação com os requisitos de complexidade de senha padrão do ActiveDirectory. Os requisitos de complexidade integrados exigem 3 dos 5 tipos diferentes de caracteres possíveis: maiúsculas, minúsculas, dígitos, especiais e Unicode. Usando esta entrada de registro, você pode definir os requisitos de complexidade da senha. O valor que pode ser especificado é um conjunto de bits, cada um dos quais é uma potência de dois correspondente.
    Ou seja, 1 = minúscula, 2 = maiúscula, 4 = dígito, 8 = caractere especial e 16 = caractere Unicode.
    Portanto, com um valor de 7, os requisitos seriam “maiúsculas” E minúscula E dígito”, e com valor 31 - “Maiúsculas E minúsculas E figura E símbolo especial E Caractere Unicode."
    Você pode até combinar - 19 = “Maiúsculas E minúsculas E Caractere Unicode."

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

Várias regras ao criar um arquivo de modelo:

  • Os modelos não diferenciam maiúsculas de minúsculas. Portanto, a entrada do arquivo Star wars и Guerra das Estrelas será determinado como sendo o mesmo valor.
  • O arquivo da lista negra é relido a cada 60 segundos, para que você possa editá-lo facilmente; após um minuto, os novos dados serão usados ​​pelo filtro.
  • Atualmente não há suporte Unicode para correspondência de padrões. 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 vazias no arquivo de modelo. Na depuração você poderá ver um erro ao carregar dados de um arquivo. O filtro funciona, mas por que as exceções extras?

Para depuração, o arquivo contém arquivos em lote que permitem criar um log e analisá-lo usando, por exemplo, Analisador de mensagens da Microsoft.
Este filtro de senha usa rastreamento de eventos para Windows.

O provedor ETW para este filtro de senha é 07d83223-7594-4852-babc-784803fdf6c5. Assim, por exemplo, você pode configurar o rastreamento de eventos após a seguinte reinicialização:
logman create trace autosessionPassFiltEx -o %SystemRoot%DebugPassFiltEx.etl -p "{07d83223-7594-4852-babc-784803fdf6c5}" 0xFFFFFFFF -ets

O rastreamento começará após a próxima reinicialização do sistema. Parar:
logman stop PassFiltEx -ets && logman delete autosessionPassFiltEx -ets
Todos esses comandos são especificados nos scripts StartTracingAtBoot.cmd и StopTracingAtBoot.cmd.

Para uma verificação única da operação do filtro, você pode usar IniciarTracing.cmd и PararTracing.cmd.
Para ler convenientemente o escape de depuração deste filtro em Microsoft Message Analyzer Recomenda-se usar as seguintes configurações:

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

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

Ao parar o registro e a análise Microsoft Message Analyzer tudo se parece com isto:

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

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

Se for feita uma tentativa bem-sucedida de alteração de senha, veremos o seguinte:

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

Há alguns inconvenientes para o usuário final. Ao tentar alterar uma senha incluída no arquivo de lista de modelos, a mensagem na tela não é diferente da mensagem padrão quando a política de senha não é aprovada.

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

Portanto, esteja preparado para ligações e gritos: “Insiro a senha corretamente, mas não funciona”.

Resumo.

Esta biblioteca permite proibir o uso de senhas simples ou padrão em um domínio do Active Directory. Digamos "Não!" senhas como: “P@ssw0rd”, “Qwerty123”, “ADm1n098”.
Sim, claro, os usuários vão adorar você ainda mais por cuidar tanto de sua segurança e pela necessidade de criar senhas alucinantes. E, talvez, aumente o número de ligações e pedidos de ajuda com sua senha. Mas a segurança tem um preço.

Links para recursos utilizados:
Artigo da Microsoft sobre uma biblioteca de filtro de senha personalizada: Filtros de senha
PassFiltEx: PassFiltEx
Link de liberação: Último lançamento
Listas de senhas:
Listas de Daniel Miessler: Link.
Lista de palavras de fracopass.com: Link.
Lista de palavras do repositório berzerk0: Link.
Analisador de mensagens da Microsoft: Analisador de mensagens da Microsoft.

Fonte: habr.com

Adicionar um comentário