Criar uma contra-senha [RESOLVIDO]

1. Criar uma contra-senha [RESOLVIDO]

Edilson Feitoza
edfeitoza

(usa Debian)

Enviado em 20/02/2009 - 13:00h

Pessoal, quero colocar uma contra-senha no acesso ao ssh, como por exemplo:
Conecta-se ao ssh, digita login senha, antes dele acessar o Shell, quero colocar um script, que faça com que o usuário digite um código gerado na tela, como acontece em sites de downloads gratuitos. É possível fazer isso, ou existe uma solução melhor?


  


2. MELHOR RESPOSTA

Jeferson dos Santos
lordhulk

(usa Ubuntu)

Enviado em 02/03/2009 - 02:10h

mude o shell padrão do usuário em /etc/passwd como exemplo:

suporte:x:1000:1000:suporte,,,:/home/suporte:/usr/local/bin/contrasenha


chame esse script de contrasenha e coloque em /usr/local/bin:



------------------------------INICIO DO SCRIPT---------------------------------------
#!/bin/bash
#contrasenha.
#escrito por Jeferson dos Sandos < jeferson at jeferson.info >

tentativas=3


clear

while : ;
do
#trap "clear ; echo ctrl+c e ctrl +v não permitidos" 2 20


#se quiser senha apenas numerica, use este primeiro e comente o que esta entre
#a marcação abaixo

# contrasenha=$(echo $(($[$RANDOM % 10000]*$[($RANDOM % 10000)] * $[($RANDOM % 10000)])))


#------------------------------------------------------------------------------
gerasenha ()
{
case $1 in
mista)
pass=</dev/urandom tr -dc A-Za-z0-9| (head -c $1 > /dev/null 2>&1 || head -c 8 | tr A-Z a-z)
echo $pass
;;
complexa)
pass=</dev/urandom tr -dc A-Za-z0-9| (head -c $1 > /dev/null 2>&1 || head -c 8)

;;
numerica)
echo $(($[$RANDOM % 10000]*$[($RANDOM % 10000)]))
esac
}

#------------------------------------------------------------------------------


#deixe apenas uma opção ativada:

#gerasenha mista, gera numeros e letras minusculas aleatorias
contrasenha=$(gerasenha mista)

#gerasenha complexa gera numeros e letras maiúsculas e minúsculas
#contrasenha=$(gerasenha mista)


#gerasenha numerica gera apenas numeros
#contrasenha=$(gerasenha numerica)

echo A contra-senha é:
echo -e "{TEXTO}33[33m"$contrasenha"{TEXTO}33[m"

echo por favor, repita-a abaixo
read resposta

if [ "$resposta" = "$contrasenha" ] ;
then
echo contra-senha aceita, acessando o shell
sleep 1
#clear
bash
break
else
let tentativas--
if [ $tentativas = 0 ] ;
then
clear
echo -e "{TEXTO}33[31m" limite de tentativas excedido, abortando... "{TEXTO}33[m"
break
else
clear
echo -e "{TEXTO}33[31m"ERRO: contra-senha incorreta, tentativas restantes:"{TEXTO}33[m" $tentativas
fi
fi
done


-------------------FIM DO SCRIPT---------------------------------------------------------------------


De nada,





Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts