Metodo di installazione remota semplice e sicuro che accetta l'input tramite una pagina Web?

1

Quando si installa il software su un server remoto: è possibile consentire all'amministratore (cioè all'utente che installa il software) di definire nome utente e password dell'amministratore tramite una pagina HTML, in modo sicuro?

Chiarimento: quando si installa ad es. WordPress, parti degli script di installazione accettano input tramite una pagina Web vedere questo esempio - e si noti l'immissione della password campi (l'immagine proviene da questa pagina di WordPress ) .

Tuttavia, se l'installazione viene eseguita in remoto (ad esempio, se si installa WordPress su un host virtuale AWS EC2), penso che per impostazione predefinita chiunque sarebbe in grado di accedere alla pagina Web dello script di installazione. Un malvagio utente potrebbe accedervi prima dell'effettivo admin e definire username + password e quindi dirottare il server remoto per un breve periodo. (L'utente malvagio potrebbe essere un bot che esegue la scansione di Internet per le installazioni di WordPress semilavorate.)

Accettare input tramite una pagina HTML, quando si installa da remoto il software, sembra intrinsecamente pericoloso. Ma è abbastanza facile da usare. Non c'è modo di farlo in modo sicuro?

Alcuni pensieri inconcludenti sulla domanda:

Una soluzione alternativa sarebbe bloccare la porta HTTP (S) nel firewall (sul server remoto) e accedere alla pagina Web di installazione tramite un tunnel SSH. Tuttavia questo sembra un requisito di installazione quasi ostile all'utente.

Un'altra soluzione alternativa consiste nel disporre di parti dello script di shell dello script di installazione che stampino una password generata a caso che la persona che accede alla pagina Web di installazione dovrebbe specificare. Questo sembra un po 'più user friendly.

Forse la soluzione migliore è che l'amministratore definisca il suo nome utente e la password tramite la shell Bash? (Ad esempio su SSH, non tramite una pagina Web). Tuttavia che succede se l'amministratore vuole accedere come amministratore tramite OpenID, ad es. Gmail? (Gmail è molto sicuro se abiliti la verifica in due passaggi.) Questo non può essere facilmente gestito tramite uno script Bash ...

Forse il metodo migliore sarebbe lasciare che qualsiasi parte dello script di shell dell'installazione stampi un URL che includa l'indirizzo del server, oltre a una magica password monouso - quindi la persona-che-fa-l'-installazione avrebbe solo bisogno per copiare l'URL e incollarlo in un browser. E quindi l'installazione potrebbe procedere dal browser.

    
posta KajMagnus 07.05.2013 - 07:44
fonte

1 risposta

2

Molte di queste app non hanno una parte di script di shell, e invece fanno tutto attraverso uno script PHP / Perl.

Penso che dobbiamo considerare quali informazioni l'installazione hanno su chi sia il suo master. Certamente non "chiunque sia in grado di connettersi tramite HTTP", dal momento che come dici tu, un bot potrebbe semplicemente cercare un'installazione semicotta.

La cosa più semplice sarebbe richiedere la stessa password utilizzata per FTP per procedere con l'installazione. Questo potrebbe essere fatto generando un nome casuale come .htABCDEFGH.txt e leggendo una password in chiaro da esso. Nella maggior parte delle installazioni la creazione di tale file è consentita solo per l'utente FTP e il file stesso non può essere letto se non tramite FTP.

Una variazione potrebbe essere quella di consentire all'installatore di scegliere una password, visualizzare l'hash salato MD5 sullo schermo e richiedere che l'hash stesso venga salvato lato server, ad es.

To begin installation, you need to save the password you've
just chosen in a text file called password.php containing the
following lines:

<?php
    $INSTALLPWD='65cb963e760378ab0ee97e50ca70084f9555adb9';
?>

You need to do this via FTP, to prove you own the FTP account
used to deploy this installation.

Anche qui, a meno che non si abbia la password FTP, non si può né scrivere né leggere l'hash (anche se l'hash può essere letto, non può essere invertito).

Per quelle installazioni che vengono pre-confezionate senza account FTP (una scelta popolare nei provider di spazio Web CMS), anche password.php potrebbe essere facilmente generata dallo script di allocazione CMS. Dopo l'acquisto dell'installazione CMS, verrai fornito non solo con il link al pannello di installazione e di amministrazione ma anche con la password di installazione corrispondente al file password.php appena creato.

Il nome utente dell'installazione sarebbe possibile allo stesso modo, ma sembra eccessivo. La password di installazione dovrebbe essere utilizzata solo una volta, e brevemente, per stabilire una catena di fiducia e lasciare procedere l'installazione. Una volta sicuro, puoi definire qualsiasi utente e password che desideri (ed eliminare password.php e qualsiasi directory / script di installazione).

Per maggiore sicurezza, lo script password.php dovrebbe non essere usato a meno che l'installazione non sia ancora iniziata. Un sistema completamente installato dovrebbe ignorare quel file, per evitare che chiunque abbia un piccolo exploit in grado di creare un file arbitrario breve per sfruttare questo vantaggio nella capacità di riavviare l'intera installazione.

    
risposta data 07.05.2013 - 08:00
fonte

Leggi altre domande sui tag