¿Método de instalación remota simple y seguro que acepte entradas a través de una página web?

1

Al instalar software en un servidor remoto: ¿es posible permitir que el administrador (es decir, el usuario que instala el software) defina el nombre de usuario y la contraseña del administrador a través de una página HTML, de manera segura?

Aclaración: cuando uno instala, por ejemplo, WordPress, partes de los scripts de instalación aceptan entradas a través de una página web vea este ejemplo y observe la entrada de contraseña campos (la imagen es de esta página de WordPress ) .

Sin embargo, si la instalación se realiza de forma remota (por ejemplo, si instala WordPress en un host virtual de AWS EC2), creo que, de forma predeterminada, cualquier persona podría acceder a la página web del script de instalación. Un usuario malvado podría acceder a él antes que el administrador real, y definir un nombre de usuario + contraseña y, por lo tanto, secuestrar el servidor remoto por un corto tiempo. (El malvado usuario podría ser un robot que escanea Internet en busca de instalaciones de WordPress a medio terminar).

Aceptar información a través de una página HTML, cuando el software de instalación remota, parece inherentemente inseguro. Pero es bastante fácil de usar. ¿No hay manera de hacerlo de manera segura?

Algunos pensamientos no concluyentes sobre la pregunta:

Una solución alternativa sería bloquear el puerto HTTP (S) en el servidor de seguridad (en el servidor remoto) y acceder a la página web de instalación a través de un túnel SSH. Sin embargo, esto parece ser un requisito de instalación casi hostil para el usuario.

Otra solución alternativa sería que cualquier parte del script de instalación del shell script imprima una contraseña generada aleatoriamente que la persona que accede a la página web de instalación debería especificar. Esto parece algo más fácil de usar.

¿Quizás la mejor solución es que el administrador defina su nombre de usuario y contraseña a través del shell Bash? (Es decir, a través de SSH, no a través de una página web). Sin embargo , entonces, ¿qué pasa si el administrador quiere iniciar sesión como administrador a través de OpenID, por ejemplo? Gmail? (Gmail es muy seguro si habilitas la verificación en dos pasos). Eso no se puede manejar fácilmente a través de un script Bash ...

Quizás el mejor método sería dejar que cualquier parte de shell de la instalación imprima una URL que incluya la dirección del servidor, además de una contraseña mágica de un solo uso, entonces la persona que haga la instalación solo necesitaría para copiar la URL y pegarla en un navegador. Y luego la instalación podría proceder desde el navegador.

    
pregunta KajMagnus 07.05.2013 - 07:44
fuente

1 respuesta

2

Muchas de estas aplicaciones no tienen una parte del script de shell, y hacen todo a través de un script PHP / Perl en su lugar.

Creo que debemos considerar qué información tiene la instalación sobre quién es su maestro. Ciertamente, no es "cualquiera que pueda conectarse a través de HTTP", ya que, como usted dice, un robot podría buscar una instalación a medias.

Lo más simple sería requerir la misma contraseña utilizada para FTP para continuar con la instalación. Esto se puede hacer generando un nombre aleatorio como .htABCDEFGH.txt y leyendo una contraseña de texto simple. En la mayoría de las instalaciones, la creación de un archivo de este tipo solo está permitida para el usuario de FTP, y el archivo en sí no se puede leer excepto a través de FTP.

Una variante podría ser permitir que el instalador elija una contraseña, muestre su hash MD5 con sal en la pantalla y requiera que el hash se guarde del lado del servidor, por ejemplo

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.

De nuevo, a menos que uno tuviera la contraseña de FTP, no se podía escribir ni leer el hash (incluso si se podía leer el hash, no se podía invertir).

Para aquellas instalaciones que vienen preempaquetadas sin cuenta de FTP (una opción popular entre los proveedores de espacio web de CMS), password.php también podría generarse fácilmente mediante el script de asignación de CMS. Después de comprar la instalación de CMS, se le suministrará no solo el enlace al panel de instalación y administración, sino también con la contraseña de instalación que coincida con el archivo password.php recién creado.

El nombre de usuario de la instalación sería posible de la misma manera, pero parece excesivo. La contraseña de instalación solo debería usarse una vez, y brevemente, para establecer una cadena de confianza y dejar que la instalación continúe. Una vez que esté seguro, puede definir cualquier usuario y contraseña que desee (y eliminar también password.php y cualquier directorio / script de configuración).

Para mayor seguridad, la secuencia de comandos password.php no debe usarse a menos que la instalación aún esté por comenzar. Un sistema completamente instalado debería ignorar ese archivo, para evitar que cualquier persona con una pequeña vulnerabilidad pueda crear un archivo arbitrario corto para aprovechar esto y poder reiniciar toda la instalación.

    
respondido por el LSerni 07.05.2013 - 08:00
fuente

Lea otras preguntas en las etiquetas