Criando senhas seguras com o mkpasswd

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