4.3. Segurança da Senha

Senhas são o método principal usado pelo Red Hat Enterprise Linux para verificar a identidade de usuários. É por isso que a segurança da senha é tão importante para a proteção do usuário, da estação de trabalho e da rede.

Por motivos de segurança, o programa de instalação configura o sistema para usar o Algoritmo Message-Digest (MD5) e senhas shadow. É altamente recomendável que você não altere estas configurações.

Se você desselecionar as senhas MD5 durante a instalação, o antigo formato Padrão de Criptografia de Dados (DES - Data Encryption Standard) é utilizado. Este formato limita as senhas a oito caracteres alfa-numéricos (impedindo o uso de pontuação e outros caracteres especiais) e oferece um nível de criptografia modesto a 56 bits.

Se você desselecionar as senhas shadow durante a instalação, todas as senhas são armazenadas como 'one-way hash' em um arquivo /etc/passwd legível por todos, o que torna o sistema vulnerável a ataques de cracking offline. Se um intruso puder obter acesso a uma máquina como um usuário comum, ele pode copiar o arquivo /etc/passwd para sua própria máquina e rodar inúmeros programas de cracking neste arquivo. Se houver uma senha desprotegida no arquivo, é apenas uma questão de tempo para o cracker descobrí-la.

Senhas shadow eliminam a ameaça deste tipo de ataque, armazenando as senhas hash (misturadas) em um arquivo /etc/shadow, legível somente pelo usuário root.

Isto força um atacante potencial a tentar crackear a senha remotamente se autenticando em um serviço de rede na máquina, como SSH ou FTP. Este tipo de ataque de força bruta é bem mais lento e deixa rastros óbvios, já que centenas de tentativas de autenticação mal-sucedidas são registradas nos arquivos do sistema. Claro que, se o cracker começar um ataque no meio da noite em um sistema com senhas fracas, ele pode obter acesso e editar os arquivos de registro para apagar seus rastros antes da luz do dia.

Além das questões de formato e armazenamento, há também a questão de conteúdo. A única coisa mais importante que um usuário pode fazer para proteger sua conta de cracking de senha é criar uma senha forte.

4.3.1. Criando Senhas Fortes

Ao criar uma senha segura, é uma boa idéia seguir estas instruções:

Não faça o seguinte:

  • Não Use Apenas Palavras ou Números — Nunca use somente palavras ou números em uma senha.

    Alguns exemplos de senhas inseguras:

    • 8675309

    • juan

    • hackme

  • Não Use Palavras Reconhecíveis — Palavras como nomes próprios, palavras de dicionário ou até termos de shows de televisão ou novelas devem ser evitados, mesmo que sejam finalizados com números.

    Alguns exemplos de senhas inseguras:

    • john1

    • DS-9

    • mentat123

  • Não Use Palavras em Idiomas Estrangeiros — Programas de cracking de senhas frequentemente checam listas de palavras que incluem dicionários de muitos idiomas. Basear senhas seguras em idiomas estrangeiros não é eficiente.

    Alguns exemplos de senhas inseguras:

    • cheguevara

    • bienvenido1

    • 1dumbKopf

  • Não Use Terminologia de Hacker — Se você se acha parte de uma elite por utilizar terminologia de hacker — também chamada l337 (LEET) speak — em sua senha, repense. Muitas listas de palavras incluem LEET speak.

    Alguns exemplos de senhas inseguras:

    • H4X0R

    • 1337

  • Não Use Informações Pessoais — Fique longe das informações pessoais. Se o atacante souber quem você é, ele terá facilidade em descobrir sua senha. A seguir, veja uma lista de tipos de informação a evitar na criação de uma senha:

    Alguns exemplos de senhas inseguras:

    • Seu nome

    • O nome de animais de estimação

    • O nome de familiares

    • Quaisquer datas de aniversário

    • Seu número de telefone ou código postal

  • Não Inverta Palavras Reconhecíveis — Bons verificadores de senha sempre revertem palavras comuns, portanto reverter uma senha ruim não a torna mais segura.

    Alguns exemplos de senhas inseguras:

    • R0X4H

    • nauj

    • 9-DS

  • Não Anote Sua Senha — Nunca guarde uma senha em um papel. É bem mais seguro memorizá-la.

  • Não Use a Mesma Senha Para Todas as Máquinas — É importante criar senhas separadas para cada máquina. Desta maneira, se um sistema for comprometido, todas as outras máquinas não estarão em risco imediato.

Faça o seguinte:

  • Crie uma Senha de no Mínimo Oito Caracteres — Quanto mais longa a senha, melhor. Se você estiver usando senhas MD5, deve ter 15 ou mais caracteres. Para senhas DES, use o tamanho máximo (oito caracteres).

  • Misture Letras em Caixa Alta e Baixa — O Red Hat Enterprise Linux é sensível a maiúsculas e minúsculas, portanto misture-as para criar uma senha mais forte.

  • Misture Letras e Números — Adicionar números a senhas, especialmente no meio delas (não apenas no começo e fim), pode aumentar a força da senha.

  • Inclua Caracteres Não Alfa-numéricos — Caracteres especiais como &, $ e > podem aumentar bastante a força de uma senha (isto não é possível se usar senhas DES).

  • Escolha uma Senha que Você Possa Lembrar — A melhor senha do mundo de nada adianta se você não conseguir lembrá-la. Então use acrônimos ou outros dispositivos mneumônicos para ajudá-lo a memorizar senhas.

Com todas estas regras, parece difícil criar uma senha que siga todos os critérios e evitar as características de um senha ruim. Felizmente, há alguns passos simples a seguir para gerar uma senha memorizável e segura.

4.3.1.1. Metodologia de Criação de Senha Segura

Há muitos métodos usados para criar senhas seguras. Um dos mais conhecidos envolve acrônimos. Por exemplo:

  • Pense em uma frase memorável, como:

    "o sol da liberdade em raios fúlgidos brilhou no céu da pátria neste instante."

  • Em seguida, transforme-a num acrônimo (incluindo a pontuação).

    osdlerfbncdpni.

  • Adicione complexidade substituindo letras por números e símbolos no acrônimo. Por exemplo: substitua n por 9 e a letra d pelo símbolo arrouba (@):

    o7r@77w,7ghwg.

  • Adicione mais complexidade colocando pelo menos uma das letras em caixa alta, como F.

    o7r@77w,7gHwg.

  • Finalmente, nunca use o exemplo acima em nenhum de seus sistemas.

Criar senhas seguras é imperativo, mas gerenciá-las apropriadamente também é importante, especialmente para administradores de sistemas em empresas maiores. A próxima seção detalha as boas prárticas para criar e gerenciar senhas de usuários em uma empresa.

4.3.2. Criando Senhas de Usuários Dentro de uma Empresa

Se houver um número significativo de usuários em uma empresa, os adminsitradores de sistemas têm duas opções básicas para forçar o uso de boas senhas. Eles podem criar senhas para os usuários, ou podem deixar que os usuários criem suas próprias senhas, enquanto verificam se as senhas têm qualidade aceitável.

Criar senhas para os usuários garante que as senhas sejam boas, mas se torna uma tarefa complicada conforme a empresa cresce. Também aumenta o risco dos usuários anotarem suas senhas.

Por estas razões, os administradores de sistema preferm que os usuários criem suas próprias senhas, mas ativamente verificam se as senhas são boas e, em alguns casos, forçam os usuários a trocarem suas senhas periodicamente conforme sua idade.

4.3.2.1. Forçando Senhas Fortes

Para proteger a rede de intrusões é uma boa idéia administradores de sistema verificarem se as senhas usadas na empresa são fortes. Quando for pedido aos usuários criarem ou alterarem senhas, eles podem utilizar a aplicação de linha de comando passwd, que é ciente do Gerenciador Plugável de Autenticação (Pluggable Authentication Manager - PAM) e então checará se a senha é fácil de crackear ou se é muito curta através do módulo PAM pam_cracklib.so. Como PAM é personalizável, é possível adicionar outros verificadores de integridade de senhas, como pam_passwdqc (disponível em http://www.openwall.com/passwdqc/) ou escrever um módulo novo. Para visualizar uma lista dos módulos PAM disponíveis, veja http://www.kernel.org/pub/linux/libs/pam/modules.html. Para mais informações sobre o PAM, veja o capítulo enitulado Módulos Plugáveis de Autenticação (PAM) no Guia de Referência do Red Hat Enterprise Linux.

Perceba, no entanto, que a verificação executada nas senhas no momento de sua criação não descobre senhas ruins tão efetivamente quanto rodar um programa de cracking de senhas nas senhas da empresa inteira.

Há muitos programas de cracking de senhas que rodam no Red Hat Enterprise Linux, porém nenhum é distribuído junto ao sistema operacional. Abaixo há uma breve lista de alguns dos programas de cracking de senhas mais conhecidos:

NotaNota
 

Nenhuma destas ferramentas é distribuída com o Red Hat Enterprise Linux, portanto não são suportadas pela Red Hat, Inc. de maneira alguma.

  • John The Ripper — Um programa de cracking rápido e flexível. Permite o uso de listas de palavras múltiplas e é capaz de crackear senhas com força bruta. Está disponível online em http://www.openwall.com/john/.

  • Crack — Talvez o programa de cracking mais conhecido, o Crack também é muito rápido, porém não tão fácil de usar quanto o John The Ripper. Pode ser encontrado online: http://www.crypticide.org/users/alecm/.

  • Slurpie — O Slurpie é similar ao John The Ripper e ao Crack, mas é desenvolvido para rodar em computadores múltiplos simultaneamente, criando um ataque de cracking de senha distribuído. Pode ser encontrado online juntamente a outras ferramentas de avaliação de segurança contras ataques distribuídos em http://www.ussrback.com/distributed.htm.

AtençãoAtenção
 

Sempre pegue autorizações escritas antes de tentar crackear senhas dentro de uma empresa.

4.3.2.2. Idade da Senha

Idade da senha é uma outra técnica usada por administradores de sistema para defender uma empresa contra senhas ruins. Idade da senha significa que depois de um determinado tempo (geralmente 90 dias) é solicitado ao usuário criar uma nova senha. A teoria por trás disso é se o usuário é forçado a trocar sua senha periodicamente, uma senha crackeada por um intruso será útil somente por um tempo limitado. A desvantagem desta técnica, no entanto, é que usuários tendem a anotar suas senhas.

Há dois programas principais usados para especificar a idade da senha sob o Red Hat Enterprise Linux: o comando chage ou a aplicação gráfica Administrador de Usuários (redhat-config-users).

A opção -M do comando chage especifica o número máximo de dias em que a senha é válida. Portanto, se um usuário quer que sua senha expire em 90 dias, deve digitar o seguinte comando:

chage -M 90 <username>

No comando acima, substitua <username> pelo nome do usuário. Para desabilitar a expiração da senha, é comum usar o valor 99999 depois da opção -M (isso equivale a um pouco mais de 273 anos).

A aplicação gráfica Administrador de Usuários também pode ser uasada para criar políticas de validade de senhas. Para acessar esta aplicação, vá para o Botão do Menu Principal (no Painel) => Configurações do Sistema => Usuários & Grupos ou digite o comando redhat-config-users em uma janela de comandos (em um XTerm ou um terminal GNOME, por exemplo). Clique na aba Usuários, selecione o usuário da lista e clique em Propriedades no botão do menu (ou selecione Arquivo => Propriedades no menu suspenso).

Então clique na aba Informações de Senha e insira o número de dias antes da senha expirar, conforme mostra a figura Figura 4-1.

Figura 4-1. Aba Informações de Senha

Para mais informaçõe sobre a configuração do usuário e grupo (inclusive instruções sobre como forçar as primeiras senhas), veja o capítulo Configuração de Usuário e Grupo do Guia de Administração de Sistemas do Red Hat Enterprise Linux. Para uma visão geral da administração de usuários e recursos, consulte o capítulo Gerenciando Contas de Usuário e Acesso a Recursos (Managing User Accounts and Resource Access) no Introdução à Administração de Sistemas Red Hat Enterprise Linux.