Confirma o login e o arquivo de log do ssh

3

Existe alguma maneira de parar os logins do ssh sem confirmação? Quando alguém quiser fazer o login no meu computador, eu sou solicitado pelo ssh para confirmar o login antes que ele seja bem-sucedido.

No nosso laboratório universitário, todos os computadores têm um nome de usuário e senhas comuns para que qualquer pessoa, principalmente estudantes, possa acessar os computadores. Eu preciso de uma maneira para que isso possa ssh evitar logins até que eu confirme.

Da mesma forma, existe um arquivo de log que eu possa usar para saber se alguém está acessando meu computador?

    
por shantanu 14.10.2011 / 22:56

2 respostas

3

O SSH não foi projetado para esse acesso sob demanda. No entanto, se o acesso ao shell (ou transferência de arquivos) é a única coisa com que você precisa se preocupar, você deve restringir as possibilidades de SSH e adicionar um script que não inicie um shell, a menos que você permita.

Para a parte limitadora de SSH, participei de Como criar um usuário SSH restrito para o encaminhamento de porta . Edite /etc/ssh/sshd_config e adicione:

Match user your-username
    AllowAgentForwarding no
    ForceCommand ~/bin/ssh-confirm

Crie o executável ~/bin/ssh-confirm (modo 755) e crie um script / programa no idioma à sua escolha, o que precisa ser confirmado antes de descartar um shell SSH, por exemplo:

#!/bin/bash
confirmfile="$HOME/allow-ssh-for-pid-$$"
if [ -f "$confirmfile" ]; then
    echo "Old confirmation file found for the SSH session, exiting!"
    exit 1
fi
# wait for a grant for 30 seconds before giving up
for ((i=0; i<30; i++)); do
    if [ -f "$confirmfile" ]; then
        rm "$confirmfile"
        exec "$SHELL"
    fi
    sleep 1
done
echo "SSH access timed out."
exit 1

Isso exigiria que você criasse o arquivo "allow-ssh-for-pid - $$", em que $$ é o pid do script executado a partir do SSH. Você pode usar ps , pidof , etc para determinar o PID. É claro que pode ser mais sofisticado, como alertar você através de notify , mas vou supor que as pessoas vão te dar um anel se tentarem acessar você.

Além disso, suponho que você confie nas pessoas que você concede acesso ao SSH. Caso contrário, crie um usuário separado (sem sudo permissões, é claro;)) e armazene o ssh-confirm em um local como /usr/local/bin e armazene os tokens de acesso em algum outro lugar.

As tentativas de login (e logouts) do SSH são registradas em /var/log/auth.log . Execute w para obter uma lista de usuários logados (nota: você obterá várias entradas para os terminais abertos em sua máquina, preste atenção na coluna FROM ).

    
por Lekensteyn 14.10.2011 / 23:15
0
/var/log/auth.log

Aqui é onde você pode ver um histórico de login. Eu não tenho certeza se há uma solução elegante para o que você está pensando em controlar o acesso, no entanto, como tudo o que posso pensar é algum tipo de esquema louco, onde você usa rsync ou algo parecido para revogar e restabelecer o Chaves SSH, conforme necessário.

    
por Anna 14.10.2011 / 23:06

Tags