Security Hacks: Linux & BSD
Neste artigo abordaremos alguns "Security Hacks" para sistemas Linux e *BSD, ou seja, implementações simples que irão ajudar você a melhorar a segurança de seus servidores. Vamos conhecer algumas dicas matadoras e softwares que farão a diferença nesta empreitada.
Parte 6: Testando a senha de seus usuários
Como todos nós sabemos, senhas são sempre um grande problema na vida de qualquer administrador de rede. Usuários não habituados a utilizar
senhas seguras, às vezes usando a mesma senha para vários serviços junto ao sistema, acabam sempre por prejudicar totalmente uma estrutura às vezes segura criada dentro da rede.
Costumo brincar em minhas palestras dizendo que se o usuários fossem arquivos, sua extensão seria ".FDP" (rs).
Portanto vamos ver um modo interessante de verificar as senhas dos seus usuários e fazê-los utilizarem sempre senhas fortes*.
Para testar nossas senhas vamos utilizar o Johnn the Ripper, que pode ser encontrado facilmente na internet.
Supondo que sua instalação esteja em /var/lib/john:
# cd /var/lib/john
# umask 077
# unshadow /etc/passwd /etc/shadow > senhas
# john senhas
As senhas que foram "crackeadas" serão escritas no arquivo john.pot, contendo Username/Password.
Como o intuito do capítulo não é ensinar ninguém a usar o John, procure informação na internet sobre aplicações mais específicas do mesmo.
Agora vamos ver algum modo de fazer com que as senhas criadas pelo usuário sejam "seguras", para evitar futuros problemas com os mesmos.
Para tanto utilizaremos a CrackLib. Para isso escreveremos um pequeno programa que faça uso da função FascistCheck da CrackLib:
Costumo brincar em minhas palestras dizendo que se o usuários fossem arquivos, sua extensão seria ".FDP" (rs).
Portanto vamos ver um modo interessante de verificar as senhas dos seus usuários e fazê-los utilizarem sempre senhas fortes*.
Para testar nossas senhas vamos utilizar o Johnn the Ripper, que pode ser encontrado facilmente na internet.
Supondo que sua instalação esteja em /var/lib/john:
# cd /var/lib/john
# umask 077
# unshadow /etc/passwd /etc/shadow > senhas
# john senhas
As senhas que foram "crackeadas" serão escritas no arquivo john.pot, contendo Username/Password.
Como o intuito do capítulo não é ensinar ninguém a usar o John, procure informação na internet sobre aplicações mais específicas do mesmo.
Agora vamos ver algum modo de fazer com que as senhas criadas pelo usuário sejam "seguras", para evitar futuros problemas com os mesmos.
Para tanto utilizaremos a CrackLib. Para isso escreveremos um pequeno programa que faça uso da função FascistCheck da CrackLib:
/* ---------------------Cracktest.c------------------------ */
/* Programa para aceitar somente senhas seguras */
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <crack.h>
#define DICIONARIO "/usr/lib/cracklib_dict"
int main(int argc, char *argv[]) {
char *password;
char *problema;
int status = 0;
printf("\nEntre uma password vazia ou Ctrl+D para sair.\n");
whitle((password = getpass("\nPassword: ")) != NULL && *password ) {
if ((problema = FascistCheck(password, DICIONARIO)) != NULL) {
printf("Bad Password: %s.\n", problema);
status = 1;
} else {
printf("Good Password!\n");
}
exit(status);
/* Eof */
/* Programa para aceitar somente senhas seguras */
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <crack.h>
#define DICIONARIO "/usr/lib/cracklib_dict"
int main(int argc, char *argv[]) {
char *password;
char *problema;
int status = 0;
printf("\nEntre uma password vazia ou Ctrl+D para sair.\n");
whitle((password = getpass("\nPassword: ")) != NULL && *password ) {
if ((problema = FascistCheck(password, DICIONARIO)) != NULL) {
printf("Bad Password: %s.\n", problema);
status = 1;
} else {
printf("Good Password!\n");
}
exit(status);
/* Eof */
Muito bem, uma vez escrito o script, vamos agora compilá-lo:
$ gcc Cracktest.c -lcrack -o cracktest
Agora vamos rodá-lo.
OBS: As senhas que você digitar não irão aparecer em sua tela!!
$ ./cracktest
Entre uma password vazia ou Ctrl+D para sair.
Password: abc
Bad Password: it´s WAY too short.
Password: airplane
Bad Password: it is based on a dictionary word.
Password: Kz15%!.Df
Good Password!
muito bom... até o proximo