viernes, 11 de octubre de 2013

Configuración básica de Apache

Acerca del protocolo HTTP.

HTTP (Hypertext Transfer Protocol o Protocolo de Trasferencia de Hipertexto) es el método utilizado para transferir o transportar información a través de Internet y (WWW, World Wide Web). Su propósito original fue el proveer una forma de publicar y recuperar documentos en formato HTML.
El desarrollo del protocolo fue coordinado por World Wide Web Consortium y la IETF (Internet Engineering Task Force  o Fuerza de Trabajo en Ingeniería de Internet), culminando con la publicación de varios RFC (Request For Comments), de entre los que destaca el RFC 2616, mismo que define la versión 1.1 del protocolo, que es el utilizado hoy en día.
HTTP es un protocolo de solicitud y respuesta a través de TCP, entre agentes de usuario (Navegadores, motores de índice y otras herramientas) y servidores, regularmente utilizando el puerto 80. Entre la comunicación entre éstos puede intervenir otros tipos de implementaciones, como serían servidores Intermediarios (Proxies), puertas de enlace y túneles.
URL: http://tools.ietf.org/html/rfc2616

Acerca de Apache.

Apache es un servidor HTTP de código fuente abierto y licenciamiento libre que funciona en Linux, sistemas operativos derivados de Unix™, Windows™, Novell™ Netware y otras plataformas. Ha desempeñado un papel muy importante en el crecimiento de Internet y continua siendo el servidor HTTP más utilizado, siendo además el servidor de facto contra el cual se realizan las pruebas comparativas y de desempeño para otros productos competidores. Es desarrollado y mantenido por una comunidad de desarrolladores auspiciada por Apache Software Foundation.
URL: http://www.apache.org/

Equipamiento lógico necesario.

En CentOS, Fedora™ y Red Hat™ Enterprise Linux.

Ejecute lo siguiente:
yum -y install httpd
Si se desea incluir soporte para PHP/MySQL, Perl, Python y SSL/TLS, ejecute lo siguiente:
yum -y install php php-mysql mod_perl mod_wsgi mod_ssl

Nota.
En CentOS 6, Fedora™ y Red Hat™ Enterprise Linux 6, el soporte para Python se incluye con el paquete mod_wsgi. En CentOS 5 y Red Hat™ Enterprise Linux 5, el soporte para Python se incluye con el paquete mod_python.
yum -y install mod_python
Para poder realizar pruebas desde el mismo anfitrión local, puede utilizar cualquier navegador, como serían Firefox y Google Chrome. A fin de poder prescindir del uso del modo gráfico y poder trabajar desde una terminal de texto, sugerimos instalar y utilizar el navegador Lynx.
yum -y install lynx

Iniciar servicio y añadir el servicio al arranque del sistema.

Para añadir el servicio al arranque del sistema, ejecute:
chkconfig httpd on
Para iniciar el servicio ejecute:
service httpd start
Para reiniciar el servicio interrumpiendo todas las conexiones establecidas en ese momento, ejecute:
service httpd restart
Para cargar los cambios en la configuración sin interrumpir el servicio y con ésto mantener activas las conexiones establecidas, ejecute
service httpd reload
Para detener el servicio, ejecute:
service httpd stop

SELinux y Apache.

En CentOS, Fedora™ y Red Hat™ Enterprise Linux, de modo predeterminado SELinux viene activo en modo obligatorio (enforcing). Éste añade seguridad y protección adicional a Apache. Sin embargo algunas opciones impedirán utilizar ciertas funciones en Apache, como directorios virtuales fuera del directorio /var/www, directorios ~/public_html, el envío de correo electrónico desde aplicaciones basadas sobre HTTP, etc.
Para permitir a Apache poder enviar correo electrónico desde alguna aplicación, ejecute:
setsebool -P httpd_can_sendmail 1
Para permitir que Apache pueda leer contenidos localizados en los directorios de inicio de los usuarios locales, ejecute:
setsebool -P httpd_read_user_content 1

Nota.
Estas últimas dos políticas son indispensables para el funcionamiento de cualquier cliente de correo electrónico basados sobre HTTP (Webmails).
Para permitir a Apache poder ejecutar guiones CGI, ejecute:
setsebool -P httpd_enable_cgi 1
Para permitir las inclusiones del lado del servidor (SSI, Server Side Includes), ejecute:
setsebool -P httpd_ssi_exec 1
Para permitir que Apache se pueda conectar a un base de datos localizada en otro servidor, ejecute:
setsebool -P httpd_can_network_connect_db 1
Para permitir a Apache realizar conexiones de red hacia otro servidor, ejecute:
setsebool -P httpd_can_network_connect 1
Para permitir que los usuarios locales puedan utilizar un directorio público (public_html), ejecute:
setsebool -P httpd_enable_homedirs 1

Nota.
Esta última política es indispensable para el funcionamiento de anfitriones virtuales asignados a usuarios locales, pues permite utilizar los directorios ~/public_html.
Para permitir administrar a través de FTP o FTPS cualquier directorio gestionado por Apache o bien permitir a Apache funcionar como un servidor FTP escuchando peticiones a través del puerto de FTP, ejecute el siguiente mandato:
setsebool -P httpd_enable_ftp_server 1
Para desactivar la ejecución de PHP y otros lenguajes de programación para HTTP a través de Apache, ejecute el siguiente mandato:
setsebool -P httpd_builtin_scripting 0
Para consultar todas políticas disponibles que existen para Apache, ejecute:
getsebool -a |grep httpd
Para consultar todas políticas disponibles que existen para Apache, junto con una breve descripción, ejecute:
semanage boolean -l |grep httpd
Para definir que un directorio fuera de /var/www, como por ejemplo /sitios/dominio.tld/html, pueda ser utilizado por Apache, se le debe asignar el contexto httpd_sys_content_t. Éste puede asignarse a través del mandato chcon, como se muestra en el siguiente ejemplo:
chcon -t httpd_sys_content_t /sitios/dominio.tld/html
Cualquier contenido que sea copiado o transferido dentro de /var/www automáticamente adquiere el contexto httpd_sys_content_t.
Para definir que se permite ejecutar un guión CGI en particular, como por ejemplo /sitios/dominio/cgi-bin/formulario.pl, se utiliza el siguiente mandato:
chcon -t httpd_sys_script_exec_t /sitios/dominio/cgi-bin/formulario.pl
Cualquier contenido que sea copiado o transferido dentro de cualquier sub-directorio de /var/www que se denomine cgi-bin, automáticamente adquiere el contexto httpd_sys_script_exec_t.
Para definir que, por ejemplo, /var/www/dominio/public_html/escribir.php pueda realizar procedimientos de sólo lectura de datos fuera del directorio /var/www, ejecute el siguiente mandato:
chcon -t httpd_sys_script_ro_t /var/www/dominio/public_html/leer.php
Para definir que, por ejemplo, /var/www/dominio/public_html/escribir.php pueda realizar procedimientos de lectura y escritura de datos fuera del directorio /var/www, ejecute el siguiente mandato:
chcon -t httpd_sys_script_rw_t /var/www/dominio/public_html/leer.php

Modificaciones necesarias en el muro cortafuegos.

Es necesario abrir el puerto 80 por TCP (HTTP).

Servicio iptables.

Puede utilizar iptables, ejecutando lo siguiente:
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

service iptables save
O bien edite el archivo /etc/sysconfig/iptables:
vim /etc/sysconfig/iptables
Y añada el siguiente contenido:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
Y reinicie el servicio iptables:
service iptables restart

Shorewall.

Edite el archivo /etc/shorewall/rules:
vim /etc/shorewall/rules
Las reglas corresponderían a algo similar a lo siguiente, permitiendo el acceso hacia el servicio HTTP desde cualquier zona del muro cortafuegos:
#ACTION	SOURCE	DEST	PROTO 	DEST		SOURCE
#				PORT		PORT(S)1
ACCEPT	all	fw	tcp	80
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE
Para aplicar los cambios en Shorewall, ejecute lo siguiente:
service shorewall restart

Procedimientos.

Archivos de configuración.

Cualquier ajuste que se requiera realizar, ya sea para configurar anfitriones virtuales, u otra funcionalidad adicional, se puede realizar sin tocar el archivo principal de configuración (/etc/httpd/conf/httpd.conf), utilizando cualquier archivo con extensión *.conf dentro del directorio /etc/httpd/conf.d/.

UTF-8 y codificación de documentos.

UTF-8
UTF-8 es un método de codificación de ASCII para Unicode (ISO-10646), el Conjunto de Caracteres Universal o UCS. éste codifica la mayoría de los sistemas de escritura del mundo en un único conjunto de caracteres, permitiendo la mezcla de lenguajes y guiones en un mismo documento sin la necesidad de ajustes para realizar los cambios de conjuntos de caracteres.
Debido a su conveniencia actualmente se está adoptando UTF-8 como codificación para todo, sin embargo aún hay mucho material codificado en, por ejemplo, ISO-8859-1.
Lo correcto es cambiar a en UTF-8 la codificación de los documentos que están en ISO8859-1, u otras tablas de caracteres, utilizando métodos similares el siguiente:
cd /var/www/html/
for f in *.html
do
vi -c ":wq! ++enc=utf8" $f
done
Lo anterior sólo tendría sentido si dentro del directorio /var/www/html hubiera documentos HTML codificados en ISO8859-1.
Si desea continuar viviendo en el pasado y no aceptar el nuevo estándar, también puede desactivar la función en Apache que establece UTF-8 como codificación predefinida. Edite el archivo /etc/httpd/conf/httpd.conf:
vim /etc/httpd/conf/httpd.conf
Localice lo siguiente:
AddDefaultCharset UTF-8
Cambie UTF-8 por Off:
AddDefaultCharset Off

Directorios virtuales.

Si, por ejemplo, se quisiera añadir el alias para un directorio localizado en /var/contenidos/ejemplo/ y el cual queremos visualizar como el directorio /ejemplo/ en Apache, lo primero será crear el directorio:
mkdir -p /var/contenidos/ejemplo
Cambie los contextos de SELinux de este directorio, con la finalidad de que tenga rol de objeto (object_r), creado por usuario de sistema (system_u) y tipo httpd_sys_content_t:
chcon -u system_u /var/contenidos/ejemplo
chcon -r object_r /var/contenidos/ejemplo
chcon -t httpd_sys_content_t /var/contenidos/ejemplo
Genere el archivo /etc/httpd/conf.d/ejemplos.conf:
vim /etc/httpd/conf.d/ejemplos.conf
Añada el siguiente contenido:
Alias  /ejemplo  /var/contenidos/ejemplo
Guarde y cierre el archivo.
Recargue el servicio httpd.
service httpd reload
Asumiendo que realizará la prueba desde el mismo anfitrión local, visualice este nuevo directorio virtual, con cualquier navegador, a través de http://127.0.0.1/ejemplo/. Se mostrará que el directorio existe, pero el acceso a éste está denegado.
Si desea realizar las comprobaciones desde el mismo anfitrión, puede utilizar el navegador Lynx.
lynx http://127.0.0.1/ejemplo/
Lo anterior deberá mostrar un error 403 (acceso denegado), pues el directorio carece de un archivo índice. Para poder acceder deberá haber un documento índice en el interior (index.html, index.php, etc) o bien que dicho directorio sea configurado para mostrar el contenido.
Edite de nuevo el archivo /etc/httpd/conf.d/ejemplos.conf:
vim /etc/httpd/conf.d/ejemplos.conf
Modifique el contenido para que quede del siguiente modo:
Alias /ejemplo /var/contenidos/ejemplo
	<Directory "/var/contenidos/ejemplo">
		Options Indexes
	</Directory>
La opción Indexes indica que se deberá mostrar el índice de contenido del directorio.
Recargue el servicio httpd para aplicar la configuración:
service httpd reload
Asumiendo que realizará la prueba desde el mismo anfitrión local, acceda hacia http://127.0.0.1/ejemplo/ con cualquier navegador y visualice el resultado.
Si se requiere que este directorio tenga aún mayor funcionalidad, se pueden añadir más opciones, como por ejemplo AllowOverride, Includes y FollowSymLinks, como se muestra en el siguiente ejemplo:
Alias /ejemplo /var/contenidos/ejemplo
	<Directory "/var/contenidos/ejemplo">
		Options Indexes Includes FollowSymLinks
		AllowOverride all
	</Directory>
En el ejemplo anterior:
  • La opción FollowSymLinks habilita el uso de enlaces simbólicos dentro del directorio. Sólo utilice ésta si necesita acceder a contenidos fuera del directorio a utilizar.
  • La opción Includes especifica que se permite la utilización de los SSI (Server Side Includes). Sólo utilice ésta si así lo requiere la aplicación o programa utilizado dentro este directorio.
  • La opción AllowOverride, con el valor all posibilita utilizar archivos .htaccess, los cuales a su vez permiten aplicar opciones de directorio al vuelo, sin necesidad de modificar otros archivos de configuración.
Para que surtan efecto los cambios hechos a la configuración, recargue el servicio httpd:
service httpd reload
Asumiendo que realizará la prueba desde el mismo anfitrión local, acceda hacia http://127.0.0.1/ejemplo/ con cualquier navegador y visualice el resultado.
Si desea realizar las comprobaciones desde el mismo anfitrión, puede utilizar el navegador Lynx.
lynx http://127.0.0.1/ejemplo/

Limitar el acceso a directorios por dirección IP.

Si se requiere limitar el acceso de un directorio en particular, para que éste esté disponible sólo hacia ciertas direcciones IP o bloques de red, defina algo como lo mostrado en el siguiente ejemplo:
Alias /ejemplo /var/contenidos/ejemplo
	<Directory "/var/contenidos/ejemplo">
		Order deny,allow
		Deny from all
		Allow from 127.0.0.0/8 192.168.70.0/25
		Options Indexes
		AllowOverride all
	</Directory>
El ejemplo anterior establece que el orden de acceso, donde primero se aplicarán las reglas de denegación y luego las que permitirán el acceso y que se denegará el acceso a todo el mundo, permitiendo el acceso sólo desde 127.0.0.0/8 y 192.168.70.0/25.
Para que surtan efecto los cambios hechos a la configuración, recargue el servicio httpd:
service httpd reload
sumiendo que realizará la prueba desde el mismo anfitrión local, acceda hacia http://127.0.0.1/ejemplo/ con cualquier navegador y visualice el resultado.
Si desea realizar las comprobaciones desde el mismo anfitrión, puede utilizar el navegador Lynx.
lynx http://127.0.0.1/ejemplo/

Limitar el acceso por usuario y contraseña.

La autenticación para directorios, contra un archivo que incluya nombres de usuario y claves de acceso, que también puede combinarse con el acceso por dirección IP, se realiza a través de la siguiente sintaxis:
AuthName "Acceso sólo para usuarios autorizados"
AuthType Basic
Require valid-user
AuthUserFile /cualquier/ruta/hacia/archivo/de/claves
Lo anterior puede ser incluido en la configuración existente para cualquier directorio o bien en archivo .htaccess.
Genere el directorio /var/www/privado/ ejecutando lo siguiente:
mkdir -p /var/www/privado
Genere un archivo denominado arbitrariamente /etc/httpd/conf.d/ejemplo-autenticar.conf:
vim /etc/httpd/conf.d/ejemplo-autenticar.conf
Añada con el siguiente contenido:
Alias /privado /var/www/privado
<Directory "/var/www/privado">
	Options Indexes
	AllowOverride All
	Order allow,deny
	Allow from all
</Directory>
Para que surtan efecto los cambios hechos a la configuración, recargue el servicio httpd:
service httpd reload
Genere el archivo /var/www/privado/.htaccess.
vim /var/www/privado/.htaccess
Agregue el siguiente contenido:
AuthName "Sólo usuarios autorizados"
AuthType Basic
Require valid-user
AuthUserFile /var/www/claves
Genere el archivo de claves de acceso como /var/www/claves, ejecutando el siguiente procedimiento:
touch /var/www/claves
Cambie los permisos de sólo lectura y escritura para usuario y cambie la propiedad al usuario y grupo apache:
chmod 600 /var/www/claves
chown apache:apache /var/www/claves
Agregue algunos usuarios virtuales al archivo de claves, /var/www/claves, ejecutando el mandato htpasswd, usando como argumentos la ruta del archivo de claves de acceso y nombre del usuario a añadir o modificar:
htpasswd /var/www/claves fulano
htpasswd /var/www/claves mengano
htpasswd /var/www/claves perengano
htpasswd /var/www/claves zutano
Asumiendo que realizará la prueba desde el mismo anfitrión local, acceda con cualquier navegador hacia http://127.0.0.1/privado/ y compruebe que funciona el acceso con autenticación, utilizando cualquiera de los dos usuarios virtuales que generó con el mandato htpasswd, es decir fulano o mengano.
Si desea realizar las comprobaciones desde el mismo anfitrión, puede utilizar el navegador Lynx.
lynx http://127.0.0.1/privado/

Asignación de directivas para PHP.

Suelen darse los casos donde una aplicación, escrita en PHP, requiere algunas directivas de PHP en particular. En muchos casos se llegan a necesitar variables que pueden comprometer la seguridad de otras aplicaciones hospedadas en el servidor. Para tal fin es que se puede evitar modificar el archivo /etc/php.ini utilizando el parámetro php_flag en un archivo .htaccess. La siguiente sintaxis es la siguiente:
php_flag directiva_php valor

Ejemplo

Se procederá a asignar las directivas register_globals, magic_quotes_runtime, magic_quotes_gpc y upload_max_filesize al directorio en la ruta /var/www/aplicacion, mismo que será visualizado desde Apache como http://127.0.0.1/aplicacion/. El valor para register_globals será On (requerido sólo por aplicaciones PHP muy antiguas o muy mal escritas), el valor para magic_quotes_runtime será On, el valor para magic_quotes_gpc será On y el valor para upload_max_filesize será 8M.
Genere el directorio /var/www/aplicacion ejecutando lo siguiente:
mkdir /var/www/aplicacion
Genere el archivo /etc/httpd/conf.d/ejemplo-directivas-php.conf ejecutando lo siguiente:
vim /etc/httpd/conf.d/ejemplo-directivas-php.conf
Añada el siguiente contenido:
Alias /aplicacion /var/www/aplicacion
<Directory "/var/www/aplicacion">
	AllowOverride All
</Directory>
Genere el archivo /var/www/aplicacion/.htaccess realizando lo siguiente:
touch /var/www/aplicacion/.htaccess
Edite el archivo /var/www/aplicacion/.htaccess y agregue el siguiente contenido:
php_flag register_globals On
php_flag magic_quotes_gpc On
php_flag magic_quotes_runtime On
php_value upload_max_filesize 8M
Genere el archivo /var/www/aplicacion/info.php, una función que muestra toda la información acerca de PHP en el servidor, a fin de corroborar los valores de las directivas de PHP en relación al directorio, con el siguiente contenido:
<?php
     phpinfo();
?>
Para que surtan efecto los cambios hechos a la configuración, recargue el servicio httpd:
service httpd reload
Acceda con cualquier navegador de red hacia http://127.0.0.1/aplicacion/info.php.
Si desea realizar las comprobaciones desde el mismo anfitrión, puede utilizar el navegador Lynx.
lynx http://127.0.0.1/aplicacion/info.php
Corrobore que los valores para las variables de PHP para el directorio involucrado realmente han sido asignadas. En la sub-sección PHP Core de la sección Configuration, hay tres columnas. La primera, Directive, corresponde a la directivas PHP. La segunda, Local Value, corresponde a los valores de las directivas de PHP para el directorio actual. La tercera, Master Value, corresponde a los valores de las directivas predeterminadas que están definidas en el archivo /etc/php.ini.
DirectiveLocal ValueMaster Value
magic_quotes_gpc On Off
magic_quotes_runtime On Off
register_globals On Off
upload_max_filesize 8M 2M

Re-dirección de directorios.

Cuando sea necesario, es posible configurar un directorio en particular para Apache redirija éste de modo transparente hacia cualquier otra dirección.
Genere el archivo denominado arbitrariamente como /etc/httpd/conf.d/ejemplo-redireccion.conf, reemplazando http://mail.docminio.tld/ por cualquier dirección válida.
vim /etc/httpd/conf.d/ejemplo-redireccion.conf
Añada el siguiente contenido:
Redirect 301 /webmail http://mail.dominio.tld/
Guarde el archivo y regrese al intérprete de mandatos.
Para que surtan efecto los cambios hechos a la configuración, recargue el servicio httpd:
service httpd reload
En el ejemplo anterior, se indica que si se trata de acceder hacia el sub-directorio /webmail en el servidor, Apache deberá redirigir hacia http://mail.dominio.tld/. El número 301 corresponde al mensaje del protocolo HTTP para indicar que la re-dirección es permanente. Si por ejemplo hubiese un objeto en /webmail, como por ejemplo /webmail/estadisticas/estadisticas.php, Apache realizaría el re-direccionamiento transparente hacia http://mail.dominio.tld/estadisticas/estadisticas.php.

Tipos de MIME.

Para añadir cualquier tipo de extensión y tipo MIME, como por ejemplo Ogg, definiendo además una descripción e icono, genere un archivo que denominado /etc/httpd/conf.d/mimes.conf:
vim /etc/httpd/conf.d/mimes.conf
Añada el siguiente contenido:
AddType application/ogg .ogg
AddDescription "Ogg Vorbis Audio" .ogg
AddIcon /icons/sound2.png .ogg
Para que surtan efecto los cambios hechos a la configuración, recargue el servicio httpd:
service httpd reload
Copie o transfiera cualquier archivo de audio Ogg Vorbis a cualquier directorio compartido a través de Apache que permita ver el índice de éste y visualice el resultado.

Impedir enlace remoto de imágenes.

Suele ocurrir que los administradores de algunos sitios encuentran fácil utilizar imágenes y otros tipos de contenido, vinculando desde sus documentos hacia los objetos en el servidor. Ésto representa un consumo ancho de banda adicional para el servidor, que sólo genera tráfico inútil y por lo tanto es considerado una práctica poco ética. En el siguiente ejemplo se desea proteger un directorio para que sólo se permita utilizar su contenido si es referido desde el mismo servidor.

Genere el directivo /var/www/imagenes ejecutando lo siguiente:
mkdir /var/www/imagenes
Copie o transfiera archivos de imágenes dentro de este directorio.
cp /usr/share/pixmaps/*.png /var/www/imagenes
Genere el archivo /etc/httpd/conf.d/imagenes.conf ejecutando lo siguiente:
vim /etc/httpd/conf.d/imagenes.conf
Añada el siguiente contenido:
# Se permite acceder directamente a la imagen o bien si se omite
# en el navegador la información del referente.
SetEnvIfNoCase Referer "^$" local_referal=1
# Se permite al propio servidor
SetEnvIfNoCase Referer "^http://127.0.0.1" local_referal=1
SetEnvIfNoCase Referer "^http://localhost" local_referal=1
SetEnvIfNoCase Referer "^http://localhost.localdomain" local_referal=1
SetEnvIfNoCase Referer "^http://192.168.70.50" local_referal=1
SetEnvIfNoCase Referer "^http://m50.alcancelibre.org.mx" local_referal=1
SetEnvIfNoCase Referer "^http://(www.)?midominio.org" local_referal=1
# Se permite utilizar las imágenes a otro servidor
SetEnvIfNoCase Referer "^http://(www.)?sitio-amigo.org" local_referal=1

Alias /imagenes /var/www/imagenes
<Directory  "/var/www/imagenes">
	Order Deny,Allow
	Deny from all
	Allow from env=local_referal
</Directory>
Para que surtan efecto los cambios hechos a la configuración, recargue el servicio httpd:
service httpd reload
Pruebe la configuración creando un documento HTML en el anfitrión local y en un anfitrión remoto, el cual enlace hacia imágenes hospedadas en el directorio /var/www/imagenes del servidor recién configurado, y compare resultados.
En lugar de lo anterior, puede utilizarse también un archivo .htaccess. Edite el archivo /etc/httpd/conf.d/imagenes.conf ejecutando lo siguiente:
vim /etc/httpd/conf.d/imagenes.conf
Reemplace el contenido existente por lo siguiente:
Alias /imagenes /var/www/imagenes
<Directory  "/var/www/imagenes">
	AllowOverride all
</Directory>
Para que surtan efecto los cambios hechos a la configuración, recargue el servicio httpd:
service httpd reload
Genere el archivo /var/www/imagenes/.htaccess:
vim /var/www/imagenes/.htaccess
Añada el siguiente contenido:
# Se permite acceder directamente a la imagen o bien si se omite
# en el navegador la información del referente.
SetEnvIfNoCase Referer "^$" local_referal=1
# Se permite al propio servidor
SetEnvIfNoCase Referer "^http://127.0.0.1" local_referal=1
SetEnvIfNoCase Referer "^http://localhost" local_referal=1
SetEnvIfNoCase Referer "^http://localhost.localdomain" local_referal=1
SetEnvIfNoCase Referer "^http://192.168.70.50" local_referal=1
SetEnvIfNoCase Referer "^http://m50.alcancelibre.org.mx" local_referal=1
SetEnvIfNoCase Referer "^http://(www.)?midominio.org" local_referal=1
# Se permite utilizar las imágenes a otro servidor
SetEnvIfNoCase Referer "^http://(www.)?sitio-amigo.com" local_referal=1

Order Deny,Allow
Deny from all
Allow from env=local_referal
Pruebe la configuración creando un documento HTML en el anfitrión local y en un anfitrión remoto, el cual enlace hacia imágenes hospedadas en el directorio /var/www/imagenes del servidor recién configurado, y compare resultados.

Fuente: http://www.alcancelibre.org/staticpages/index.php/como-apache?query=servidor+http

No hay comentarios:

Publicar un comentario