DNS sobre SSH da maneira moderna
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!
Porquê…
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 .





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)