Bloqueie sessões SSH interativas enquanto permite certos comandos

3

Como alguém permitiria que determinados comandos fossem executados via SSH e bloqueasse sessões interativas?

rsync.net faz isso assim como bakop.com.

Ou seja. isso funcionaria:

ssh <user@host> mkdir test
scp <file> <user@host>:test/

E isso não seria:

ssh <user@host>
    
por Ime Prezime 09.06.2012 / 17:37

3 respostas

8

Você pode aproveitar a capacidade de restringir a chave a um determinado comando usando a diretiva command= em authorized_keys e a variável SSH_ORIGINAL_COMMAND que é transmitida ao sistema remoto.

No arquivo authorized_keys, altere a linha que contém a chave relevante de

ssh-rsa AAAAB3NzaC1yc...

para

command="/path/to/myscript" ssh-rsa AAAAB3NzaC1yc...

Em seguida, crie o arquivo myscript, como por exemplo

#!/bin/bash

if [  ! -n "$SSH_ORIGINAL_COMMAND" ]
then
    echo "No command supplied"
    exit 1
fi


set $SSH_ORIGINAL_COMMAND

case "$1" in
    ls)
      ;;
    md5)
      ;;
    *)
      echo "invalid command"
      exit 1
      ;;
esac

    exec "$@"

agora, se você executar ssh [email protected] ls /etc , obterá uma listagem do diretório /etc remoto. Você provavelmente desejará usar as instruções case para testar os parâmetros fornecidos para atender a quaisquer requisitos de implementação.

    
por 09.06.2012 / 18:44
3

Em vez de criar seu próprio shell do zero, convém estender isso:

link

Ele fornece um shell que você pode definir como usuário (por exemplo, usermod ou diretamente em /etc/passwd ) que suporta apenas SCP. Você desejará estender isso para alguns binários selecionados de sua escolha, dos quais nenhum deve ser um shell interativo (por exemplo, /bin/bash , /bin/sh ). Com mais cuidado, eles não deveriam poder fazer o upload de um (por exemplo, um binário do busybox) e definir o bit executável para que eles possam incluir seu próprio shell.

    
por 09.06.2012 / 18:22
1

Use um shell diferente para esse usuário - você pode ter que escrever o seu próprio, se você tiver requisitos específicos, mas você precisa ter muito cuidado! Muitas conchas já oferecem operação restrita, mas podem não estar restritas o suficiente para você.

O Scp pode criar diretórios - então, o que mais você precisa para permitir que o usuário faça através do ssh interativo?

    
por 09.06.2012 / 18:18

Tags