Protezione dell'applicazione web opensource

3

Ho un sito Web open source. Devo aggiungere una sezione di amministrazione al sito web accessibile a una sola persona. Per renderlo sicuro, stavo pensando di fornire una pagina di accesso che controlla se la password corrisponde a una password predefinita e imposta una sessione che indica che l'accesso è andato a buon fine. Questa password verrà memorizzata come variabile di ambiente nel server.

Pensi che questo approccio sia sicuro? Questo sito Web non ha un database. Quindi non voglio aggiungere dipendenza a un database solo per mantenere gli account utente e le password.

Il sito web è stato scritto usando nodejs e ExpressJS .

    
posta Navaneeth K N 02.02.2013 - 18:34
fonte

4 risposte

2

Il tuo server web può impedire l'accesso a file e cartelle. Puoi configurare questa configurazione in un file .htaccess che contiene l'hash della tua password. Memorizzare le password in chiaro dovrebbe essere evitato a tutti i costi.

Assicurati che l'autenticazione sia eseguita su HTTPS e HTTPS sia usato per la vita della sessione. Se non segui questa linea guida, violerai OWASP a9 .

    
risposta data 03.02.2013 - 19:40
fonte
2

Pensi che questo approccio sia sicuro?

Sì - NO ! Senza aggiungere ulteriori livelli di sicurezza oltre a ciò che hai descritto, il tuo server sarebbe stato esposto a attacchi di forza bruta che cercavano di abbinare la password richiesta. Non importa quanto lunga e casuale è la tua password, dato un tempo sufficiente per il tuo schema di protezione sarà rotto . E il modo in cui lo descrivi, non sembra che ci vorrebbe tanto. Potresti proteggere un po 'di più la tua applicazione Web, anche utilizzando una sola chiave di sicurezza che descrivi. Oltre a ciò che Rook ha già suggerito, aggiungerei che potresti implementare anche queste misure di sicurezza con relativa facilità:

  • assicurati di spostare le sezioni di amministrazione della tua applicazione web in una posizione non standard e di non pubblicare mai (collega a) la sua posizione in parti accessibili pubblicamente della tua applicazione web. Non c'è però vera sicurezza attraverso l'oscurità, con un sacco di discussioni su IT.sec che descrive perché no.
  • blocca l'accesso alle sezioni di amministrazione nella configurazione del tuo server web con un intervallo IP limitato (con maschera il più elevata possibile) o anche solo alcuni indirizzi IP specifici che desideri accedere alle sezioni di amministrazione da. Mantieni questa configurazione sempre aggiornata e il più limitante possibile in ogni momento per la massima sicurezza.
  • tutti gli script attivi che potrebbero essere accessibili tramite la sezione di amministrazione dovrebbero anche essere spostati in una posizione non standard. Ad esempio, supponi di utilizzare estensioni TinyMCE nel tuo CMS. Questi possono essere sfruttati in vari modi e ti conviene spostare questi script lato server in posizioni non standard. Apporta le modifiche al codice dove necessario per supportare nuove posizioni.
  • Consenti solo esplicitamente l'accesso a queste sezioni agli user-agent che sono persino supportati dal tuo pannello di amministrazione (e simili). Puoi configurarlo nel tuo web server. È possibile bloccare molti scanner di vulnerabilità Web generici, poiché la maggior parte degli script kiddies non è nemmeno in grado di modificare le stringhe user-agent in qualcosa di meno ovvio.
  • Accedere a qualsiasi accesso a queste sezioni e negare dinamicamente l'accesso agli indirizzi IP che sembrano eseguire la scansione delle posizioni standard del pannello di amministrazione. Se l'automazione non è possibile, controllare frequentemente questi registri separati e bloccare manualmente tali indirizzi IP nella configurazione del server Web.
  • Condividi solo le informazioni su come accedere a queste sezioni di amministrazione con quelle che hanno assolutamente bisogno di conoscerle e creare diverse serie di regole descritte sopra per ogni singola persona che ha bisogno di accedervi. Se ciò significa più di una singola password, verificata rispetto all'indirizzo IP da cui stanno accedendo, allora così sia.
  • Assicurati che queste password utilizzate non possano essere recuperate solo mediante ispezione del codice (ovvero, non memorizzarle direttamente nel codice, offuscate o meno). Dovrebbe essere anche ovvio non memorizzarli in posizioni accessibili tramite il tuo server web.

Tutte queste regole dovrebbero essere abbastanza facili da implementare e aggiungeranno ulteriore livello di sicurezza oltre a una semplice password che prevedi di utilizzare per accedere a queste posizioni sicure. Ti suggerisco inoltre di utilizzare una combinazione di nome utente e password per aggiungere alla complessità (e se possibile una sorta di CAPTCHA) che renderà le sezioni di amministrazione un po 'meno propense agli attacchi di forza bruta. Altri risponderanno alla tua domanda con altri suggerimenti, ne sono sicuro, ma questi sono quelli che riesco a pensare in maniera esagerata che non richiederebbero troppo tempo per essere implementato. Spero che sia d'aiuto. Cheers!

    
risposta data 03.02.2013 - 22:53
fonte
1

Questo è perfetto se hai una password lunga e decente. L'unico modo in cui chiunque può ottenere la tua password è se compromettono il processo del server, ma se compromettono il processo del server, non hanno bisogno della tua password perché probabilmente possono semplicemente modificare il suo comportamento / rimuovere la verifica della password, ecc.

Potresti voler cancellare la password, ma non devi preoccuparti se non riutilizzi la password ovunque.

Nota la maggior parte dei suggerimenti nelle altre risposte sono principalmente FUD / OCD :) Ad esempio, il filtraggio IP è una perdita di tempo e la registrazione non è così importante se hai una password sicura e non hai tutti i tipi di buchi nel tuo sito.

L'unica cosa che dovrei dire se non l'hai già fatto è assicurarti di non avere problemi di iniezione (XSS / SQLi / etc) o CSRF / clickjacking. Potresti voler utilizzare HTTPS se ritieni che sia possibile che qualcuno (governo, persone della tua rete wireless, ecc.) Intercetti / interferisca con il tuo traffico.

    
risposta data 07.02.2013 - 21:43
fonte
0

Puoi usare una soluzione 2FA open source (come la nostra) e mod-ldap su apache. Ho fatto un proof-of-concept per uno scanner automatizzato open-source. Vedi qui: link .

    
risposta data 07.02.2013 - 20:21
fonte