Quali sono i vantaggi di sicurezza dell'installazione del database di un'applicazione Web su un server diverso da quello che contiene il server Web?
Bene, il primo ovvio vantaggio è che se qualcuno rompe la scatola che ospita il server delle applicazioni, non è garantito l'accesso allo stesso server che ospita il database. Inoltre, separando questa funzionalità è più facile per l'IT (sviluppatori software, amministratori, ecc.) Ridurre al minimo l'impatto delle modifiche al codice / gli aggiornamenti delle policy su diversi aspetti dell'ambiente. Ciò non risolve in alcun modo la scarsa codifica o la debole sicurezza (SQL injection, nome utente / password predefiniti). ma facilita una migliore postura di sicurezza in generale.
Un server web con internet non ha assolutamente ragione di avere alcun accesso alla LAN / dominio e quindi dovrebbe essere completamente proibito farlo. Idealmente, dovrebbe essere su una DMZ.
Un host di servizi Web interno deve probabilmente avere accesso limitato alla LAN / dominio (principalmente al / i tuo / i database / i
È probabile che un server di database si trovi sulla tua LAN, rendendolo un bersaglio molto più prezioso per un utente malintenzionato; probabilmente deve essere eseguito il backup, deve essere accessibile da una varietà di programmi oltre al web, e così via e così via.
In sostanza:
Internet - > Sito Web + servizi + DB significa con un compromesso del sistema operativo, l'utente malintenzionato può controllare tutto, incluso l'esfiltrazione o la distruzione diretta di tutti i dati nel database (o nei backup) - non c'è bisogno di andare tramite l'interfaccia Web per farlo.
Internet - > Sito Web + servizi - > DB significa che l'utente malintenzionato deve compromettere il database attraverso il buco della serratura dei servizi Web o deve compromettere più di un computer che presenta solo alcuni problemi di sicurezza condivisa.
Internet - > sito Web - > Servizi Web - > DB è ancora meglio: l'hacker deve compromettere il tuo database attraverso il buco della serratura dei tuoi servizi Web visto attraverso il buco della serratura del tuo sito web, o deve compromettere più di una (o due!) Macchina (e) che hanno alcune ma non tutti i buchi di sicurezza condivisa.
Va da sé che ad ogni livello dovresti essere sicuro quanto ti è permesso di essere - patch aggiornate e antivirus, SQL parametrizzato per prevenire l'iniezione SQL, voci di whitelist, password crittografiche a lungo termine, dati crittografati, crittografati connessioni, password strongmente hash (PBKDF2, bcrypt, scrypt), buone scelte algoritmiche per crittografia e hashing, solo le porte minime aperte tra ogni livello, controllo log per tracce di attacchi, software / applicativi IDS / IPS e così via e così via .
Ci vuole un po 'di pianificazione o un po' di programmazione (o entrambi).
Beh, separando il server web dal server del database, se un utente può sfruttare l'applicazione Web ed elevare i propri privilegi, può confondere i dati, ma solo quanto il modello di sicurezza sul server di database li lascerà . Ad esempio, mentre possono leggere e scrivere i dati dei clienti - se possono decodificare come funziona l'app Web - non possono effettuare il bulk del download dell'intero database, né eliminarlo completamente, né corromperlo / comprometterlo / altrimenti degradarlo riscrivendolo schema. Inoltre, i firewall e i sistemi IDS specifici per le nuove generazioni progettati per proteggere il server di database possono rilevare e bloccare accessi insoliti basati su firme ed euristiche di attacco note, proteggendo i dati dall'accesso client compromesso.
Questo è a portata di mano se il server del database alimenta un certo numero di server web.