Como posso acessar remotamente um site da intranet a partir de uma rede externa por meio de um túnel SSH?

6

Recentemente, configurei o FreeIPA em um sistema acessível internamente em casa. Gostaria de gerenciar essa interface de usuário da web de redes externas à minha LAN, mas, ao mesmo tempo, não quero expor essa interface da web à Internet pública. Existe uma maneira de acessá-lo através de um túnel SSH?

OBSERVAÇÃO: estou familiarizado com a configuração de um túnel usando ssh & é -L mudar assim:

$ ssh -L 12345:ipa.local.net:80 mysshserver

No entanto, essa abordagem não funcionará nesse cenário, pois o acesso ao FreeIPA requer que você use o nome do host real do servidor, além de poder acessar a interface do usuário da Web usando as duas portas 443 e 80.

Existe outra maneira de realizar isso além de ssh -L ?

    
por slm 13.07.2015 / 06:23

1 resposta

4

A execução de tunelamento SSH pode ficar um pouco confusa com toda a terminologia, mas há um recurso complementar a -L , que fornece a capacidade de "dinamicamente" atribuir portas alocando um soquete localmente, em vez de uma única porta.

Da página do manual:

-D [bind_address:]port
    Specifies a local ''dynamic'' application-level port forwarding.  This works by 
    allocating a socket to listen to port on the local side, optionally bound to the 
    specified bind_address.  Whenever a connection is made to this port, the connection 
    is forwarded over the secure channel, and the application protocol is then used to 
    determine where to connect to from the remote machine.  Currently the SOCKS4 and 
    SOCKS5 protocols are supported, and ssh will act as a SOCKS server.  Only root 
    can forward privileged ports. Dynamic port forwardings can also be specified in 
    the configuration file.

Ao alocar um soquete, todo o tráfego pode ser canalizado para o site remoto, incluindo consultas DNS.

Como usar

Para começar, você precisará abrir uma conexão com sua LAN (por meio de seu endereço IP público na Internet) assim:

$ ssh -D 1234 myserver

OBSERVAÇÃO: Isso pressupõe que você tenha a capacidade de acessar o SSH em um servidor acessível por meio de seu endereço IP público da Internet.

Uma vez configurada, em outro terminal, você vai querer configurar seu navegador para usar este túnel. OBSERVAÇÃO: Esse tipo de túnel está fornecendo um soquete, portanto, para se conectar a ele, é necessário informar ao seu navegador da Web para fazer proxy de todo o tráfego por meio desse soquete. Isso é normalmente mostrado como um tipo de conexão SOCKS ou SOCKS v5 para seu proxy.

Um exemplo

Neste exemplo, mostrarei como você pode fazer isso usando o Chromium, por meio da CLI:

$ ./Chromium --proxy-server="socks5://localhost:1234"

Aqui estou lançando o Chromium e apontando para o túnel SSH que nós configuramos anteriormente na porta 1234 do nosso host local. E, com isso, se eu tentar visitar uma URL para um servidor que está configurado na minha LAN, dirigido a ele:

Proxycomoutrosnavegadores

TodososprincipaisnavegadoresfornecemesserecursoesãobastanteabrangentesemoutrossitesdeSE,comooSuperUser:

  • ComopossoalterarasconfiguraçõesdeproxydoGoogle?Chrome?
  • Como configurar as configurações de proxy no firefox?

Você pode até mesmo fazer uso de extensões para os vários navegadores, o que permite que você faça a seletividade seletiva apenas de determinados tráfegos, permitindo que você direcione todo o resto para sua conexão normal à Internet.

Por exemplo, você pode usar o ProxySwitchy! com o Chrome para fazer exatamente isso:

    
por 13.07.2015 / 06:23