Como fazer um túnel SSH para evitar ataques MITM?

Como fazer um túnel SSH para evitar ataques MITM?

Digamos que eu tenha um computador dentro de um roteador doméstico típico (mas digamos que o acesso de firewall/encaminhamento de porta ao roteador não esteja disponível). Seu IP interno pode ser 192.168.1.81. Há uma máquina invasora naquela LAN com o IP 192.168.1.85 que deseja fazer um típico ataque MITM de falsificação de ARP em 192.168.1.81 (digamos que ele deseja executar algo como urlsnarf para detectar sites visitados). A máquina 192.168.1.81 deseja prevenir qualquer forma de ataque MITM e permanecer segura ao navegar na Internet no Chrome. Ele tem um servidor com acesso SSH que deseja usar para criptografar sua navegação na web, para que o invasor não possa detectá-lo com um ataque MITM. Como posso (o usuário que deseja usar o tunelamento SSH para permanecer seguro) usar o tunelamento SSH no meu servidor (no IP público 162.xx.xxx.xx) para evitar o possível ataque MITM? Isto é para um projeto de feira de ciências. Quais configurações (se houver) eu teria que fazer no meu servidor (tenho acesso root total)? Minha porta SSH é diferente do normal, então use a porta SSH 25512 como referência. Também abri a porta 4567 no firewall do servidor, portanto, use essa porta também como referência. Use 72.xxx.xx.xxx como IP público para a rede doméstica. Inclua todos os comandos necessários. Deixe-me saber se preciso ser mais claro. Muito obrigado a quem puder ajudar!

Responder1

A maneira mais fácil é executar um proxy (fe squid) em seu servidor remoto e fazê-lo escutar apenas na interface local 127.0.0.1(porque você não deseja abrir um proxy para a internet).

Em seguida, você faz o ssh no servidor remoto e cria um encaminhamento tcp para a interface do proxy local no servidor remoto.

Por exemplo, digamos que seu proxy no servidor remoto 162.xx.xx.xxesteja escutando tcp 127.0.0.1:3128. Agora você pode se conectar a ele com ssh com este comando:

ssh -p 25512 -L 3128:127.0.0.1:3128 -C 162.xx.xx.xx

Isso abre um túnel do seu cliente 127.0.0.1:3128para os hosts remotos 127.0.0.1:3128. Então você pode simplesmente configurar seu navegador no cliente para usar o proxy 127.0.0.1:3128que é então encapsulado via ssh para o host remoto e passado para o proxy lá.

O -Cparâmetro permite a compactação e deve tornar sua navegação um pouco mais rápida, pois menos dados precisam ser transmitidos.

Estas são as partes relevantes de man 1 ssh:

 -L [bind_address:]port:host:hostport
         Specifies that the given port on the local (client) host is to be forwarded to 
         the given host and port on the remote side.  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 a connection is made to host port 
         hostport from the remote machine.  Port forwardings can also be specified in 
         the configuration file.  IPv6 addresses can be specified by enclosing the 
         address in square brackets.  Only the superuser can forward privileged ports. 
         By default, the local port is bound in accordance with the GatewayPorts 
         setting.  However, an explicit bind_address may be used to bind the connection 
         to a specific address.  The bind_address of “localhost” indicates that the 
         listening port be bound for local use only, while an empty address or ‘*’ 
         indicates that the port should be available from all interfaces.

 -C      Requests compression of all data (including stdin, stdout, stderr, and data for
         forwarded X11 and TCP connections).  The compression algorithm is the same used
         by gzip(1), and the “level” can be controlled by the CompressionLevel option 
         for protocol version 1.  Compression is desirable on modem lines and other slow 
         connections, but will only slow down things on fast networks.  The default 
         value can be set on a host-by-host basis in the configuration files; see the 
         Compression option.

 -p port
         Port to connect to on the remote host.  This can be specified on a per-host 
         basis in the configuration file.

informação relacionada