Pesquisa de site

Como configurar um servidor SSH Jump no Linux


Um host de salto (também conhecido como servidor de salto) é um host intermediário ou um gateway SSH para uma rede remota, através do qual uma conexão pode ser feita com outro host em um zona de segurança diferente, por exemplo, uma zona desmilitarizada (DMZ). Ele conecta duas zonas de segurança diferentes e oferece acesso controlado entre elas.

Um host de salto deve ser altamente seguro e monitorado, especialmente quando abrange uma rede privada e uma DMZ com servidores que fornecem serviços aos usuários na Internet.

Um cenário clássico é conectar seu desktop ou laptop de dentro da rede interna da sua empresa, que é altamente segura com firewalls, a uma DMZ. Para gerenciar facilmente um servidor em uma DMZ, você pode acessá-lo através de um host de salto.

Resumindo, um servidor SSH Jump é um servidor Linux usado como gateway para outros servidores Linux em uma rede privada através do protocolo SSH.

Neste artigo, demonstraremos como acessar um servidor Linux remoto por meio de um jump host e também definiremos as configurações necessárias nas configurações do cliente SSH por usuário.

Configuração do servidor de salto SSH

Considere o seguinte cenário.

Para maior clareza, abaixo está uma configuração simples que demonstra a função de um servidor SSH Jump.

Razões para configurar um servidor SSH Jump

Um servidor Jump fornece um gateway para sua infraestrutura e reduz a superfície de ataque potencial aos seus recursos. Ele também fornece gerenciamento transparente de dispositivos, bem como um ponto único de entrada para seus recursos.

Lembre-se de que, ao incorporar um servidor jump em sua infraestrutura, certifique-se de que o servidor esteja protegido, caso contrário, seria tão bom quanto não usá-lo. Voltaremos a isso mais tarde neste tutorial.

Como criar um servidor SSH Jump simples

Vamos agora nos concentrar em como você pode criar um servidor SSH Jump simples. Aqui está nossa configuração simples.

  • IP de origem: 105.68.76.85.
  • Jump Server IP (chamaremos isso de host-jump): 173.82.232.55.
  • IP de destino (chamaremos isso de host_destination): 173.82.227.89.

No cenário acima, você deseja se conectar ao HOST 2 (173.82.227.89), mas precisa passar pelo HOST 1 (173.82.232.55), por causa do firewall, roteamento e privilégios de acesso. Há vários motivos válidos pelos quais os hosts de salto são necessários.

Lista dinâmica de Jumphost

A maneira mais simples de conectar-se a um servidor de destino por meio de um host de salto é usar os sinalizadores -A e -J na linha de comando. Isso diz ao ssh para fazer uma conexão com o host de salto e então estabelecer um encaminhamento TCP para o servidor de destino, a partir daí (certifique-se de ter login SSH sem senha entre máquinas).

ssh -A -J user@jump-server  user@destination server

Por exemplo, em nossa configuração, temos o usuário chamado james configurado no Jump Server e tecmint configurado no sistema de destino ou destino.

O comando terá a seguinte aparência no IP de origem.

ssh -A -J [email  [email 

O comando solicitará a senha de usuário do servidor de salto, seguida pela senha do sistema de destino, após a qual você terá acesso ao sistema de destino.

Se nomes de usuário ou portas nas máquinas forem diferentes, especifique-os no terminal conforme mostrado.

ssh -J username@host1:port username@host2:port	  

Lista de vários Jumphosts

A mesma sintaxe pode ser usada para fazer saltos em vários servidores.

ssh -J username@host1:port,username@host2:port username@host3:port

Lista estática de Jumphost

Lista estática de jumphost significa que você conhece o jumphost ou jumphosts necessário para conectar uma máquina. Portanto, você precisa adicionar o seguinte 'roteamento' de jumphost estático no arquivo ~/.ssh/config e especificar os aliases do host conforme mostrado.

### First jumphost. Directly reachable
Host vps1
  HostName vps1.example.org

### Host to jump to via jumphost1.example.org
Host contabo
  HostName contabo.example.org
  ProxyJump vps1

Agora tente conectar-se a um servidor de destino por meio de um host de salto conforme mostrado.

ssh -J vps1 contabo

O segundo método é usar a opção ProxyCommand para adicionar a configuração jumphost em seu ~.ssh/config ou $HOME/. arquivo ssh/config conforme mostrado.

Neste exemplo, o host de destino é contabo e o jumphost é vps1.

Host vps1
	HostName vps1.example.org
	IdentityFile ~/.ssh/vps1.pem
	User ec2-user

Host contabo
	HostName contabo.example.org	
	IdentityFile ~/.ssh/contabovps
	Port 22
	User admin	
	Proxy Command ssh -q -W %h:%p vps1

Salve as alterações e saia do arquivo. Para aplicar as alterações, reinicie o daemon SSH.

sudo systemctl restart ssh

Vamos explorar as opções usadas no arquivo de configuração:

  • -q – Significa modo silencioso. Suprime avisos e mensagens de diagnóstico.
  • -W – Solicita que a entrada e a saída padrão do cliente sejam encaminhadas para HOST em PORT através do canal seguro.
  • %h – Especifica o host ao qual se conectar.
  • %p – Especifica a porta para conexão no host remoto.

Para ‘saltar‘ para o sistema de destino a partir do seu IP de origem através do Jump Server, basta executar o seguinte comando:

ssh contabo

O comando acima abrirá primeiro uma conexão ssh para vps1 em segundo plano afetado pelo ProxyCommand e, em seguida, iniciará a sessão ssh para o servidor de destino contabo.

Tornando o servidor SSH Jump mais seguro

Uma das maneiras de tornar esta configuração mais segura é copiar a chave SSH pública do sistema de origem para o Jump Server e, finalmente, para o sistema de destino e, em seguida, desabilitar a autenticação por senha. Confira nosso guia sobre como habilitar a autenticação SSH sem senha.

Além disso, confira dicas de proteção de servidor SSH.

Além disso, certifique-se de que nenhum dado confidencial esteja armazenado no servidor Jump, pois isso pode levar ao vazamento de credenciais de acesso, como nomes de usuário e senhas, levando a uma violação em todo o sistema.

Para obter mais informações, consulte a página man do ssh ou consulte: OpenSSH/Cookbxook/Proxies e Jump Hosts.

É tudo por agora! Neste artigo, demonstramos como acessar um servidor remoto por meio de um host de salto. Use o formulário de feedback abaixo para fazer perguntas ou compartilhar suas idéias conosco.