DNS su SSH in modo moderno

Mar 24 2023
DNS su HTTPS, Socks e SSH
Il tunneling DNS tramite SSH utilizzando socat o nc con named pipe è un approccio delicato a un problema non così comune. Nella mia esperienza può essere incredibilmente inaffidabile quando ne hai più bisogno e porta costantemente a richieste bloccate che richiedono il riavvio del processo.

Il tunneling DNS tramite SSH utilizzando socato nccon named pipe è un approccio delicato a un problema non così comune. Nella mia esperienza può essere incredibilmente inaffidabile quando ne hai più bisogno e porta costantemente a richieste bloccate che richiedono il riavvio del processo. Non c'è da stupirsi però; avvolgere un protocollo senza connessione in uno orientato alla connessione sembra quasi destinato a rompersi da qualche parte. Per risolvere questo problema, configureremo i nostri sistemi in modo che utilizzino DNS su HTTPS... su SOCKS... su SSH... ( DoHoSoSSH chiunque? )

lo voglio adesso

Ok ok, ecco il link al mio repository di container DoHoSoSSH Docker:

Dimmi di più…

Per fortuna, ottenere questa configurazione è semplicissimo, con cloudflared:

Ora, a prima vista, cloudflaredpotrebbe non sembrare lo strumento giusto per il lavoro, ma in realtà ha una funzionalità integrata proxy-dnsche farà girare un server DNS locale su UDP/53 e lo inoltrerà a un server DoH di tua scelta. E indovina cos'altro? Sì, è anche a conoscenza del proxy, il che significa che possiamo eseguire il tunneling di quelle richieste DoH su un proxy SOCKS.

Per fortuna DynamicForward di OpenSSH consente connessioni SOCKS4 e SOCKS5, il che significa che possiamo usare questa opzione per inoltrare cloudflaredle richieste HTTPS di un server DoH! Per fare ciò, userò autosshper assicurarmi che il mio tunnel persista, poiché il sshclient normale potrebbe morire dopo un periodo di inattività.

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

Ora che abbiamo configurato il nostro tunnel SSH con Dynamic Port Forwarding, possiamo iniziare cloudflaredcon la maggior parte delle impostazioni predefinite:

_> 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

Infine, posso utilizzare digper eseguire alcune query DNS e tcpdump per monitorare le richieste DNS in uscita per verificare che funzioni!

Come puoi vedere, nessuna richiesta DNS ha lasciato il mio sistema, eppure dig ha restituito con successo l'IP a example.com. DoHoSoSSH funziona!

Perché però...

- Tu probabilmente

Se ti trovi su una rete che ispeziona il traffico DNS e esegue anche la decrittografia TLS sul traffico HTTPS, questa potrebbe essere un'ottima configurazione per te. Puoi nascondere le tue query DNS in modo sicuro con DoH, ma DoH non fermerà quella fastidiosa ispezione TLS. È qui che entra in gioco il tunnel SSH. Inoltre, ora hai un bel proxy SOCKS per il tunneling del resto del tuo traffico HTTP/S. Doppio colpo!

Qual è il prossimo?

Ottieni rapidamente la configurazione con il mio contenitore DoHoSoSSH Docker!

Non dimenticare di configurare i tuoi sistemi per utilizzare il tuo nuovo server DoHoSoSSH come server DNS primario! Utilizzando cloudflared, siamo stati in grado di eseguire correttamente il tunneling delle richieste DNS attraverso un tunnel SSH senza alcun tunneling UDP hacky. Nel complesso, ho trovato questa configurazione molto più stabile e, sebbene tutti gli altri miei tunneling UDP saranno sempre gli stessi, almeno so che andando avanti la mia rete non è ostacolata dal mio strano desiderio di eseguire il tunneling del DNS tramite SSH.

Maveris è un'azienda IT e di sicurezza informatica impegnata ad aiutare le organizzazioni a creare soluzioni digitali sicure per accelerare la loro missione. Siamo di proprietà di veterani e orgogliosi di servire clienti in tutto il governo federale e nel settore privato. Maveris Labs è uno spazio in cui dipendenti e clienti possono chiedere ed esplorare le risposte alle loro scottanti domande "e se..." e per espandere i limiti di ciò che è possibile nell'IT e nella sicurezza informatica. Per saperne di più, vai su maveris.com/#maveris-labs .