quarta-feira, 3 de novembro de 2010

Uso de senhas fortes no samba

Um recurso muito útil (e nem sempre utilizado) do Samba é o controle da qualidade (e validade) da senha dos usuários.

Para implementar tal controle é possível fazer uso de duas ferramentas diferentes (que podem, e devem, ser usadas em conjunto): pdbedit e crackcheck.

pdbedit

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);
Todas essas políticas podem ser facilmente visualizadas com o comando:
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;
Adicione a seguinte linha a seu arquivo smb.conf e recarregue o samba:
check password script = /usr/local/sbin/crackcheck -s

Se você não quiser utilizar o crackcheck você poderá desenvolver seu próprio script de checagem de senhas, mas isso também é assunto para outra hora.

Um comentário: