Como restringir o tráfego ssh de saída apenas para determinados hosts sem iptables

1

Um dos nossos servidores ssh funciona como jumphost. Os usuários devem continuar apenas em determinados hosts de destino. Isso pode ser feito com iptables , mas no momento não é a solução desejada.

Eu verifiquei man ssh_config para ver se esse cenário pode ser configurado dentro de todo o sistema ssh_config , mas não encontrei dica.

Alguma idéia além do iptables para conseguir isso?

    
por MarkHelms 11.09.2017 / 10:14

6 respostas

1

Adicione uma rota válida para seus destinos e uma rota mais genérica para null. Então, apenas as rotas definidas para seus destinos estarão disponíveis para os usuários. O problema é que isso está disponível para todos os usuários

    
por 11.09.2017 / 10:44
1

Você pode usar algo assim

#! /bin/sh

MSG='********************************
1 = host1
2 = anotherhost
3 = host3

0 = exit
********************************'

host=none

while test none = "$host"
do
  echo "$MSG"
  echo -n 'your choice: '
  read choice
  case "$choice" in
  1) host=host1.domain.com;;
  2) host=anotherhost.xy.de;;
  3) host=just.go.here;;
  0) exit;;
  esac
done

ssh $host

como o shell de login de seus usuários ssh no jumphost. Se você salvar como / usr / bin / ssh-choice, não esqueça de adicionar / usr / bin / ssh-choice a / etc / shells.

TomTomTom

    
por 11.09.2017 / 10:50
1

Não tenho certeza sobre a configuração, mas talvez desabilitar o login do shell no host de salto e permitir o encaminhamento de porta para hosts específicos apenas para usuários específicos e, em seguida, exercitar a opção -J (ProxyJump) do openssh poderia ser uma solução aqui? A diretiva Match do sshd_config pode ajudar aqui.

    
por 24.10.2017 / 22:07
1

Respondendo a um comentário anterior:

Se você precisar de acesso ao shell, provavelmente precisará de .ssh / config imutável e vazio nos diretórios home dos usuários, todos os hosts permitidos listados em / etc / ssh / ssh_config e capturar toda a diretiva Host que redireciona para um ProxyCommand sempre com falha (que também pode imprimir a mensagem de coaching para stderr, para que o usuário possa vê-la).

Algo ao longo das linhas:

Host host1 host1.example.com
    <whatever directives may be needed here if any>

Host host2 host2.example.net
    <whatever directives may be needed here if any>

Host *
    ProxyCommand /bin/false
    
por 27.10.2017 / 15:42
0

Remova tudo exceto o jumphost da tabela de roteamento do host ou coloque o firewall que impede conexões em algum outro lugar que não seja o próprio host.

    
por 11.09.2017 / 10:33
0

Você pode hospedar.allow e / ou hosts.deny nas máquinas de destino.

    
por 11.09.2017 / 13:41

Tags