Protegendo túneis SSH

1

Temos um aplicativo que usa SSH para se conectar a um servidor: o tráfego de rede do aplicativo (banco de dados, alguns protocolos TCP personalizados, etc ...) é encapsulado por meio de uma conexão SSH.

Usamos um par de chaves e uma conta sem privilégios no servidor, mas os usuários ainda podem usar a chave para fazer login no servidor ou fazer o redirecionamento de porta desejado.

Existe uma maneira de configurar o servidor SSH para permitir apenas alguns túneis (restritos no endereço e porta do túnel) e desabilitar o acesso ao shell? (nós usamos o OpenSSH)

[editar]

Eu encontrei este artigo , parece que a remoção do acesso ao shell não é suficiente. Alterou o título e a descrição de acordo.

    
por Luper Rouch 03.06.2009 / 20:06

4 respostas

6

Em seu arquivo authorized_keys, você pode especificar qual comando será executado quando eles fizerem login. Você poderia simplesmente definir esse comando para executar algo que apenas esperaria por um longo tempo. O homem sshd página como uma lista de todas as opções que você pode usar no seu arquivo authorized_keys.

permitopen="tsserver.example.org:3389",no-pty,no-agent-forwarding,no-X11-forwarding,command="/usr/local/stm_shell.sh" ssh-rsa AAAAB3....

Meu stm_shell.sh é isso (ele também impõe um tempo limite de 12 horas). Não tenho 100% de certeza se isso é completamente seguro.

#!/bin/bash

# send a hang-up after this process exits
shopt -s huponexit
# maximum session length in hours
CONNECT_TIME=12
sleep $[CONNECT_TIME*60]
kill $PPID
    
por 03.06.2009 / 20:18
2

Configurar o shell do usuário para / bin / false pode fazer o que você está procurando.

    
por 03.06.2009 / 20:10
1

Talvez a palavra-chave "ChrootDirectory" no sshd_config (man sshd_config) possa dar um pouco mais de segurança extra.

    
por 03.06.2009 / 20:24
0

Acredito que você poderia definir a diretiva ForceCommand como /bin/false para impedir o acesso ao shell.

    
por 03.06.2009 / 20:15