Configurar correctamente hosts virtuales apache con múltiples usuarios

15

Gracias de antemano por cualquier ayuda que pueda proporcionar. Yo mismo aprendí a usar Linux (ubuntu), apache, hosts virtuales y algunos bits con respecto a la seguridad, aunque todavía tengo que ponerlos a la perfección.

También aprendí de la manera difícil de los errores cometidos en el pasado con respecto a no configurar correctamente las cuentas de usuario y los sitios / hosts virtuales. Ingresé al servidor como root (lo sé, muy mal) y creé todos los hosts y archivos virtuales manualmente, por lo que todos son propiedad de root. He tenido una versión antigua de Joomla explotada y un código de spam malicioso insertado en todos mis otros hosts virtuales.

Estoy en el proceso de mudarme a un nuevo servidor y estoy buscando los pasos correctos a seguir para configurar hosts virtuales y cuentas de usuarios que puedan acceder a ellos. Debido a que utilizamos software de terceros, en ocasiones hemos necesitado que alguien más ingrese al sitio para investigar los archivos de su sitio web.

Nuestro servidor actual es la versión 10.04, sin embargo, el nuevo servidor es la versión 12.04. Todos los archivos del sitio web se configuran en

/home/www/site1.com

/home/www/site2.com

/home/www/site3.com

etc.

En resumen, supongo que esto es lo que busco.

  1. ¿Cómo configuro correctamente un host virtual y un usuario, de modo que solo tenga acceso a sus propios archivos y no a ningún otro host virtual en el servidor? Por ejemplo, si ese sitio se explota con código malicioso, no puede infectar otros sitios en el servidor

  2. ¿Cómo configuraría a los usuarios para que solo puedan ftp en sus archivos dados y no accedan a ninguno de los otros sitios?

Como se mencionó anteriormente, hay numerosos artículos que detallan cómo realizar cualquiera de estos pasos, pero nada que los reúna a la perfección.

Realmente aprecio la ayuda que cualquiera puede ofrecer. No dude en solicitar cualquier información adicional que pueda necesitar para asesorar. Actualmente estoy siguiendo tutoriales para configurar chroot, sin embargo, me temo que no estoy haciendo esto correctamente, ya que he recogido algunas inconsistencias en el camino. También estoy investigando jailkit.

user249729
fuente

Respuestas:

6

Dado que la pregunta es el principal resultado de búsqueda en Google cuando se le pregunta "usuario separado del host virtual apache", me gustaría dar una respuesta más elaborada basada en esta respuesta . Mi respuesta no cubre el caso de uso de PHP y CGI (usaría suPHP). Se enfoca en PHP cuando se usa como un módulo apache.

Puede usar el módulo apache apache2-mpm-itk . Está disponible para la versión actual de apache 2.4. Viene con la directiva AssignUserID. Esta directiva define el usuario y el grupo con el que se maneja la solicitud de un host virtual. Este es un ejemplo de la configuración del sitio apache con la que terminé:

<VirtualHost *:80>
ServerName www.site1.com
DocumentRoot /home/www/site1.com
AssignUserID site1 www-data
php_admin_value open_basedir /home/www/site1.com
...
</VirtualHost>

Por supuesto, esto solo mejora la seguridad siempre que los DocumentRoots individuales sean propiedad de sus respectivos usuarios y no sean accesibles para grupos. Para mayor seguridad relacionada con PHP, los scripts se encarcelan DocumentRootcon la restricción open_basedir. En cuanto al acceso al archivo de fondo, prefiero SFTP con chroot .

Nota: apache2-mpm-itk es actualmente incompatible con el módulo http2 de Apache.

Hermann
fuente
1

No considero que esta sea una respuesta a tu pregunta. Pero como aún no puedo comentar, tengo que escribir en el área de "respuesta". Estacionalmente manejo web, una forma de probar y probar cosas de manera segura es configurar un entorno de prueba en una máquina virtual (es decir, VirtualBox) o una computadora de escritorio "vieja". Uno de los problemas más comunes de los administradores de host web novatos es comprender cómo funcionan los programas de servidor web. En este caso, supongo que debe comprender cómo funciona Apache y al menos comprender los archivos de configuración. Creo que Webmin es una herramienta muy útil, para un novato, para administrar Apache y otros servicios. Tienes que pasar un tiempo para probar cosas en tu entorno de prueba para que las cosas te resulten más claras.

Volviendo a su pregunta, creo que la respuesta puede ser un artículo tutorial o un pequeño libro. Mira estos artículos para empezar:

https://www.digitalocean.com/community/articles/how-to-set-up-apache-virtual-hosts-on-ubuntu-12-04-lts

http://www.servermom.org/build-ubuntu-server-a-complete-guide/

biocyberman
fuente
Gracias biocyberman. Estos son más o menos los pasos básicos que sigo y con los que estoy bastante familiarizado. La única diferencia es que no he conocido cada sitio web a un usuario diferente, que es algo que voy a probar a continuación, sin embargo, ¿esto asegura las carpetas de host virtuales entre sí? Jailkit parece ser parte de la solución, pero no estoy 100% seguro. He jugado con webmin en el pasado, así que lo volveré a ver y veré si me ayuda con alguna de las preguntas que tengo.
user249729