Criando senhas seguras com o mkpasswd

FLISOL Ceaŕa | Festival Latinoamericano de Instalação de Software Livre

Olá novamente galera...
Acho que todos aqui já tivemos dores de cabeça com usuários desinformados, ou mesmo inocentes, que caem no erro de utilizar uma senha simples e insegura. Já vi gente, 3 bem próximos a mim, tendo problemas sérios com esse tipo de coisa, inclusive financeiramente falando.

1- Nosso pesadelo

Foi-se o tempo em que a prioridade dentro das empresas era meramente física ou financeira. Hoje em dia o que mais tem valor em grande parte das empresas é a informação. Os noticiários não me deixam mentir, visto que a poucos dias vimos os comentários sobre o roubo do "notebook" da Petrobras. O que havia de tão importante? O que é um notebook (cerca de R$4.000) para uma empresa como a Petrobrás?

A resposta é nada. Porém as informações que haviam no disco daquele notebook, sim. Elas com certeza possuem um valor enorme para eles. Do contrário, o notebook não estaria escondido em um contêiner dentro do navio, correto?!

Infelizmente nem todos parecem perceber ou dar importância para fatos como este. O que é a maior preocupação de muitos, para alguns é apenas um mero detalhe ou charme para outros.

Como diria minha mãe, nossa segurança começa em casa!

Um dos maiores pesadelos dos administradores de redes sempre foi a capacidade incrível dos usuários em escolher senhas inseguras. Por incrível que pareça, ainda hoje é comum ver pessoas utilizando-se de senhas como seu próprio nome, telefone, data de nascimento, nome da namorada, etc, etc, etc...

Lembro-me como se fosse ontem o dia em que estávamos mudando todas as senhas dos usuários de nosso domínio e pedi a um usuário que viesse escolher sua senha. Qual foi meu erro? Exato...pedir que ele escolhesse uma senha. Ele olhou em meus olhos e perguntou: "Quantos dígitos?"
E eu: "Nove"
Então ele (me surpreendendo): "Hum..isso é para aumentar a segurança não é?!"
Fiquei até emocionado em ver que um usuário finalmente havia entendido o espírito da coisa. Uma pena essa minha emoção ter sumido de imediato ao vê-lo digitar 9 vezes a primeira letra de seu nome. :/

Alguns até podem me perguntar: "Mas porque o usuário não pode escolher sua própria senha?"
Bom, para quem trabalha com administração de redes, é comum receber a culpa por tudo o que acontece de errado. Se arquivos sumiram do home de fulano-de-tal, a culpa é do administrador de redes. Mesmo sabendo que a senha de fulano de tal era 123456, conhecida por metade da empresa.

Então, o que fazer quando não podemos contar com o usuário nem sequer na hora de criar a sua própria senha?

2 - A solução encontrada: mkpasswd

A primeira solução que me veio em mente foi definir eu mesmo as senhas dos usuários, mantendo assim um padrão aceitável de segurança pessoal. Eu estaria garantindo o nível de segurança da forma que eu planejasse, evitando que algum desavisado ou descuidado cometesse o erro de utilizar uma senha facilmente deduzível.

Então aparece um segundo problema. E se eu tiver cerca de 50 usuários? Vou ter que sair pensando em senhas para cada um deles?

Foi nesta tarefa que o Linux mais uma vez me ajudou. Com a ferramenta mkpasswd que gera uma senha aleatória suprindo minhas necessidades básicas de segurança em uma senha que envolvesse por exemplo números, letras e mistura de caracteres especiais variando as letras em maiúsculas e minúsculas por exemplo.

O mkpasswd é uma ferramenta bastante comum para a criação de senhas no mundo Linux. Bastante usada por administradores de redes/sistemas é capaz de gerar milhares de combinações com envolvendo letras e números possibilitando inclusive a escolha de quantos dígitos a senha deverá ter, quantidade mínima de caractéres especiais, letras maiúsculas, minúsculas, etc...

Para cada uma dessas respectivas funções existe um parâmetro que deve ser usado juntamente com o mkpasswd.

Como cada caso é um caso, aqui tratarei o comando com exemplos variando em seus diferentes parâmetros, aumentando ou diminuindo seu grau de segurança bem como complexidade.

Antes de se aplicar as senhas, deve-se ter sempre em mente onde a mesma será aplicada, afinal de contas, a complexidade exigida para a senha de um administrador de redes é bem diferente da exigida para a senha de alguém que apenas tem acesso à agenda de serviços externos por exemplo.

3 - Uso básico do mkpasswd

Mkpasswd é a ferramenta escolhida por mim para me ajudar na geração destas senhas de forma randômica garantindo uma complexidade nas mesmas através da combinação de letras maiúsculas, minúsculas, caracteres especiais e números.

Forma de sintaxe do mkpasswd:

mpasswd [parâmetro] [usuário]

Quando utilizado sem parâmetro algum, o mkpasswd nos retorna uma senha aleatória como o exemplo a seguir:

kalib@tuxcaverna:~$ mkpasswd
ui9B&n4Rc

O comando acima apenas joga uma senha aleatoriamente na tela sem que a mesma tenha validade alguma para nada. Porém o mkpasswd também pode servir para associar uma senha a um determinado usuário existente. Para isso basta inserir o nome do usuário ao lado do comando, lembrando que este tipo de operação requer privilégios de superusuário ou root.

root@tuxcaverna:/home/kalib# mkpasswd ngd

O comando acima irá setar uma senha aleatória para o usuário ngd informando-lhe qual foi esta senha.

Mas e se por acaso eu quiser especificar mais ainda minha senha? Se ao invés de meros caracteres aleatórios eu quiser que ela possua por exemplo 2 números dentre os caracteres? E se eu quiser 4 caracteres especiais em minha senha? Acho que 9 caracteres não é seguro, posso ter 12?

É justamente nesse tipo de caso que os parâmetros do mkpasswd vão se encaixar perfeitamente.

4 - Conhecendo os parâmetros do mkpasswd

Aqui segue uma lista dos principais parâmetros do mkpasswd em minha opinião:

-l -- Define quantos caracteres você deseja na sua senha. Por padrão ele trás 9.
-d -- Define quantos números no mínimo deverão fazer parte de sua senha. O padrão é 2.
-c -- Define quantas letras minúsculas no mínimo deverão fazer parte de sua senha. O padrão é 2.
-C -- O oposto de -c. Aqui você define o mínimo de letras maiúsculas. O padrão também é 2.
-s -- Define quantos caracteres especiais você deseja em sua senha. O padrão é 1.
-2 -- Esta é ótima. Define e distribui a senha de forma a misturar teclas do lado direito e esquerdo do teclado. Isto serve para dificultar a vida dos olheiros. :p
--nodigits -- Esta apenas anula os números de sua senha. Mesmo que -d 0.
--noupper -- Anula letras maiúsculas em sua senha. Mesmo que -C 0.
--nospecial -- Anula caracteres especiais. Mesmo que -s 0.

Agora que conhecemos os principais parâmetros do mkpasswd, vamos ver alguns exemplos de senhas com ele.

->Exemplo 1: Suponhamos que eu queira uma senha completamente aleatória sem definição de padrões. Basta usar o mkpasswd sem parâmetros:

kalib@tuxcaverna:~$ mkpasswd
neI24mX~s

->Exemplo 2: Supondo que agora eu quero uma senha com 10 caracteres, sendo pelo menos 3 deles caracteres especiais e 1 seja um número:

kalib@tuxcaverna:~$ mkpasswd -l 10 -s 3 -d 1
gN8_r:Wru*

->Exemplo 3: E se eu quiser agora uma senha com o tamanho padrão de 9 caracteres, porém com 2 números pelo menos e 2 letras maiúsculas:

kalib@tuxcaverna:~$ mkpasswd -d 2 -C 2
5dJz.qYt3

Bom, como podem ver as possibilidades são inúmeras. Basta pensar em sua combinação e mandar ver na sua senha.

Abraços amigos e até a próxima. ;]

Abraços.
Marcelo Cavalcante Rocha

cara... excelente site e

cara... excelente site e excelente artigo... muito bom mesmo... já está add nos favoritos aqui. Agora tenho uma dúvida...

Quando eu ponho o seguinte comando: mkpasswd -l 10 -s 3 -d 1
Aparece a seguinte mensagem de erro: mkpasswd: invalid option -- l
Try 'mkpasswd --help' for more information.

Para instalar o mkpasswd usei o apt-get install whois.

Se você puder me responder por aqui... estarei logado sempre esperando a resposta.. ou se quiser me responder por e-mail... mande para esse: marcos.vinicius.security[arroba]gmail[dot]com

Muito Obrigado!
Espero Resposta!

esqueci de dizer... uso o

esqueci de dizer... uso o kubuntu 7.10

Obrigado pelos

Obrigado pelos elogios..sinta-se sempre bem vindo em nosso site. ;]

Sobre sua dúvida...

Não instale o do whois, pois este é muito limitado. Instale o outro. Em algumas distros, como o Ubuntu por exemplo ele se chama libstring-mkpasswd-perl.
E na chamada do comando fica mkpasswd.pl ... ;]

O que você deseja fazer? Não existe o parâmetro -|

Acho que você estava tentando usar o -l, não?! Ele define a quantidade de caracteres total da senha.

acho que seu comando deveria ser:

mkpasswd -l 10 -s 3 -d 1
Legenda: tamanho 10 - caracteres especiais 3 - caracteres numericos 1

[]'s


Copyright (c) 2006-2007 - Comunidade de Software Livre Tux-CE.
Conteúdo licenciado sob a licença GNU Free Documentation License,
assim como as páginas derivadas Fórum e Blog