Accedi Prova gratis
← Back to blog

Proteggere un database esposto a Internet: 7 errori di configurazione

Un database esposto a Internet può trasformare un errore di configurazione in furto di dati, interruzione del servizio o ransomware. Ecco sette errori da rilevare e correggere.

📝 Questo articolo è stato prodotto con l'assistenza di strumenti automatici e revisionato dal team Safenix prima della pubblicazione.

Un database aziendale raramente viene esposto perché qualcuno sceglie deliberatamente una progettazione non sicura. Più spesso, l'esposizione deriva da un'impostazione predefinita, una regola temporanea del firewall, un servizio di test trascurato o una scorciatoia di manutenzione diventata permanente.

Le conseguenze possono essere gravi. Un attaccante può sottrarre dati dei clienti, modificare informazioni finanziarie, cifrare i sistemi di produzione o utilizzare il server del database come percorso per accedere ad altre infrastrutture. Anche quando non vengono sottratti dati nell'immediato, un servizio esposto crea un punto di ingresso evitabile che deve essere monitorato e difeso.

I sette errori descritti di seguito riguardano i server di database gestiti da un'azienda, un'agenzia o un amministratore IT. Sono pertinenti a PostgreSQL, MySQL, Microsoft SQL Server, MongoDB e altre piattaforme. I comandi esatti cambiano, ma le decisioni di sicurezza sono le stesse: ridurre al minimo la raggiungibilità, verificare l'identità, limitare i permessi, cifrare il traffico, monitorare le attività e mantenere il ripristino indipendente dal server protetto.

1. Associare il database a un'interfaccia pubblica

Per impostazione predefinita, un demone del database può rimanere in ascolto su ogni interfaccia di rete, oppure un amministratore può configurarlo per ascoltare su un indirizzo IP pubblico, così da semplificare l'accesso remoto. Se il server dispone di un indirizzo instradabile, il database può quindi essere raggiunto direttamente da Internet, a meno che un altro controllo non lo impedisca.

Vettore d'attacco e impatto sul business

Un attaccante analizza gli intervalli di indirizzi alla ricerca delle porte tipiche dei database, identifica software e versione e tenta quindi attacchi alle credenziali o sfrutta una vulnerabilità nota. La visibilità pubblica non significa automaticamente compromissione, ma offre agli attaccanti un obiettivo continuo e facile da individuare.

Un accesso riuscito può esporre dati personali, ordini, credenziali, proprietà intellettuale e informazioni operative. Un account del database può inoltre consentire all'attaccante di modificare i record, creare nuovi utenti privilegiati o utilizzare le funzionalità del database per raggiungere il server sottostante.

Come rilevarlo e correggerlo

Controlla la configurazione del listener del database e l'elenco dei socket del sistema operativo. Comandi come ss -lntp o netstat -lntp possono mostrare se il servizio è in ascolto su 0.0.0.0, :: o su un indirizzo pubblico invece che solo su localhost o su un'interfaccia privata. Esegui i test dall'esterno della rete, non solo dal server stesso. Una scansione esterna delle porte e una verifica dei gruppi di sicurezza cloud o delle regole firewall del provider di hosting dovrebbero corrispondere alla progettazione prevista.

Per la maggior parte delle applicazioni, associa il database a localhost o a un indirizzo di rete privato e posizionalo dietro il livello applicativo. Se è necessaria l'amministrazione remota, richiedi una VPN privata, un bastion host o un altro percorso di accesso controllato. Non considerare una porta non convenzionale una protezione. Può ridurre il rumore casuale, ma non impedisce l'individuazione.

Gli amministratori possono consultare indicazioni affidabili per verificare un database esposto a Internet e modelli di esposizione sicuri durante la validazione della progettazione. L'obiettivo dovrebbe essere eliminare la raggiungibilità pubblica ovunque non sia essenziale, non semplicemente nascondere il servizio.

2. Lasciare attive credenziali predefinite o un'autenticazione debole

I prodotti per database, gli appliance e le immagini di distribuzione talvolta includono nomi utente predefiniti, password temporanee o modalità di autenticazione previste solo per la configurazione iniziale. Un'installazione frettolosa può inoltre conservare una password semplice, riutilizzare un segreto dell'applicazione o consentire connessioni locali senza password in modo più ampio del previsto.

Vettore d'attacco e impatto sul business

Dopo aver individuato una porta del database, gli attaccanti provano abitualmente le credenziali predefinite pubblicate e le password comuni. Anche il credential stuffing è efficace quando gli amministratori riutilizzano password di altri sistemi. Una volta autenticato, l'attaccante può ottenere un accesso molto più ampio di quello richiesto dall'applicazione originaria.

Il risultato può essere l'estrazione silenziosa di dati, query distruttive, modifiche fraudolente o un punto d'appoggio per un successivo attacco ransomware. Se le stesse credenziali vengono utilizzate da script, sviluppatori e amministratori, un singolo segreto sottratto può compromettere ogni ambiente.

Come rilevarlo e correggerlo

Esamina ogni account del database, il relativo metodo di autenticazione, le informazioni sull'ultimo utilizzo e il ruolo assegnato. Verifica l'installazione tramite un inventario degli account invece di presumere che le credenziali predefinite documentate siano state rimosse. Controlla file di configurazione, manifest di distribuzione, variabili CI/CD e script alla ricerca di password incorporate.

Disabilita gli account del fornitore non utilizzati, rinomina o blocca gli account di emergenza quando opportuno e richiedi credenziali lunghe e univoche per gli account che devono rimanere attivi. Preferisci un'autenticazione gestita centralmente, l'autenticazione a più fattori per gli amministratori umani e credenziali a breve durata per l'automazione, quando la piattaforma lo consente. Conserva i segreti in un gestore dedicato, non nel codice sorgente, nei ticket, nei fogli di calcolo o nella cronologia della shell. Ruota le credenziali dopo cambiamenti del personale, sospette esposizioni e modifiche importanti al sistema.

I log di autenticazione devono registrare accessi riusciti e falliti, indirizzi di origine e account utilizzato. Genera avvisi per tentativi falliti ripetuti, accessi in orari insoliti, accessi da reti inattese e creazione di nuovi account privilegiati.

3. Consentire un accesso di rete senza restrizioni

Associare un database a un'interfaccia privata non è sufficiente se la rete consente a ogni host interno, utente VPN o carico di lavoro cloud di connettersi. Una regola ampia come «consenti l'intera rete dell'ufficio» o «consenti tutto il traffico dal cloud privato virtuale» spesso rimane attiva molto tempo dopo la scomparsa dell'esigenza originaria di risoluzione dei problemi.

Vettore d'attacco e impatto sul business

In questo scenario, l'attaccante compromette prima un laptop, un server web, un account sviluppatore o un carico di lavoro non correlato. L'accesso di rete al database è già disponibile, quindi l'attaccante può individuare il servizio e attaccarlo senza oltrepassare il perimetro Internet.

Un'eccessiva esposizione interna aumenta il raggio d'azione di phishing, malware e incidenti alla catena di fornitura. Può inoltre consentire movimenti laterali non autorizzati tra sistemi di produzione, staging e sviluppo. Un server di test compromesso non dovrebbe poter interrogare i dati dei clienti solo perché entrambi i sistemi condividono una regola di rete ampia.

Come rilevarlo e correggerlo

Esamina insieme firewall degli host, firewall di rete, gruppi di sicurezza cloud, policy di rete Kubernetes e regole di accesso agli host a livello di database. Documenta quali server applicativi, strumenti di reportistica, servizi di backup e host di salto amministrativi necessitano effettivamente di connessioni. Confronta l'elenco con le connessioni attive e le regole del firewall.

Sostituisci gli intervalli di origine ampi con allowlist IP o gruppi di sicurezza espliciti. Consenti solo la porta di destinazione e il protocollo necessari. Nega il traffico per impostazione predefinita, separa le reti di produzione da quelle non di produzione e rimuovi le regole temporanee indicando un responsabile e una data di scadenza. Se il personale si connette da remoto, instrada la manutenzione tramite una VPN o un bastion host invece di consentire a ogni indirizzo IP domestico o mobile di collegarsi direttamente.

Rivedi le regole dopo le migrazioni e le modifiche alla rete dell'ufficio. Una revisione trimestrale degli accessi è utile, ma le modifiche ad alto rischio devono essere controllate immediatamente. Una regola del firewall senza un responsabile aziendale identificato è candidata alla rimozione.

4. Trasmettere dati del database senza TLS

Un database può essere protetto quando i dati sono inattivi e al tempo stesso esporre credenziali e record sensibili durante il trasferimento tra un'applicazione, la postazione di lavoro di un amministratore, uno strumento di reportistica o un partner di replica. Le connessioni non cifrate sono particolarmente pericolose sulle reti condivise, nei segmenti cloud, sulle reti Wi-Fi e nei percorsi di manutenzione remota.

Vettore d'attacco e impatto sul business

Un attaccante con accesso alla rete cattura il traffico o si posiziona tra client e server. Senza TLS, nomi utente, password, query e dati restituiti possono essere leggibili. Un TLS debole o non verificato può inoltre consentire l'intercettazione, perché il client non conferma di comunicare con il database legittimo.

Le conseguenze includono credenziali sottratte, divulgazione dei dati dei clienti, manipolazione delle query e problemi di conformità. I canali di replica e trasferimento dei backup meritano la stessa attenzione del normale traffico applicativo.

Come rilevarlo e correggerlo

Esamina le stringhe di connessione e le impostazioni del server del database per confermare che TLS sia obbligatorio, non semplicemente disponibile. Utilizza l'output di stato del client del database, i log di audit delle connessioni e una cattura dei pacchetti in un test controllato per verificare la cifratura. Controlla validità dei certificati, verifica del nome host, autorità attendibili, versioni del protocollo e rifiuto del ripiego a connessioni in chiaro.

Installa i certificati tramite un processo di rinnovo controllato, limita l'accesso alle chiavi private e monitora le date di scadenza. Configura le applicazioni affinché rifiutino la connessione quando la validazione del certificato fallisce. Aggiorna driver e librerie obsolete che non supportano le impostazioni TLS attuali. Documenta quali connessioni sono cifrate, comprese quelle di amministrazione, monitoraggio, replica ed ETL.

TLS protegge i dati in transito; non decide chi debba poterli interrogare. Combinalo con restrizioni di rete, autenticazione forte e principio del privilegio minimo.

5. Concedere privilegi eccessivi sul database

Le applicazioni sono spesso configurate con un account amministratore o proprietario perché ciò semplifica l'installazione. Gli sviluppatori possono inoltre assegnare agli utenti della reportistica l'accesso in scrittura o concedere a un account di servizio i permessi su ogni schema «per esigenze future». Questo viola il principio del privilegio minimo e trasforma una compromissione limitata in un incidente che coinvolge l'intero database.

Vettore d'attacco e impatto sul business

Una vulnerabilità di SQL injection, un segreto applicativo sottratto o uno strumento di reportistica compromesso concede all'attaccante i privilegi di quell'account. Se l'account possiede le tabelle, può creare utenti o eseguire funzioni del sistema operativo, l'attaccante potrebbe scaricare l'intero database, modificare i record o evadere verso l'host.

I diritti eccessivi aumentano anche la probabilità di danni accidentali. Una migrazione o uno script difettoso può eliminare dati di produzione quando viene eseguito con un'identità altamente privilegiata.

Come rilevarlo e correggerlo

Inventaria utenti, gruppi, ruoli e concessioni. Cerca account applicativi con diritti amministrativi, accesso diretto a schemi non correlati, accesso in lettura senza restrizioni a tabelle sensibili e permessi mai utilizzati. Esamina i log di audit del database per confrontare i privilegi assegnati con l'attività effettiva.

Crea identità separate per ogni applicazione, ambiente e funzione. Concedi solo le tabelle, le viste, le procedure e le operazioni necessarie. Usa ruoli di sola lettura per la reportistica, separa le credenziali di migrazione da quelle normalmente utilizzate a runtime e limita l'accesso ai dati personali, finanziari o di autenticazione. Revoca i permessi ereditati non necessari e rimuovi gli account inattivi.

L'accesso alla produzione non dovrebbe essere predefinito per sviluppatori o agenzie che supportano più clienti. Utilizza account amministrativi nominativi, approvazione per gli accessi elevati, permessi a tempo limitato e un percorso di manutenzione registrato. Le credenziali amministrative condivise impediscono un'attribuzione efficace e rendono difficile la revoca rapida.

6. Esporre porte e strumenti amministrativi

Le interfacce di amministrazione dei database, i servizi desktop remoto, SSH, le console web e le API di gestione sono obiettivi frequenti. Esporli a Internet per comodità crea una seconda superficie d'attacco, anche quando il listener del database è limitato.

Vettore d'attacco e impatto sul business

Gli attaccanti analizzano le porte di gestione comuni, identificano i servizi e tentano attacchi alle password, utilizzano credenziali sottratte o sfruttano vulnerabilità note. Un servizio di amministrazione compromesso può fornire il controllo diretto del sistema operativo, l'accesso alla configurazione o la possibilità di disabilitare i log ed eliminare i dati.

Per una piccola azienda, una sola porta di gestione remota esposta può trasformare un incidente del database nel controllo completo del server. Per un'agenzia, un metodo di gestione condiviso può mettere a rischio diversi ambienti dei clienti se i confini di accesso sono deboli.

Come rilevarlo e correggerlo

Esegui una scansione esterna degli indirizzi della tua organizzazione e una scansione interna da segmenti di rete non attendibili. Esamina le porte in ascolto utilizzando gli strumenti dell'host e confrontale con la policy del firewall. Controlla nelle console cloud l'assegnazione di IP pubblici, i listener dei bilanciatori di carico e i gruppi di sicurezza permissivi. Monitora i log per accessi amministrativi, autenticazioni fallite, nuove sessioni e modifiche alla configurazione.

Chiudi i servizi inutilizzati. Mantieni SSH, desktop remoto e console dei database fuori dalle interfacce pubbliche. Richiedi una VPN, un bastion host o un gateway di accesso zero trust con autenticazione a più fattori, controlli sui dispositivi e account individuali. Limita, quando possibile, l'accesso amministrativo in base all'IP di origine, disabilita l'accesso diretto come root o con account amministrativi condivisi e registra i comandi o l'attività di sessione per le operazioni sensibili.

Separa l'accesso alla produzione da quello di manutenzione. L'applicazione dovrebbe utilizzare un percorso ristretto con privilegi minimi, mentre gli amministratori dovrebbero usare un percorso diverso e controllato, abilitato solo quando necessario. Non concedere a un'agenzia esterna un accesso permanente e senza restrizioni quando è sufficiente una finestra di manutenzione approvata e registrata.

7. Ritardare patch e correzione delle vulnerabilità

Motori di database, sistemi operativi, driver, estensioni e strumenti di gestione contengono tutti vulnerabilità. Un sistema può rimanere esposto anche quando il codice dell'applicazione è ben mantenuto, se la versione del database sottostante non è più supportata o un aggiornamento di sicurezza critico viene rimandato indefinitamente.

Vettore d'attacco e impatto sul business

Gli attaccanti identificano la versione del database tramite servizi esposti, messaggi di errore, dati di inventario sottratti o sistemi interni compromessi. Usano quindi un exploit pubblico, un'estensione vulnerabile o una debolezza nel livello di amministrazione. Alcuni attacchi richiedono l'autenticazione, altri no.

Un exploit riuscito può divulgare o alterare dati, creare un account privilegiato, eseguire codice o compromettere la disponibilità. Applicare le patch in ritardo aumenta inoltre la complessità del ripristino, perché le modifiche di emergenza vengono eseguite sotto pressione e senza test adeguati.

Come rilevarlo e correggerlo

Assegna un responsabile chiaro per sistema operativo, motore del database, estensioni, driver e strumenti di sicurezza. Mantieni un inventario con versioni, stato del supporto, esposizione, responsabile aziendale e finestra di manutenzione. Iscriviti agli avvisi di sicurezza dei fornitori e usa la scansione delle vulnerabilità, ma verifica i risultati dello scanner rispetto alle versioni e alla configurazione realmente installate.

Stabilisci scadenze basate sul rischio per le vulnerabilità critiche, testa gli aggiornamenti su un sistema di staging rappresentativo e mantieni un piano di rollback. Applica tempestivamente gli aggiornamenti di sicurezza, rimuovi i componenti non supportati e documenta le eccezioni accettate con una data di scadenza. Genera un avviso quando la conformità alle patch scende sotto la policy dell'organizzazione. L'applicazione delle patch non è completa finché i servizi non si riavviano correttamente e il monitoraggio non conferma il normale funzionamento.

Rilevare un database esposto prima dell'attaccante

Inizia dalla domanda: un dispositivo non attendibile può raggiungere il database o la sua interfaccia di amministrazione? Esegui i test da Internet e dalle reti interne che non dovrebbero avere accesso. Controlla record DNS, indirizzi IPv4 e IPv6, firewall cloud, firewall degli host e bilanciatori di carico. Un servizio sicuro su IPv4 potrebbe essere ancora esposto su IPv6.

Verifica poi cosa accade dopo aver stabilito una connessione. Il server richiede TLS? L'autenticazione rifiuta credenziali predefinite e password deboli? Un account applicativo può leggere o modificare tabelle al di fuori del proprio ruolo? Accessi falliti, modifiche ai privilegi, modifiche allo schema ed esportazioni insolite vengono registrati centralmente?

Il logging è utile solo quando qualcuno o qualcosa lo esamina. Invia i log del database, del sistema operativo e del firewall a un sistema centrale protetto, dove un attaccante non possa modificarli silenziosamente. Crea avvisi per ripetuti fallimenti di autenticazione, nuovi utenti privilegiati, accessi da nuovi Paesi o reti, grandi esportazioni, audit disabilitati, volumi di query insoliti e riavvii inattesi dei servizi. Regola gli avvisi affinché il personale possa rispondere invece di ignorare un rumore costante.

Prepararsi alla compromissione con backup indipendenti

Una configurazione sicura riduce la probabilità di compromissione, ma non può garantire che un account, un'applicazione o la postazione di lavoro di un amministratore non vengano mai violati. La pianificazione del ripristino dovrebbe presupporre che un attaccante possa ottenere il controllo del server di produzione e tentare di cifrare, danneggiare o eliminare i dati e i relativi backup locali.

Conserva backup testati, cifrati e fuori sede che il server compromesso non possa eliminare. Safenix offre backup fuori sede per i server aziendali, con dati archiviati in Germania, immutabili per la durata della finestra di conservazione e cifrati con una chiave controllata dal cliente che Safenix non detiene. Scopri di più sui backup cifrati fuori sede con chiavi controllate dal cliente e accesso ridotto da un server compromesso.

La progettazione del backup dovrebbe corrispondere ai sistemi controllati dal cliente, compresi il server del database e l'infrastruttura di supporto. Non è un piano di backup per un sito web in hosting condiviso e non si dovrebbe dare per scontato alcun piano di hosting condiviso. Prima di affidarti a un backup, verifica che il database venga acquisito in modo coerente, che la conservazione soddisfi i requisiti aziendali, che le chiavi di cifratura siano accessibili quando necessario e che i ripristini siano stati eseguiti correttamente.

L'immutabilità aiuta a prevenire eliminazioni o alterazioni durante il periodo di conservazione, mentre l'archiviazione fuori sede protegge da guasti o incidenti nella sede di produzione. La cifratura controllata dal cliente significa che il provider del backup non possiede la chiave necessaria per leggere i dati protetti. Questi controlli riducono l'impatto del ripristino, ma non correggono un database non sicuro. Ripristinare un server compromesso senza risolvere esposizione, credenziali o patch significa semplicemente ricreare l'incidente.

Accesso alla produzione e accesso alla manutenzione per i piccoli team

Le piccole aziende e le agenzie dispongono spesso di personale limitato, il che rende la separazione particolarmente importante. Mantieni il normale percorso applicativo ristretto e prevedibile. La manutenzione dovrebbe utilizzare account nominativi, un percorso di rete separato e un'elevazione a tempo limitato. Un fornitore di supporto dovrebbe ricevere solo l'accesso necessario per l'attività concordata, non una password amministrativa permanente condivisa tra i clienti.

Mantieni un registro degli accessi che includa dipendenti, collaboratori, agenzie, account di servizio e credenziali di emergenza. Esaminalo dopo i cambiamenti del personale e i passaggi di consegne ai clienti. Utilizza un processo sicuro di gestione dei segreti, richiedi l'approvazione per le modifiche in produzione e registra chi ha effettuato ogni modifica. Può esistere un account di emergenza, ma il suo utilizzo dovrebbe generare un avviso e il relativo funzionamento dovrebbe essere verificato periodicamente.

Checklist per verificare la protezione del database

  • Raggiungibilità pubblica: un host esterno o interno non attendibile può connettersi al database o a una porta di amministrazione? Sono coperti sia IPv4 sia IPv6?
  • Controlli di rete: le regole del firewall e le allowlist IP consentono solo le origini applicative, di reportistica e di manutenzione identificate?
  • Autenticazione: gli account predefiniti, inattivi e condivisi sono stati rimossi o controllati? Per gli amministratori vengono utilizzate credenziali robuste e l'autenticazione a più fattori?
  • Segreti: password e chiavi sono assenti dal codice sorgente, dagli script, dai ticket e dai repository di configurazione? La rotazione viene verificata?
  • Privilegio minimo: ogni account applicativo e umano dispone solo dell'accesso necessario, con ruoli di sola lettura quando opportuno?
  • Cifratura: TLS è obbligatorio e verificato correttamente per connessioni applicative, amministrative, di replica e di trasferimento dati?
  • Monitoraggio: gli eventi di autenticazione, privilegi, esportazione dei dati, firewall e configurazione vengono registrati centralmente con avvisi utili?
  • Responsabilità delle patch: chi è responsabile di ogni database, sistema operativo, estensione e strumento di gestione? Le vulnerabilità vengono seguite fino alla chiusura?
  • Prontezza al ripristino: i backup sono cifrati, fuori sede, immutabili per la finestra di conservazione e non eliminabili dal server di produzione? È stato testato un ripristino completo?

Queste domande trasformano la sicurezza del database da attività di installazione una tantum in una disciplina operativa. Riesaminale dopo migrazioni, importanti modifiche alle applicazioni, ricambio del personale e incidenti di sicurezza. Un database difficile da raggiungere, con permessi rigorosi, aggiornato e ripristinabile ha molte meno probabilità di trasformarsi in un evento che mette fine all'attività aziendale.

Ready to deliver?

Start your 14-day free trial today.

Prova gratis