É conhecido por todos que o uso de senhas seguras é o primeiro passo para minimizar as chances de terceiros terem acesso indevido a informações confidenciais, mas isso não é suficiente. Tendo ciência que o maior vetor de vulnerabilidade para os sistemas computacionais é o próprio usuário do sistema, é necessário criar/manter uma política de senhas para garantir a segurança básica de suas informações. Sendo assim, este artigo lista sugestões para uma boa política de senhas que vão além de exigir senhas fortes; mas sim políticas de mundança periódica, período de expiração e verificação de padrões de senha, por exemplo.
PREPARAÇÃO
Este artigo está baseado na utilização do PAM (Pluggable Authentication Modules ou Módulos de Autenticação Plugáveis/Modulares). O PAM é a parte principal da autenticação em um sistema Linux. Praticamente todos os aplicativos do Linux que requerem algum tipo de autenticação suportam PAM. Toda a configuração está localizada no diretório /etc/pam.d. Portanto, visando criar um módulo único e centralizado de autenticação, os sistemas Linux realizam a autenticação via PAM.
Sendo assim, caso você esteja usando distros derivadas do Debian (Ubuntu, Mint) será preciso instalar um módulo PAM para habilitar o cracklib, que oferece recursos adicionais de verificação de senhas.
As políticas irão surgir efeitos imediatamente.
Instale-o executando o comando abaixo:
Já para quem trabalha com distros como CentOS, Fedora ou RHEL não precisa instalar esse módulo; pois já vem configurado.
1- Definindo a complexidade das senhas de usuários
Para definir a complexidade, precisaremos alterar a configuração de definição de senhas de usuários. O processo pode ser diferente, de acordo com a sua distribuição.
Debian, Ubuntu ou Linux Mint
Fedora, CentOS ou RHEL:
Encontrado o arquivo, procure um trecho similar a esse:
password requisite pam_cracklib.so retry=3 minlen=8 difok=3
E depois, substitua a linha acima por essa:
password requisite pam_cracklib.so retry=3 minlen=8 difok=3 ucredit=-1 lcredit=-2 dcredit=-1 ocredit=-1
Isto irá forçar o usuário inserir pelo menos um caracter maiuscúlo (ucredit), dois caracteres minúsculos (lcredit), um dígito (dcredit) e um símbolo especial (ocredit).
Onde, os outros parâmetros são:
- difok=3 -> Informa a quantidade de caracteres que podem se repetir em relação à última senha. Por exemplo: Se minha antiga senha era “atari” e eu tento usar “atado” como nova senha, receberei uma informação de erro, pois foi repeti 3 letras que já existiam na senha anterior “ata”.
- minlen=10 -> Informa qual a quantidade mínima de caracteres aceitos para a senha do usuário. No exemplo, o mínimo de caracteres aceitos serão 8
- retry=3 -> Informa quantas vezes o usuário vai poder tentar, em caso de senha indevida, antes de receber a mensagem de erro.
2 – Garantindo que não sejam repetidas as senhas:
No mesmo arquivo acima, de acordo com sua distribuição, será preciso inserir o parâmetro remember na linha conforme exemplo:
password [success=1 default=ignore] pam_unix.so obscure sha512 remember=10
Onde,
- remember=10 -> Informa que a nova senha não poderá ser igual às últimas 10 senhas utilizadas por este usuário.
3 – Definindo o período de expiração das senhas:
Para configurar um período máximo de validade das senhas de cada usuário é preciso editar a variáveis abaixo no arquivo /etc/login.defs.
PASS_MAX_DAYS 180 PASS_MIN_DAYS 0 PASS_WARN_AGE 7
Isto irá forçar as senhas serem trocadas a cada 6 meses e enviar um aviso prévio de 7 dias informando a expiração da senha.
Mas, caso você queira definir o período de expiração para um usuário expecífico; será preciso usar o comando chage. Para verificar a política de expiração de senha de usuário, execute o comando:
Last password change : Dec 30, 2013 Password expires : never Password inactive : never Account expires : never Minimum number of days between password change : 0 Maximum number of days between password change : 99999 Number of days of warning before password expires : 7
Por fim, para mudar uma política de expiração de senha para um usuário específico; execute:
Onde,
- -E DD/MM/AAAA ==> É definido uma data exata para expiração
- -m 5 -M 90 ==> Quantidade mínima e máxima de dias para mudar a senha. Respectivamente, no mínimo 5 dias e no máximo 90 dias.
- -I 30 ==> Quantidade de dias que a conta será bloqueada, caso a senha não seja alterado no período estipulado.
- -W 14 ==> Quantidade de dias que antecede o período da expiração. É enviado um aviso prévio.
Eu estou com um problema, eu ja configurei de acordo com o tutoria , mas não está aparecendo para expirar a senha e nem a quantidade de caracteres minimo está respeitando.
Sabe o que pode ser?