Como melhorar a política de
senhas de segurança do Linux
Professor: Kléber.
Disciplina: Implantação de servidores. Alunos: Angélica, Rafael e Larissa.
PAM
Este artigo está baseado na utilização do PAM (Pluggable Authentication Modules ou Módulos de Autenticação Plugáveis/Modulares). O PAM é o conjunto de bibliotecas compartilhadas que
permitem ao administrador do sistema local definir como as aplicações autenticam os usuários, sem a necessidade de modificar e recompilar programas. Para isso, é necessário somente editar alguns arquivos de configuração.
Os programas que utilizam o PAM para autenticação definem o seu próprio nome de serviço e o arquivo de configuração da política de autenticação. O programa login define um serviço chamado login e o seu arquivo de configuração da política de autenticação é /etc/pam.d/login; in.rlogind define o serviço chamado rlogin e o seu arquivo de configuração da política de autenticação
/etc/pam.d/rlogin; in.rshd define um serviço chamado rsh e seu arquivo de autenticação é
/etc/pam.d/rsh etc.
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. Caso 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.
sudo apt-get install libpam-cracklib
Já para quem trabalha com distros como CentOS, Fedora ou RHEL não precisa instalar esse módulo; pois já vem configurado.
Definindo a complexidade das senhas de usuários
Para definir a complexidade, precisaremos alterar a configuração de definição de senhas de usuário. Ó processo pode ser diferente, de acordo com a sua distribuição.
Para: Debian, Ubuntu ou Linux Mint:
sudo nano(ou vi) /etc/pam.d/commom-password Para: Fedora, CentOS ou RHEL:
sudo vi /etc/pam.d/system-auth
Encontrado o arquivo, procure um trecho similar a esse:
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.
Definindo que a nova senha não poderá ser igual às anteriores:
No mesmo arquivo do ponto anterior, iremos inserir o parâmetro remember na linha conforme exemplo:password sufficient pam_unix.so use_authtok md5 shadow remember=10
remember=10 –> Informa que a nova senha não poderá ser igual às últimas 10 senhas utilizadas por este usuário.
Definindo o período de expiração das senhas:
O programa chage e passwd possui recursos que permitem definir limites mínimos e máximos do tempo para troca de senha de acesso, número máximo de dias após expirar o tempo de troca da senha em que a conta será permanentemente desabilitada (até que o administrador a reative) e o período mínimo entre troca de senhas. Alguns exemplos:
passwd -x 10 -w 3 teste
A senha do usuário teste expirará após 10 dias (-x 10) e ele será avisado com 3 dias de antecedência (-w 3) para trocar sua senha. Após o período máximo o usuário será obrigado a trocar a senha. Quando o usuário efetuar o login receberá a seguinte mensagem: Warning: your password will expire in 3 days.
passwd -x 10 -w 3 -i 2 teste
A senha do usuário teste expirará após 10 dias (-x 10) e ele será avisado com 3 dias de antecedência (-w 3) para trocar sua senha, após a expiração da senha, o usuário tem 2 dias antes da conta ser desativada (-i 2). Se o período expirar e o usuário tentar um novo login será mostrada a mensagem:
Your account has expired: Please contact your system administrator
Para reativar a conta acima, remova totalmente o bloqueio da conta do usuário teste com passwd -x 0 teste, passwd -x 99999 -w 7 -i 0 teste ou especifique um período de dias maior em adição à queles especificados para que ele possa trocar a senha.
Por exemplo, caso tenha passado 3 dias desde que a conta acima expirou e deseje dar mais 2 dias para o usuário trocar a conta: passwd -x 17 -i 0 teste A conta será reativada por mais 2 dias dando a oportunidade do usuário trocar a senha. Preste atenção neste exemplo para entender bem a situação e prazos.
passwd -x 90 -n 60 -w 15 -i 0 teste
A senha do usuário teste expirará após 90 dias (-x 90), ele será avisado para trocar sua senha com 15 dias antes do prazo final (-w 15) e a conta será imediatamente desativada caso o prazo máximo para troca da senha expire (-i 0). O usuário também não poderá trocar sua senha durante os primeiros 60 dias desde a última troca de senha (-n 60).
Em sistemas onde precisa adicionar restrições a muitos usuários na criação da conta, é
recomendável seguir os métodos descritos em [#s-d-contas-cms-padroes Definindo valores padrões de restrição.
OBS1: Em sistemas com senhas ocultas ativadas (veja [#s-d-contas-segsenhas-shadow Shadow Passwords) as restrições acima serão especificadas no arquivo /etc/shadow, isto garante que só o usuário root tenha acesso aos detalhes fornecidos neste arquivo.
OBS2: A -d do passwd serve para remover a senha do usuário especificado ou seja somente será necessário fornecer o nome de usuário para ter acesso ao sistema.
OBS3: Leve em consideração que o uso do recursos de senhas de grupo é um risco de segurança, pois a mesma senha será compartilhada entre diversas pessoas.
OBS4: O programa useradd combina as funções do adduser e passwd para garantir que a conta seja criada com as restrições apropriadas. O único inconveniente é que o useradd quebra o Debian Policy e precisa de todos os parâmetros para a criação correta da conta (como o diretório home, senha criptografada, e UID numérico). Seu uso é indicado em shell scripts que cuidam
Referências Bibliográficas:
Disponível em:<https://pt.wikibooks.org/wiki/Guia_do_Linux/Avan%C3%A7ado/Gerenciamento_de_contas_e _cuidados_para_a_prote%C3%A7%C3%A3o_de_senhas/Cria%C3%A7%C3%A3o,_monitorament o_e_seguran%C3%A7a_de_contas>.Acesso em 25 ago 2015. Disponível em:<http://blog.marcelocavalcante.net/blog/2011/09/27/politica-de-senhas-no-linux-senhas-com-data-para-expirar/>.Acesso em: 25 ago 2015.Disponível em:<http://www.linuxdescomplicado.com.br/2014/01/saiba-como-aumentar-seguranca-dos.html>. Acesso em: 25 ago 2015.