
Eché un vistazo alTemas canónicosServerFault lo ha hecho y, lamentablemente, el que buscaba "Apache vHost" estaba en la lista de preguntas sin respuesta. Esto me sorprendió un poco ya que hay mucha gente que hace precisamente esa pregunta.
De todos modos, mi pregunta no es tanto sobre "cómo", sino sobre cuáles son las "mejores prácticas" para usar en un archivo de configuración de host virtual. Tengo el siguiente servidor virtual:
<VirtualHost *:80>
ServerName example.com
DocumentRoot /home/webmaster/examplesite.com/htdocs
ErrorLog /home/webmaster/examplesite.com/logfiles/error.log
CustomLog /home/webmaster/examplesite.com/logfiles/access.log combined
</VirtualHost>
Hace el trabajo y hace que todo funcione, sin embargo, quería saber si podía mejorarlo. En particular, me gustaría asegurarme de que se aborden las siguientes cuestiones:
- ¿Qué tan seguro es mi sitio?
- Me gustaría tener una carpeta de "cargas" donde los usuarios puedan publicar imágenes. ¿Necesito agregar algo al archivo vHost?
- ¿La configuración anterior optimiza mi sitio web o puedo optimizarlo aún más?
- ¿Algo más que me haya perdido?
Respuesta1
¿Qué tan seguro es mi sitio?
Almacenar sus archivos de registro para que sean potencialmente accesibles públicamente es una mala idea. La impresión de mensajes de error debe estar desactivada en producción, por lo que los atacantes son ciegos (no pueden usar mensajes de error en su contra[1]). Con acceso a los registros de errores, tienen mayores posibilidades de realizar prueba y error.
Me gustaría tener una carpeta de "cargas" donde los usuarios puedan publicar imágenes. ¿Necesito agregar algo al archivo vHost?
Quieres realizar cargasafuerala raíz del documento, para reducir la posibilidad de que un usuario pueda cargar un script (por ejemplo, PHP) y luego buscarlo y ejecutarlo. Naturalmente esta no es la única protección que debes tener, pero sin duda es uno de los componentes.
¿La configuración anterior optimiza mi sitio web o puedo optimizarlo aún más?
Realmente no puede optimizar tanto su sitio web con un vhost; esa es la configuración de nivel de Apache (fuera del alcance de esta pregunta).
¿Algo más que me haya perdido?
Es difícil decirlo, para ser honesto. Cada uno tiene requisitos diferentes. Por ejemplo, si su sitio web lo es example.com
, ¿esperaría www.example.com
que funcionara también? Si es así, te falta un ServerAlias
.
[1] Imagine que podrían generar un error de 'SQL no válido'. Saben que han encontrado una entrada que no está limpia y rápidamente han encontrado una manera de ingresar a su sitio web. Lo peor es que este tipo de ataques se pueden automatizar.