Protezione del database: esterna e interna

3

La mia azienda utilizza una configurazione di database strana e non riesco a capire cosa aggiunge in termini di sicurezza.

Il nostro programma di installazione

Mondo esterno [Firewall] DMZ - Server Web [Firewall] Database esterno [Firewall] Database interno

  • Il server Web può comunicare solo con il database esterno.
  • Non è possibile accedere al database esterno dall'esterno. Ad esempio, non posso accedervi da casa mia anche se conosco l'indirizzo e ho un nome utente / password validi.
  • Non è possibile accedere al database interno anche dall'esterno.

Quindi, l'unica differenza tra il database esterno e quello interno è che il server Web può accedere a quello esterno ma non a quello interno.

Il nostro flusso di dati

Quando un utente inserisce alcune informazioni sul nostro sito Web, tali informazioni vengono inviate al nostro server web. Il server web quindi inserisce tali informazioni nel Database esterno. Quindi un lavoro verrà eseguito periodicamente e prenderà i nuovi dati nel database esterno e li inserirà nel database interno. Quindi, il dipendente può modificare i dati nel database interno e queste modifiche verranno sincronizzate nel database esterno.

La mia domanda

Cosa aggiunge da un punto di vista della sicurezza per avere un database esterno e un database interno?

Avrebbe senso se un database fosse accessibile dall'esterno, ma poiché sono entrambi dietro il firewall, cosa cambia se inseriamo direttamente nel Database interno. Ad ogni modo, se inseriamo qualcosa nel Database Esterno, verrà sincronizzato anche con il Database interno.

Il mio problema

Abbiamo scavato noi stessi in un complicato pasticcio di sincronizzazione con i lavori in esecuzione ovunque, i dati duplicati ovunque e con questo arrivano gli errori tradizionali. Alcuni lavori non vengono aggiornati quando aggiorniamo lo schema, i dati non sono più gli stessi tra tutti i database e ci ritroviamo con una tonnellata di dati che non sappiamo più se è la copia più recente o meno e quale è valida e ecc. Vedo tutti questi problemi come un grande spreco di tempo e denaro.

Ora, il motivo principale per cui l'abbiamo reso così complicato è perché: "È più sicuro". È davvero così perché non vedo la differenza tra il server web che inserisce i dati direttamente in un database e utilizza più processi per sincronizzare i dati ovunque?

    
posta Gudradain 29.01.2016 - 23:34
fonte

2 risposte

3

Ci sono situazioni in cui viene utilizzato un database esterno per memorizzare informazioni temporanee che vengono "tirate" e non "spinte" attraverso una connessione firewall unidirezionale in un database interno più grande, quindi i dati vengono cancellati da quello esterno . Lo scopo è ridurre il numero di record che possono essere rubati in qualsiasi momento, consentendo tuttavia ai dati di continuare a fluire nel sistema rivolto verso l'esterno. Detto questo, la tua situazione potrebbe essere completamente diversa. Se i dati sono gli stessi su entrambi i lati, probabilmente non è per questo motivo, ma uno scopo per fare qualcosa di simile è perché può fornire un ulteriore livello di difesa in profondità per i database.

Pensa al caso in cui gli attacchi di SQL-injection passano attraverso un server front-end e atterra in modo efficace un utente malintenzionato, a volte con accesso completo alla shell, sul database collegato all'app Web. Nel caso di un singolo database, l'hacker ottiene tutto incluso tutti i record. Nel caso che ho menzionato sopra l'hacker ha solo accesso a un piccolo sottogruppo di record transazionali per il tempo in cui hanno accesso al sistema (si spera che questo venga scoperto e la timeline sia molto breve). In ogni caso, questa è una delle ragioni per cui potresti fare qualcosa del genere. Di nuovo il tuo caso potrebbe variare.

    
risposta data 30.01.2016 - 00:12
fonte
1

Bene, la domanda ovvia è: il database esterno può accedere alle risorse sulla rete in cui si trova il database interno?

Se il database esterno è isolato dalla LAN, significa che un utente malintenzionato che finisce non solo per accedere ai record del database esterno, ma anche al sistema operativo host del database esterno, non può più accedere alla rete.

Se il server Web era connesso direttamente al Database interno, se avessero accesso al SO nel Database interno, sarebbero in grado di attaccare liberamente il resto della LAN.

Per l'esempio di SQL Server, il tuo caso peggiore è

  • SQL injection nel server
  • Utilizzare xp_cmdshell per eseguire il codice al prompt dei comandi del server
  • Scopri che SQL Server è in esecuzione come amministratore di dominio
  • Aspetta le 6 del pomeriggio l'ultimo giorno lavorativo prima di un lungo fine settimana
  • Ruba TUTTO
  • Distruggi tutti i backup ancora online
  • Pulisci tutte le unità dell'intera rete
  • Elimina le configurazioni su tutti i dispositivi di rete che utilizzano password predefinite (SAN, switch, router, firewall, ecc.)
risposta data 31.01.2016 - 05:56
fonte

Leggi altre domande sui tag