FILE SERVER · SICUREZZA

Share di rete irraggiungibile via DNS: usare l’indirizzo IP degrada la sicurezza

Perché una scorciatoia di troubleshooting può trasformarsi in una regressione di sicurezza.

Vai al TL;DR

Oggi scriviamo un articolo che forse non serve.

Ma se anche una sola persona troverà qui un’informazione utile, allora si sarà già garantito una propria necessità.

Un utente segnala di non riuscire ad accedere a una share:

\\fileserver.ad.example.com\share

Il tecnico sospetta un problema DNS e fa una prova apparentemente logica:

\\10.10.20.30\share

Se tramite IP funziona, pensa, abbiamo tolto il DNS dall’equazione e ristretto il problema.

Sembra un test preciso, quasi elegante.

Tra poco vedremo che è molto meno corretto di quanto sembri.

Supponiamo che la share si apra.

A quel punto la tentazione è forte: il problema è il DNS, quindi cambiamo il collegamento dell’utente e usiamo direttamente l’IP.

Da:

\\fileserver.ad.example.com\share

a:

\\10.10.20.30\share

L’utente torna a lavorare.

Problema risolto?

No.

Il DNS è ancora guasto e, nel tentativo di aggirarlo, abbiamo cambiato qualcosa di molto più importante del percorso di rete: il modo in cui l’utente si autentica.

Il nome non serve solo a trovare il server

In Active Directory, il nome di un server non è semplicemente un’etichetta che il DNS traduce in un indirizzo IP.

Partecipa anche all’autenticazione Kerberos.

Quando il client accede a:

\\fileserver.ad.example.com\share

può richiedere al KDC un ticket Kerberos per uno specifico servizio, identificato da uno SPN come:

cifs/fileserver.ad.example.com

Qui “ticket” non significa richiesta di assistenza.

In Kerberos è una credenziale temporanea digitale emessa dal dominio.

Quando l’utente accede alla propria sessione, il client dimostra al KDC di conoscere il proprio segreto e riceve un primo ticket. Da quel momento può usare quel ticket per chiederne altri destinati ai servizi che deve raggiungere.

In forma molto semplificata:

utente/client → KDC → ticket per il servizio
poi:
client → file server → ticket Kerberos
Il punto importante

il file server non riceve la password dell’utente e non riceve nemmeno il suo NT hash.

Sa chi è l’utente perché si fida della prova emessa dal dominio.

Quando invece sostituiamo il nome con:

\\10.10.20.30\share

nella configurazione Windows standard perdiamo il normale percorso Kerberos basato sul nome e sul relativo SPN. Se NTLM è disponibile, il client può ricadere su NTLM.

Esistono configurazioni specifiche per usare Kerberos anche verso un indirizzo IP, ma sono configurazioni esplicite. Non sono ciò che accade quando qualcuno sostituisce al volo un hostname con un IP durante un troubleshooting.

Quello che sembrava:

“tolgo il DNS dall’equazione”

può quindi diventare:

nome → Kerberos
contro:
IP → NTLM

Ed ecco perché il test iniziale non era affatto neutro.

Se il test funziona

Torniamo a:

\\10.10.20.30\share

La share si apre.

Abbiamo scoperto che quella risorsa è raggiungibile attraverso quell’indirizzo.

Ma per scoprirlo abbiamo già provocato un’autenticazione NTLMv2.

NTLMv2 usa uno scambio challenge-response. Il relativo materiale NetNTLMv2 può essere acquisito, nelle condizioni appropriate, e utilizzato per tentativi di cracking offline o per attacchi di relay.

Quindi la conseguenza di sicurezza esiste già durante il test.

Prima ancora di decidere se lasciare l’IP nel collegamento dell’utente.

E c’è un dettaglio tutt’altro che secondario: chi sta facendo la prova?

Spesso il tecnico.

E il tecnico può usare un account molto più privilegiato di quello dell’utente che ha aperto il ticket.

Siamo partiti da:

“la share non si risolve correttamente.”

Per verificarlo abbiamo potenzialmente generato materiale autenticativo relativo a un account amministrativo.

Se poi trasformiamo l’IP nella configurazione permanente, il problema cambia ancora scala.

La disclosure occasionale prodotta dal test diventa continuativa e ripetuta.

Ogni nuovo accesso alla share continuerà a dipendere da quel percorso di autenticazione.

Nel frattempo abbiamo anche creato una dipendenza dall’indirizzo IP, aggiunto debito tecnico e reso quella configurazione incompatibile con una futura eliminazione di NTLM.

Tutto questo lasciando intatto il problema DNS originale.

Se il test non funziona

Adesso immaginiamo lo scenario opposto.

\\10.10.20.30\share

non si apre.

Che cosa abbiamo realmente scoperto?

Soltanto che l’accesso tramite IP è fallito.

Non sappiamo ancora perché.

Può essere un problema di rete, della porta 445, del servizio SMB, della share, delle autorizzazioni oppure dell’autenticazione.

E può semplicemente essere che NTLM sia disabilitato.

Qui il test può diventare ancora più pericoloso, perché rischia di cambiare la domanda.

All’inizio stavamo cercando di capire:

“Perché la share non funziona tramite nome?”

Adesso rischiamo di chiederci:

“Perché non funziona neanche tramite IP?”

Il tecnico approfondisce, trova una policy che blocca NTLM e conclude che quella policy impedisce il funzionamento.

A quel punto può nascere la tentazione di riabilitarlo.

Il rischio

riaprire a livello sistemico una superficie d’attacco già rimossa per rendere possibile un workaround locale a una share che continua ad avere un problema DNS.

La policy non era la causa del guasto.

Stava semplicemente impedendo che il workaround funzionasse degradando l’autenticazione.

Un caso apparentemente innocuo: le multifunzione

Le stampanti multifunzione rendono bene l’idea.

Quando un PC stampa direttamente verso una stampante usando una Standard TCP/IP Port, magari su RAW/9100, il percorso può essere:

PC → 10.10.30.50:9100 → stampante

Qui usare l’IP può essere perfettamente normale: non stiamo accedendo a una share SMB e spesso non esiste alcuna autenticazione Windows verso il dispositivo.

Poi però usiamo la stessa macchina come scanner.

Lo scan-to-folder punta a:

\\fileserver.ad.example.com\scansioni

Qui la multifunzione deve autenticarsi verso una share SMB.

Se qualcuno configura invece:

\\10.10.20.30\scansioni

siamo tornati esattamente nel caso precedente.

La falsa analogia è facile:

“Per stampare uso l’IP, quindi posso usarlo anche per lo scanner.”

Ma i due flussi non hanno nulla a che vedere tra loro dal punto di vista dell’autenticazione.

E infatti può succedere che, disabilitando NTLM, la stampa continui tranquillamente a funzionare mentre lo scan-to-folder configurato tramite IP smetta di funzionare.

Riabilitare NTLM per “sistemare lo scanner” sarebbe ancora una volta risolvere il problema sbagliato.

Il troubleshooting corretto parte più in basso

A questo punto la domanda torna a essere quella iniziale:

perché \\fileserver.ad.example.com\share non funziona?

E il primo controllo arriva ancora prima della query DNS.

Punto 0: quale DNS sta usando il client?

Get-DnsClientServerAddress

oppure:

ipconfig /all

Potremmo scoprire che il client usa 8.8.8.8.

Magari qualcuno lo aveva impostato manualmente durante un’attività temporanea e la configurazione è rimasta lì.

In quel caso la share è soltanto il primo sintomo visibile di un problema molto più ampio: quel client non sta usando il DNS interno previsto dall’ambiente.

Se la configurazione aziendale prevede DNS distribuiti via DHCP, può bastare riportare l’interfaccia alla configurazione corretta.

Fine.

Il problema “della share” era in realtà un DNS locale configurato male.

Poi verifichiamo la risoluzione

Resolve-DnsName fileserver.ad.example.com

Se serve, interroghiamo direttamente uno specifico resolver:

Resolve-DnsName fileserver.ad.example.com -Server 10.10.10.10

Ora sappiamo chi risponde e quale indirizzo restituisce.

Poi la rete e il servizio

Possiamo verificare l’IP:

ping 10.10.20.30

tenendo presente che ICMP può essere filtrato.

Per SMB è molto più utile:

Test-NetConnection 10.10.20.30 -Port 445

e confrontarlo con:

Test-NetConnection fileserver.ad.example.com -Port 445

Così separiamo DNS, connettività e servizio senza autenticare nessuno alla share tramite IP.

Poi la share e i permessi

Sul file server possiamo controllare:

Get-SmbShare

e:

Get-SmbShareAccess -Name NomeShare

insieme alle ACL NTFS e alle membership dell’utente.

La sequenza è semplice:

DNS del client → risoluzione → rete → TCP/445 → SMB → share → autorizzazioni

Ci muoviamo dal basso verso l’alto.

Ogni test risponde a una domanda.

Junior, senior e test con trade-off

Per un tecnico junior questa sequenza va seguita.

Magari alla quinta volta sembrerà noiosa, ma proprio la ripetizione costruisce un metodo di troubleshooting che vale molto oltre il caso SMB.

Un tecnico senior può avere un’intuizione.

Può pensare subito che il problema sia il DNS configurato sul client oppure un firewall e andare direttamente a verificarlo.

Ha senso.

Ma l’intuizione non giustifica un test con un trade-off di sicurezza quando esiste un test più pulito.

Resolve-DnsName

osserva la risoluzione.

Test-NetConnection

osserva la raggiungibilità della porta.

Get-SmbShareAccess

osserva le permission.

Provare \\IP\share, assegnare temporaneamente Everyone: Full Control o aggiungere un SPN basato sull’IP fanno qualcosa di diverso: producono informazioni modificando contemporaneamente le condizioni del sistema.

Sono test con un costo.

Se l’intuizione del senior è corretta, benissimo: avrà risparmiato qualche passaggio.

Se non lo è, si torna in basso e si ricostruisce il percorso.

Per un junior la sequenza costruisce il metodo.

Per un senior il metodo permette di sapere dove accelerare.

In entrambi i casi, il criterio resta lo stesso:

un buon test deve produrre informazioni senza degradare la sicurezza del sistema che stiamo cercando di riparare.