Para implementar tal controle é possível fazer uso de duas ferramentas diferentes (que podem, e devem, ser usadas em conjunto): pdbedit e crackcheck.
O pdbedit é uma ferramenta que pode ser utilizada para, entre outras coisas, configurar algumas políticas de senha do samba.
Com o pdbedit é possível setar o seguinte:
- maximum password age – validade máxima da senhas (em segundos);
- minimum password age – validade mínima da senhas (em segundos);
- min password length – tamanho mínimo (caracteres) da senha;
- password history – histórico de senhas (não permite o uso das últimas X senhas);
- bad lockout attempt – número máximo de erros da senha, antes que a conta seja bloqueada;
- lockout duration – tempo de bloqueio da conta (em minutos);
- reset count minutes – tempo necessário para resetar o contador de senhas erradas (em minutos);
pdbedit -P “nome_da_política”
A alteração de uma determinada política pode ser realizada com o comando:
pdbedit -P “nome_da_política” -C novo_valor_da_política
Ou, de forma similar, com o comando:
net sam policy set “nome_da_política” novo_valor_da_política
ATENÇÃO: a política de senhas é implementada para todo o domínio e não pode ser administrada por conta.
ATENÇÃO 2: as políticas do domínio respeitam as configurações específicas das contas. Por exemplo: se você configurar que as senhas dos usuários tem validade máxima de 90 dias, mas quiser que uma determinada conta não tenha sua senha expirada nunca, use o comando:
net sam set pwnoexp login yes
ATENÇÃO 3: se você utilizar o OpenLDAP como backend dos usuários e senhas do Samba, é fundamental que o arquivo samba.schema seja da mesma versão do Samba que você estiver rodando.
Como foi possível perceber, as políticas tratadas pelo pdbedit já implementam um relativo controle das senhas, mas somente o uso destas não garante que a senha do usuário seja forte. E e aí que entra em cena o crackcheck.
crackcheck
O crackcheck é uma ferramenta que já vem com o Samba, e que faz uso da cracklib para controlar a qualidade das senhas dos usuários.
Antes de mais nada, é preciso esclarecer que esse post não pretende discutir os aspectos técnicos da ferramenta, e nem tratar do desenvolvimento de dicionários próprios (algo que poderá gerar uma postagem futura). Neste vou simplesmente explicar como forçar o uso de senhas como as utilizadas no Windows NT e no AD.
A política padrão de senhas do NT/AD implementa a seguinte regra: é preciso que a senha possua três entre quatro dos grupos de caracteres: letras maiúsculas, letras minúsculas, números e caracteres não alfabéticos (ex: #, $, *, etc…)
Se você utiliza Debian ou Ubuntu, a implementação desse recurso é bastante simples:
Instale os pacotes samba-doc, libcrack2-dev e libtool; - Acesse o diretório /usr/share/doc/samba-doc/examples/auth/crackcheck;
- Compile o software e copie-o para o diretório /usr/local/sbin;
check password script = /usr/local/sbin/crackcheck -s