Ambiente sicuro per server con dati privati sensibili

4

Sto sviluppando un'applicazione web che esporrà un'API pubblica al mondo, ma archivierà dati personali e personali molto sensibili. Avere il contenuto compromesso sarebbe fatale.

Userò le seguenti tecnologie:

  • REST (su HTTPS)
  • Server Apache sul back-end
  • Database PostgreSQL

Mi è venuta un'idea (l'ho pensata anch'io, quindi potrebbe avere vulnerabilità che gli esperti di sicurezza qui possono individuare).

I componenti del mio ambiente sicuro sono i seguenti:

  1. Macchina A: server frontale (pubblico) su una macchina dedicata (io). Questa macchina ha regole firewall per consentire solo connessioni TCP tramite la porta 443 (HTTPS) (Ii). La configurazione di Apache accetta solo determinati schemi di espressioni regolari dell'API pubblicata (Iii). Apache inoltra la richiesta al server B, utilizzando una mappatura API interna e utilizzando una porta segreta non standard

  2. Macchina B: (io). Questa macchina è stata configurata per accettare solo i dati dalla macchina A (Ii). È qui che esistono la logica e i dati dell'applicazione (Iii). Risultati rimandati alla Macchina A, per rispedire al richiedente.

Qualcuno può migliorare questa configurazione (ad esempio "indurire" o renderla più sicura)?

    
posta Homunculus Reticulli 10.12.2015 - 13:39
fonte

4 risposte

5

Cerca un consiglio professionale ... sul serio, se i dati sono così sensibili come dici tu e le conseguenze sono veramente fatali, sarebbe negligente fare affidamento sui consigli da qui su cui basare una soluzione.

Nessuno può offrire una risposta contestuale affidabile perché non ci sono abbastanza informazioni sui requisiti aziendali per i quali la soluzione è adatta. Alcune cose che dovrebbero essere considerate al fine di determinare una soluzione appropriata: il pubblico previsto, quali sono i dati, quali saranno utilizzati, ecc. Questi possono aprire architetture alternative che potrebbero fornire una mitigazione del rischio più efficace.

Ci saranno aspetti a cui non si fa riferimento nella tua domanda ... controllo degli accessi (possibilmente multi-fattore), pseudo o requisiti di identità del mondo reale (registrazione degli impatti), crittografia dei dati.

Se sei in Europa, la legislazione sulla protezione dei dati si applicherà ... quindi c'è tutta una serie di pre-richieste prima ancora di raccogliere i dati: condizioni per l'elaborazione, dove i dati possono essere elaborati, che cosa può essere usato per ecc. .

So che questa non è una risposta diretta alla tua domanda, ma stavo esaurendo lo spazio in un commento ... potresti aver considerato tutto questo, ma volevo solo assicurarmi!

    
risposta data 10.12.2015 - 16:17
fonte
1

Quindi sostanzialmente A funge da firewall per B , facendo alcuni controlli di validità aggiuntivi.

Come sono collegati A e B ? Ci sono (o potrebbero esserci) altre macchine su quella rete? Se ci sono, questa divisione potrebbe non comprarti molta sicurezza. Assicurati che la connessione sia crittografata e sicura B come se fosse connessa direttamente a Internet.

L'uso delle espressioni regolari per convalidare le chiamate API mi sembra un po 'strano, ma potresti essere più propenso a superare un servizio configurato in modo errato su B in questo modo.

Come nota generale: questa configurazione introduce ulteriore complessità. I sistemi complessi sono più difficili da proteggere rispetto a quelli semplici. I dati su B sono ancora sicuri se A è stato compromesso? Se no, allora hai solo aumentato la superficie di attacco. Controlla se puoi ottenere lo stesso livello di sicurezza usando solo una singola macchina.

    
risposta data 10.12.2015 - 14:03
fonte
1

Stiamo parlando di informazioni sensibili qui, informazioni finanziarie ancora. È molto importante per voi garantire che l'accesso al database sia rigorosamente consentito a coloro che sono solo autorizzati. Posso suggerire almeno di dover fisicamente separare i tuoi computer / server, ad esempio server web, applicazioni e database e avere un firewall in mezzo. I dati trasferiti tra i server devono essere crittografati, lo stesso vale per i dati memorizzati nel server di database. Oltre a ciò, dovrebbero essere presenti tutti i valori mobiliari di base, ad es. IPS, IDS, SSL ecc.

    
risposta data 11.12.2015 - 08:33
fonte
-1

Sembra un tipo dmz di setup. Fondamentalmente se le informazioni sono fatali se perse, suggerirei di esaminare la sicurezza fisica e le configurazioni 2FA / biometric / yubikey style. Le migliaia di dollari che valgono il valore di hard skiff potrebbero valerne la pena, anche se potresti specificarne una utilizzando una cassastrong standard.

    
risposta data 11.12.2015 - 08:46
fonte

Leggi altre domande sui tag