Conserva in modo sicuro le credenziali per i servizi di applicazioni Web in Apache

5

Stiamo eseguendo un'applicazione web in python usando wsgi con apache2 e dobbiamo sottoporti a un test di penetrazione. I tester esploreranno il potenziale di danno se gli aggressori ottengono l'accesso alla shell come utente apache.

Attualmente il potenziale di danno è enorme, in quanto abbiamo le credenziali per il database, il servizio s3, ecc. tutte memorizzate in un file di testo leggibile dall'utente apache. Questo sembra essere il consiglio predefinito quando si impostano questi tipi di applicazioni, ma esiste un modo più sicuro per farlo?

Stavo pensando di usare apache (come root) per passare le variabili d'ambiente con setenv all'app wsgi, ma questo è effettivamente più sicuro? Qualche consiglio per questo?

    
posta Will 13.06.2012 - 20:46
fonte

1 risposta

3

Dipende molto da cosa è il tuo modello di minaccia.

Se togliamo tutto il resto e pensiamo solo all'applicazione, non c'è praticamente nulla che tu possa fare per migliorare davvero la sicurezza dell'app. Stai lontano da soluzioni esoteriche e concentrati su ciò che è più manutenibile e pulito. Voglio sottolineare la pulizia, poiché di solito il disastro della sicurezza deriva da situazioni disordinate.

In ogni caso: se l'utente malintenzionato ottiene l'esecuzione di codice in modalità remota sotto l'utente dell'applicazione, non è possibile limitare l'accesso alla configurazione in alcun modo: l'app deve accedervi, così anche l'autore dell'attacco. Se ottiene le capacità di lettura dei file, quindi l'archiviazione in un database ti proteggerà dalla divulgazione - anche se devi archiviare le credenziali del db in un file, l'hacker non sperabilmente sarà in grado di sfruttarle. Se ottiene l'iniezione SQL, l'accesso al db (nel caso improbabile che ciò non si traduca in exec del codice remoto), quindi averli in un file è più sicuro. In realtà, dipende da come è progettata la tua applicazione.

L'esecuzione di Apache come root è davvero una cattiva idea (beh, disabilitando il drop dei privilegi intendo). Invece di implementare soluzioni una tantum si concentrano su cose che rimarranno sul posto senza più hack e ottenere i benefici del pentest. passare cose attraverso lo stdin, ad esempio, renderà molto difficile per i tester recuperare le credenziali, ma a lungo termine probabilmente finirai con uno script bash che fa il lavoro ... che è di gran lunga peggiore delle altre soluzioni .

    
risposta data 14.06.2012 - 00:10
fonte

Leggi altre domande sui tag