FORO SPAMLOCO


Permisos apropiados para servidor web


Dudas sobre Wordpress, Blogger y demás plataformas de contenidos
   

Permisos apropiados para servidor web

Notapor Manuel de la Fuente » Sep 2014, 02:49

He estado leyendo acerca del tema de los permisos para un servidor web y veo que la mayoría recomiendan colocarlos de esta forma:

www-data:www-data
Directorios 755
Archivos 644

Sin embargo, eso impide tener permisos de escritura desde el FTP.

Revisando los permisos de un hosting compartido veo que los tiene así:

usuario:usuario
Directorios 755
Archivos 644

Aunque en este caso, si no me equivoco, se debe a que han creado un usuario con permisos muy limitados y han modificado el software del servidor para correr con ese usuario, de otro modo no creo que sea muy aconsejable tener esa configuración.

Me parece que una configuración que podría funcionar sin muchos riesgos es esta:

usuario:www-data
Directorios 755
Archivos 644

Pero no estoy seguro de qué implicaciones pudiera tener.

Entonces, ¿cuáles consideran que son los permisos adecuados para el directorio público de un servidor web?
Avatar de Usuario
Manuel de la Fuente
Nivel 7
 
Mensajes: 551
Registrado: May 2009, 15:33
Ubicación: México
Twitter: @ManuelFte



Re: Permisos propiados para servidor web

Notapor Alejandro » Sep 2014, 07:22

Para el directorio público de la raíz, puede ser 0750

Imagen

Archivos 0644 y resto de las carpetas que están adentro de la pública 0755.

Es la configuración habitual que utilizan la mayoría de los servicios, como Hostgator http://support.hostgator.com/articles/c ... tml-folder
Avatar de Usuario
Alejandro
Administrador
 
Mensajes: 4097
Registrado: May 2009, 18:28
Ubicación: Uruguay
Twitter: @spamloco

Re: Permisos propiados para servidor web

Notapor Manuel de la Fuente » Sep 2014, 13:21

Y en el caso de esa configuración que mencionas, ¿qué pasa con los directorios y ficheros que están arriba de public_html, que en una estructura de Virtual Hosts sería /var/www/dominio.com/public_html? ¿También deberían ser 750 (y en el caso de los ficheros, 640), o es suficiente con los permisos normales de cualquier otro directorio de Linux?

Donde tengo más dudas es en cuanto al sistema usuario:grupo, porque ahí es donde he visto todo tipo de combinaciones raras y ninguna parece funcionar en todos los casos.

Por ejemplo, asumiendo que se dejen los permisos como 755 y 644, si se usa este esquema:

www-data:www-data

No se pueden modificar archivos desde el FTP porque el usuario no tiene permisos de escritura. Si se usa este otro:

usuario:www-data

WordPress no puede actualizarse ni instalar plugins porque ahora es el servidor el que no puede escribir. Si se usa este:

www-data:usuario

Sucede lo mismo que en el primer caso, y si se usa este:

usuario:usuario

Sucede lo mismo que en el segundo caso.

Lo único que se me ocurre es dejar los permisos de esta forma:

Directorios 775
Archivos 664

Con lo que cualquiera de las 4 combinaciones anteriores funcionaría, aunque imagino que abriendo alguna brecha de seguridad; o hacer lo mismo que (me imagino) hacen los hostings compartidos: crear un nuevo usuario con privilegios limitados e indicarle al software del servidor y al FTP que lo utilicen, lo cual me parece muy rebuscado y no veo a nadie que sugiera hacerlo de esta forma.

Entonces, ¿qué tipo de esquema recomiendas usar?
Avatar de Usuario
Manuel de la Fuente
Nivel 7
 
Mensajes: 551
Registrado: May 2009, 15:33
Ubicación: México
Twitter: @ManuelFte

Re: Permisos propiados para servidor web

Notapor Alejandro » Sep 2014, 10:38

Para los directorios luego del public_html, los tengo como 0755

Es decir:

.../public_html/ <== 0750
.../public_html/misitio.com/ <=== 0755
../public_html/misitio.com/wp-admin/ <=== 0755
.../public_html/misitio.com/robots.txt <=== 0644

"public_html" también puede tener otros nombres según el hosting, pero vendría a ser el directorio raíz, es decir lo que pongas ahí es accesible públicamente. Lo que pones por debajo de ese directorio, no se puede ver desde el navegador web.
Avatar de Usuario
Alejandro
Administrador
 
Mensajes: 4097
Registrado: May 2009, 18:28
Ubicación: Uruguay
Twitter: @spamloco

Re: Permisos propiados para servidor web

Notapor Manuel de la Fuente » Sep 2014, 12:35

Ok, ¿y en cuanto al usuario y grupo cómo debería dejarlos?
Avatar de Usuario
Manuel de la Fuente
Nivel 7
 
Mensajes: 551
Registrado: May 2009, 15:33
Ubicación: México
Twitter: @ManuelFte

Re: Permisos propiados para servidor web

Notapor Alejandro » Sep 2014, 18:12

Te lo dejo en un par de capturas, esto sería para la estructura:

/home/usuario/public_html/www.example.com/

Para /home/

Imagen

Para /usuario/

Imagen
Avatar de Usuario
Alejandro
Administrador
 
Mensajes: 4097
Registrado: May 2009, 18:28
Ubicación: Uruguay
Twitter: @spamloco

Re: Permisos propiados para servidor web

Notapor Manuel de la Fuente » Sep 2014, 23:48

Vaya, interesante, nunca había visto una configuración así, pero parece tener mucho sentido.

Aunque creo que no me estoy dando a entender, mi duda va por otro lado. Digamos que mi usuario de Linux es manuel, lo agrego al grupo www-data, y luego asigno los permisos del directorio /var/www como 755. La cuestión viene con respecto a lo que hace este comando:

Código: Seleccionar todo
# chown -R usuario:grupo /var/www


El cual indica qué usuario y qué grupo serán los propietarios del directorio. Usualmente, por lo que he visto, se usa a www-data tanto para usuario como para grupo, así:

Código: Seleccionar todo
# chown -R www-data:www-data /var/www


Sin embargo, eso impide que mi usuario (manuel) pueda hacer cualquier modificación en el directorio /var/www, porque si los permisos están así:

755 =

7 - Usuario (www-data) puede leer, ejecutar y escribir.
5 - Grupo (www-data, donde está mi usuario manuel) puede leer y ejecutar, pero no escribir.
5 - Todos los demás pueden leer y ejecutar, pero no escribir.

Entonces no puedo hacer nada sin permisos de root y mucho menos desde FTP porque no tengo permisos de escritura. Para ello tendría que elevar los permisos del grupo de esta forma:

775 =

7 - Usuario (www-data) puede leer, ejecutar y escribir.
7 - Grupo (www-data, donde está mi usuario manuel) puede leer, ejecutar y escribir.
5 - Todos los demás pueden leer y ejecutar, pero no escribir.

Pero en cuanto a esta configuración he visto comentarios dispares, unos dicen que es segura y otros que no, y entonces no sé qué usuario y grupo debería indicar en el comando # chown -R usuario:grupo /var/www para poder tener permisos de escritura desde el FTP sin comprometer la seguridad de la instalación.

Como mencioné en los otros mensajes de arriba, he probado muchas combinaciones de usuario y grupo y se me han ocurrido otras ideas más complicadas pero todas tienen muchas desventajas y no logro encontrar la configuración más adecuada.

Acá hice la misma pregunta aunque no he obtenido una respuesta concreta aún, lo cual me parece muy extraño si se supone que es una de las primeras tareas que se hacen a la hora de montar un servidor web. ¿Es que nadie accede por FTP a sus servidores, o cómo le hacen cuando necesitan modificar archivos del directorio público?
Avatar de Usuario
Manuel de la Fuente
Nivel 7
 
Mensajes: 551
Registrado: May 2009, 15:33
Ubicación: México
Twitter: @ManuelFte

Re: Permisos propiados para servidor web

Notapor Alejandro » Sep 2014, 07:28

Tienes acceso a un cPanel o algo así, o haces todo desde una consola?
Avatar de Usuario
Alejandro
Administrador
 
Mensajes: 4097
Registrado: May 2009, 18:28
Ubicación: Uruguay
Twitter: @spamloco

Re: Permisos propiados para servidor web

Notapor Manuel de la Fuente » Sep 2014, 12:07

Consola y FTP. He considerado instalar zPanel aunque para el uso que le doy al VPS no veo para qué me haría falta.
Avatar de Usuario
Manuel de la Fuente
Nivel 7
 
Mensajes: 551
Registrado: May 2009, 15:33
Ubicación: México
Twitter: @ManuelFte

Re: Permisos propiados para servidor web

Notapor Manuel de la Fuente » Sep 2014, 16:33

He seguido pensando en el asunto y creo que voy encontrando algo más de claridad. Me di cuenta de que todo este tiempo he estado cavilando sobre si darle permisos de escritura a mi usuario o no cuando el peligro no venía por ahí, el problema es que el www-data es quien no debería poder escribir, por lo arriesgado que es que cualquier script tenga la libertad de modificar y borrar a su antojo en el servidor y mandar a volar todo en un instante. El origen de este dilema vino ocasionado específicamente por WordPress, porque éste necesita que se le concedan permisos de escritura ya que de otro modo no puede actualizarse, instalar plugins y ni siquiera subir imágenes.

Si no me equivoco, en los hostings compartidos no tienen esta problemática porque han creado un entorno chroot para cada uno de sus clientes y le han dado al servidor permisos de escritura sobre ese entorno aislado para facilitarle las cosas al usuario; al fin que si un script malévolo causa un desastre, solo afectará al entorno chroot del cliente sin comprometer a los demás, y será culpa del cliente de cualquier forma.

Sin embargo, cuando se trata de un VPS o servidor propio existen más opciones. En mi caso particular, uso Nginx con Server Blocks (o Virtual Hosts, como se les llama en Apache), por lo que el servidor tiene esta estructura:

/var/www/dominio.com/public_html
/var/www/otrodominio.com/public_html
/var/www/sub.dominio.com/public_html
... etc.

Siendo así, algunas alternativas que se me ocurrieron son:

  1. Negarle los permisos de escritura a www-data en todo /var/www excepto en los directorios de subida (wp-content/uploads en el caso de WordPress), y en consecuencia actualizar manualmente los software o scripts que se tengan instalados ahí o cambiar los permisos cada vez que se necesite actualizar.
  2. Seguir este método, el cual consiste también en negar los permisos de escritura a www-data pero en su lugar dárselos específicamente a WordPress. Eso reduce algunos riesgos aunque al ser una técnica exclusiva para WordPress habría que ver el caso de otros scripts y software de forma particular.
  3. Poner cara de Yao Ming y dar permisos 775 y 664 a todos los contenidos de public_html, con la desventaja de permitir que cualquier script pueda manipular todos los Server Blocks sin dificultad.
  4. Hacer cualquiera de las opciones anteriores pero creando entornos chroot para cada Server Block, de modo que si uno se ve comprometido, los demás siguen como si nada.

Personalmente me convence más la opción 4, combinada con la 2 para los Server Blocks que tengan instalaciones de WordPress, y con la 1 para los que tengan algún otro software instalado. Habrá qué ver si es posible conseguirlo de una forma más sencilla de lo que parece...
Avatar de Usuario
Manuel de la Fuente
Nivel 7
 
Mensajes: 551
Registrado: May 2009, 15:33
Ubicación: México
Twitter: @ManuelFte

Re: Permisos propiados para servidor web

Notapor Alejandro » Sep 2014, 19:16

Qué empresa es la del servidor o dónde lo estás montando al WordPress?
Avatar de Usuario
Alejandro
Administrador
 
Mensajes: 4097
Registrado: May 2009, 18:28
Ubicación: Uruguay
Twitter: @spamloco

Re: Permisos propiados para servidor web

Notapor Manuel de la Fuente » Sep 2014, 21:33

Tengo un VPS en DigitalOcean.

Me quedó la duda en cuanto a tu pregunta sobre si tenía cPanel. ¿Con el cPanel es posible hacer esto que estoy buscando?
Avatar de Usuario
Manuel de la Fuente
Nivel 7
 
Mensajes: 551
Registrado: May 2009, 15:33
Ubicación: México
Twitter: @ManuelFte

Re: Permisos propiados para servidor web

Notapor Manuel de la Fuente » Sep 2014, 22:07

Jajajajajaja, apenas veo que en el título del hilo escribí "propiados" en vez de "apropiados". Ya no puedo editarlo, ¿podrías corregirlo?
Avatar de Usuario
Manuel de la Fuente
Nivel 7
 
Mensajes: 551
Registrado: May 2009, 15:33
Ubicación: México
Twitter: @ManuelFte

Re: Permisos apropiados para servidor web

Notapor Alejandro » Sep 2014, 01:19

Lo del cPanel lo preguntaba porque desde ahí o algún panel similar, se puede crear un usuario FTP para que sólo pueda escribir en un determinado directorio y no en otros, que pensé que era lo que necesitabas.

Y después cuando comentaste lo de WordPress, recordé que una vez me pasó algo parecido con Mediatemple (el WordPress no se podía actualizar ni subir imágenes) y lo solucioné como comentan aquí con unas opciones del cPanel.

Creo que en tu caso lo del punto 2 sería lo mejor y si funciona, luego ver para otros scripts.
Avatar de Usuario
Alejandro
Administrador
 
Mensajes: 4097
Registrado: May 2009, 18:28
Ubicación: Uruguay
Twitter: @spamloco


cron