apenas com SSH: acesso à web de túnel reverso via proxy SOCKS do ssh

14

De vez em quando eu tenho que conectar a um servidor onde o acesso é altamente restrito.
Somente o SSH de entrada é permitido pelo firewall DMZ.
As conexões HTTP de saída são bloqueadas.

Estou procurando uma maneira fácil de encapsular o acesso à web por meio da minha sessão SSH, para que eu possa instalar atualizações e software por meio do yum / apt-get. Idealmente, gostaria de evitar a instalação de software / serviços adicionais na área protegida.

O que você faz em tal situação?

O SSH tem a opção de proxy -D <port> SOCKS. Mas infelizmente é apenas uma via do cliente para o servidor e não há opção reversa.

    
por Kaii 20.02.2012 / 10:57

2 respostas

20

Eu finalmente consegui fazer isso com ssh apenas:

  1. inicie um proxy SOCKS local na sua máquina cliente (usando ssh -D )
  2. conecte-se ao servidor remoto e configure um encaminhamento reverso de porta ( ssh -R ) para seu proxy SOCKS local
  3. configure o software do servidor para usar o proxy encaminhado

1. Iniciar proxy de meias locais

Conecte-se ao host local via SSH e abra o proxy SOCKS na porta 54321.

$ ssh -f -N -D 54321 localhost

-f executa o SSH em segundo plano.

2. conectar-se ao servidor remoto e configurar o encaminhamento de porta reversa

Vincule a porta remota 6666 à porta local 54321. Isso disponibiliza o proxy de meias local para o site remoto na porta 6666.

$ ssh root@target -R6666:localhost:54321

3. configurar o software do servidor para usar o proxy encaminhado

Basta configurar o yum, apt, curl, wget ou qualquer outra ferramenta que suporte o SOCKS para usar o proxy 127.0.0.1:6666 .

Voilá! Tunelamento feliz!

4. opcional: configure o software do servidor para usar o proxy encaminhado

Descobri que a instalação do proxychains no servidor de destino facilita muito as coisas.

Ele permite que qualquer software use o proxy SOCKS (até telnet ), usando um truque LD_PRELOAD para redirecionar solicitações TCP e DNS de comandos arbitrários para um proxy.

Configure /etc/proxychains.conf para usar o proxy de meias encaminhadas:

[ProxyList]
# SSH reverse proxy
socks5  127.0.0.1 6666

Ferramentas arbitrárias de túnel (que usam TCP) com proxychains :

$ proxychains telnet google.com 80
$ proxychains yum update
$ proxychains apt-get update
    
por 20.02.2012 / 11:28
2

As versões mais recentes do SSH permitem usar a opção muito simples de ssh-R <[bind_address:]port> . Usar apenas a porta no host e talvez o endereço de ligação, mas não especificar a porta do lado do cliente, criará um proxy SOCKS reverso.

Isso também é indicado nas páginas man das versões mais recentes do SSH:

[...] if no explicit destination was specified, ssh will act as a SOCKS 4/5 proxy and forward connections to the destinations requested by the remote SOCKS client.

Você pode testar isso com o curl conectando-se a um simples "dê-me meu IP" - como o link .

$ curl ifconfig.io

vs

$ curl --socks5 localhost:<PORT> ifconfig.io

    
por 21.09.2018 / 10:29

Tags