DNS sobre SSH da maneira moderna

Mar 24 2023
DNS sobre HTTPS, Socks e SSH
Tunelar DNS através de SSH usando socat ou nc com pipes nomeados é uma abordagem meticulosa para um problema não tão comum. Na minha experiência, pode ser incrivelmente não confiável quando você mais precisa e leva constantemente a solicitações suspensas que exigem a reinicialização do processo.

Tunelar DNS através de SSH usando socatou nccom pipes nomeados é uma abordagem meticulosa para um problema não tão comum. Na minha experiência, pode ser incrivelmente não confiável quando você mais precisa e leva constantemente a solicitações suspensas que exigem a reinicialização do processo. Não é de admirar; envolver um protocolo sem conexão em um orientado a conexão quase parece que está fadado a quebrar em algum lugar. Para resolver isso, vamos configurar nossos sistemas para usar DNS sobre HTTPS… sobre SOCKS… sobre SSH… ( alguém DoHoSoSSH? )

Eu quero isso agora

Ok ok, aqui está o link para o meu repositório DoHoSoSSH Docker container:

Me diga mais…

Felizmente, configurar essa configuração é super simples, com cloudflared:

Agora, à primeira vista, cloudflaredpode não parecer a ferramenta certa para o trabalho, mas na verdade tem um recurso integrado proxy-dnsque irá ativar um servidor DNS local em UDP/53 e encaminhá-lo para um servidor DoH de sua escolha. E adivinha o que mais? Sim, também reconhece proxy, o que significa que podemos encapsular essas solicitações de DoH em um proxy SOCKS.

Felizmente, o DynamicForward do OpenSSH permite conexões SOCKS4 e SOCKS5, o que significa que podemos usar essa opção para fazer proxy cloudflareddas solicitações HTTPS para um servidor DoH! Para fazer isso, vou usar autosshpara garantir que meu túnel persista, pois o sshcliente normal pode morrer após um período de inatividade.

_> autossh -M0 -N -vvv -D 8080 remoteuser@remotehost

Agora que temos nosso túnel SSH com Dynamic Port Forwarding configurado, podemos iniciar cloudflaredcom a maioria das configurações padrão:

_> export HTTPS_PROXY=socks5://localhost:8080/
_> cloudflared proxy-dns --address 0.0.0.0
2022-08-09T20:05:27Z INF Adding DNS upstream url=https://1.1.1.1/dns-query
2022-08-09T20:05:27Z INF Adding DNS upstream url=https://1.0.0.1/dns-query
2022-08-09T20:05:27Z INF Starting DNS over HTTPS proxy server address=dns://0.0.0.0:53
2022-08-09T20:05:27Z INF Starting metrics server on 127.0.0.1:35423/metrics

Por fim, posso usar digpara fazer algumas consultas de DNS e tcpdump para monitorar solicitações de DNS de saída para validar se funciona!

Como você pode ver, nenhuma solicitação de DNS saiu do meu sistema e, no entanto, dig retornou com sucesso o IP para example.com. DoHoSoSSH está funcionando!

Porquê…

- Você provavelmente

Se você estiver em uma rede que inspeciona o tráfego DNS e também descriptografa TLS no tráfego HTTPS, essa pode ser uma ótima configuração para você. Você pode ocultar suas consultas de DNS com segurança com o DoH, mas o DoH não impedirá a incômoda inspeção do TLS. É aí que entra o túnel SSH. Além disso, agora você tem um bom proxy SOCKS para tunelar o resto do seu tráfego HTTP/S. Duplo golpe!

Qual é o próximo?

Configure rapidamente com meu contêiner DoHoSoSSH Docker!

Não se esqueça de configurar seus sistemas para usar seu novo servidor DoHoSoSSH como servidor DNS primário! Ao usar o cloudflared, conseguimos encapsular com sucesso as solicitações de DNS por meio de um túnel SSH sem nenhum encapsulamento UDP hacky. No geral, descobri que essa configuração é muito mais estável e, embora todos os meus outros túneis UDP ainda sejam os mesmos, pelo menos sei que, no futuro, minha rede não é obstruída pelo meu estranho desejo de encapsular o DNS por meio do SSH.

A Maveris é uma empresa de TI e segurança cibernética comprometida em ajudar as organizações a criar soluções digitais seguras para acelerar sua missão. Somos propriedade de veteranos e temos orgulho de atender clientes em todo o governo federal e no setor privado. O Maveris Labs é um espaço para funcionários e clientes perguntarem e explorarem respostas para suas perguntas "e se..." e expandirem os limites do que é possível em TI e segurança cibernética. Para saber mais, acesse maveris.com/#maveris-labs .