it-swarm.dev

Quando è appropriato per connessioni SSL Encrypt Database?

Diciamo che ho un server web che ho installato e quindi un server database.

Tuttavia, comunicano localmente e sono protetti da firewall. Secondo me, non è necessario SSL qui, giusto?

L'unica volta in cui utilizzare SSL per crittografare la connessione al database sarebbe tra un server Web esistente in un server che comunica in remoto con un server di database che si trova altrove, giusto?

Ho visto le linee guida per la sicurezza prima di quel difensore che assicurava con SSL la connessione al database ma era vago quando usarlo.

20
Dexter

Sembra che le due precedenti risposte a questa domanda raccomandino più o meno fortemente di attivare SSL, ma vorrei suggerire un diverso angolo di ragionamento (anche se non sto raccomandando di non attivare SSL).

I due punti chiave per valutare se hai bisogno di SSL o meno sono (a) da che SSL ti protegge e (b) qual è il modello di thread: enumera le potenziali minacce.

SSL/TLS protegge il trasporto di informazioni tra un client (in questo caso, il tuo server Web) e un server (in questo caso, il tuo server di database) da manomissioni e intercettazioni da parte di chiunque sulla rete (incluso in grado di accedervi due macchine).

Per valutare se SSL è utile, devi supporre che l'attaccante sia in grado di eseguire l'attacco SSL è progettato per proteggerti. Cioè, l'attaccante dovrebbe essere in grado di annusare i pacchetti sulla rete o su entrambe le macchine.

  • Se qualcuno è in grado di sniffare i pacchetti dal server di database, è probabile che abbia accesso root/admin a quel server. L'uso di SSL/TLS in quella fase non farà alcuna differenza.

  • Se qualcuno è in grado di annusare i pacchetti sulla rete tra il server Web e il server di database (esclusi quei computer), l'uso di SSL/TLS impedirà loro di vedere/alterare il contenuto dell'applicazione. Se pensi che ci sia una possibilità che ciò sia possibile, attiva SSL. Un modo per mitigare questo sarebbe quello di utilizzare due schede di rete sul server Web: una al mondo esterno e una alla LAN interna in cui si trova il server DB (senza altre macchine o in modo da poterle trattare tutte come una sola macchina più grande). Questa rete che costituisce la web farm o il cluster generale (comunque si desideri chiamarlo) sarebbe fisicamente separata e avrebbe un solo punto di ingresso dall'esterno: il server web stesso (stesso principio per un nodo head proxy inverso).

  • Se qualcuno è in grado di annusare i pacchetti sul nodo head (il web server) stesso, è probabile che abbiano accesso root lì (i processi eseguiti da utenti non root sulla macchina, non dovrebbero essere in grado di leggere pacchetti che non sono per loro). In questo caso, avresti comunque un grosso problema.

    Quello che dubito qui è se abilitare SSL ti protegge davvero molto in questo scenario.

    Qualcuno con accesso root sul server Web sarà in grado di leggere la configurazione dell'applicazione, comprese le password DB, e dovrebbe essere in grado di connettersi al server DB legittimamente, anche utilizzando SSL.

    In contropartita, se si presupponesse che ciò meriti l'uso di SSL (perché potrebbe essere più difficile esaminare cosa fanno effettivamente i processi piuttosto che guardare semplicemente la rete, anche se si ha il controllo di root sulla macchina), ciò significherebbe vorresti anche rivolgerti per le comunicazioni localhost (ad esempio se hai altri servizi sul tuo server web o nella situazione in cui sia il server DB che il server web erano sullo stesso computer).

Non è necessariamente una brutta cosa essere troppo cauti, ma devi porre la tua domanda nel contesto di ciò che gli attaccanti potrebbero anche fare se fossero in grado di eseguire un attacco contro ciò che la misura di sicurezza (SSL) ti protegge, e se questa misura di sicurezza impedirebbe loro di raggiungere comunque il loro obiettivo, una volta in questa posizione.

Penso che la finestra in realtà sia piuttosto stretta lì (supponendo che la tua rete di back-end sia davvero protetta, fisicamente, non solo da un firewall tra un numero di macchine).

21
Bruno

Quando la rete locale che include il server database e i client potrebbe includere altri processi, è necessario crittografare la connessione tra i due.

Questo è quasi sempre il caso poiché, anche se si presume che la rete locale sia impenetrabile (non si dovrebbe), oltre al client e al server di database di solito ci sono

  1. amministratori che devono essere in grado di accedere e risolvere problemi o eseguire aggiornamenti
  2. collezionisti di log che devono acquisire file senza dati sensibili e spostarli altrove
  3. replicatori che devono copiare il contenuto del database per il backup off-site o per alimentare grandi tabelle a bassa sensibilità ai sistemi di data mining
  4. monitor che devono verificare per vedere se gli altri sono ancora vivi

Di questi, solo i replicatori devono avere accesso a tabelle con dati sensibili, ma uno qualsiasi di questi processi può essere compromesso da cattivi attori all'interno del reparto IT.

La crittografia di tutti i canali che trasportano dati sensibili mantiene oneste le persone oneste, ti offre una difesa approfondita e ti aiuta a restringere la ricerca quando sorgono problemi.

10
Mike Samuel

Tieni presente che chiunque si trovi sulla stessa rete del tuo server potrebbe essere in grado di annusare il traffico o eseguire un attacco man-in-the-middle. SSL dovrebbe impedirlo, supponendo che sia impostato correttamente. È inoltre necessario impostare un firewall sul server di database e consentire solo connessioni da indirizzi IP affidabili.

Il mio suggerimento è di attivarlo, quindi disattivarlo solo se pensi che stia causando problemi di prestazioni (o altri). In questo modo hai ridotto significativamente i tuoi vettori di attacco.

In realtà, il sovraccarico della crittografia SSL sulla rete sarà minimo, soprattutto se confrontato con il carico di elaborazione delle query SQL. Otterresti maggiori prestazioni ottimizzando le tue query e la configurazione delle prestazioni del server che disabilitando SSL.

4
Polynomial

Diciamo che ho un server web che ho installato, e quindi un server database ... che comunica localmente e sono protetti da firewall

Lasciando da parte il fatto che questa architettura fa schifo in termini di disponibilità ...

  • ti fidi di tutti e di tutto "dietro il firewall"?
  • credi che il tuo firewall sia perfetto?
  • puoi prevedere che non dovrai mai connetterti in remoto per supportare una maggiore disponibilità, migrare il tuo datacenter o eseguire un backup?
  • il meccanismo di autenticazione predefinito per i dbms è così sicuro da non poter essere sovvertito?
  • esiste un processo di distribuzione che garantisce che le credenziali del database non possano essere compromesse?

Se la tua risposta a una di queste non è una risposta affermativa, potresti trarre vantaggio dalle ulteriori garanzie sull'uso di una connessione SSL opportunamente configurata. Il costo delle prestazioni è trascurabile anche senza fare affidamento su connessioni persistenti (anche se anche questo può essere quasi eliminato instradando il traffico attraverso un tunnel persistente). Si tratta semplicemente di capire se il costo di configurazione di SSL (un paio d'ore di lavoro) è più che una responsabilità.

0
symcbean