Servidores Proxy

La manera m�s sencilla de poner en funcionamiento Apache en nuestro sistema es instalar una versi�n en RPM ya sea desde el CD de nuestra distribuci�n o desde por ejemplo nuestra zona privada, ninguna versi�n anterior a la 1.1 es recomendada y nosotros aconsejamos l�gicamente obtener la m�s actualizada posible.

Para instalar una versi�n en RPM como ya sabemos, simplemente tenemos que ejecutar como usuario root la siguiente orden:

rpm -i apache-1.3.27-2.i386.rpm

(El RPM indicado viene con la distribuci�n de RedHat 7-3 y es el que utilizaremos para realizar esta documentaci�n).

Una vez instalado nuestro servidor Apache �nicamente tenemos que editar el fichero de configuraci�n de Apache llamado httpd.conf (generalmente situado en /etc/httpd/conf/httpd.conf), ya que el m�dulo para la funci�n de Proxy ya estar� compilado y �nicamente tendremos que cargarlo.

Para activarlo simplemente descomentar las dos siguientes l�neas:

#Load Module proxy_module /usr/liblapache/libproxy.so
#AddModule mod_proxy.c

Una vez descomentadas las dos l�neas ya tenemos cargada la funcionalidad de Proxy-Cach� y podremos pasar a configurar y utilizar las directivas deseadas.

.�Instalaci�n mediante c�digo fuente

En caso que ya tengamos una versi�n de Apache en nuestro sistema y no aparezcan las dos l�neas descritas en Instalaci�n mediante RPM, posiblemente no tengamos compilado el m�dulo para poder utilizar el servidor como Proxy. En este caso deber�amos comprobar si disponemos de la librer�a libproxy.so en nuestro sistema, si es as�, simplemente a�adimos las dos l�neas que faltan en httpd.conf. En caso de no disponer de la librer�a, debemos recompilar e instalar el c�digo fuente.

Recomendamos guardar el archivo httpd.conf si deseamos conservar nuestra configuraci�n actual. Una vez estemos seguros que no disponemos de la librer�a libproxy.so, podemos proceder a la descarga del paquete con el c�digo fuente desde www.apache.org.

Para descomprimir el paquete utilizar la siguiente orden:

tar -xzvf apache_1.3.27.tar.gz

Una vez descomprimido el paquete debemos de ejecutar el siguiente script con los siguientes par�metros:

./configure -prefix=/usr/local/apache

Esta orden permite especificar el directorio donde se instalar� el servidor apache (deber�amos especificar el mismo que ten�amos). Una vez realizado esto se generar�n los Makefiles y un nuevo fichero llamado config.status que act�a como script para seguir configurando. Por tanto indicaremos los m�dulos que queremos instalar que en �ste caso ser�n: el modulo para poder utilizar m�dulos y el m�dulo para Proxy, tal como mostramos a continuaci�n:

./config.status --active-module=src/modules/standard/mod_so.c
./config.status -enable-module=proxy

Una vez hemos realizados los pasos indicados, simplemente tenemos que compilar el c�digo fuente mediante la orden make all y posteriormente indicar que se instale en el sistema mediante make install.

.�Ejemplo de configuraci�n de sus directivas

En �ste apartado mostramos un peque�o ejemplo de las directivas que deber�an de situarse descomentadas dentro del fichero httpd.conf para poder utilizar el servidor Apache como Proxy y como Proxy con cach�.

<If Module mod_proxy.c>
#Directivas para realizar funci�n de Proxy
ProxyRequest On
Listen 80
Listen 8087
AllowCONNECT 443 563 23
ProxyBlock www.sex.com www.microsoft.com
#ProxyRemote * http://192.168.0.84:8087
#NoProxy www.hotmail.com
#ProxyPass / http://192.168.0.84/
#ProxyPassReverse / http://192.168.0.84/
<Directory proxy:*>
  Order deny, allow
  Deny from all
  Allow from .informatica.escoladeltreball.org
</Directory>
ProxyVia Full

#Directivas para realizar la funci�n de cach�
CacheRoot "/var/cache/httpd"
CacheSize 50000
CacheGcInterval 1
CacheMaxExpire 24
CacheLastModifiedFactor 0.1
CacheDefaultExpire 3
CacheForceCompletion 90
#NoCache pc47.informatica.escoladeltreball.org
</IfModule>

En el siguiente apartado se describe el significado y la utilidad de las directivas en el orden presentado.

.�Explicaci�n de las directivas

Una vez presentadas las directivas describiremos su utilidad y funcionamiento para una mayor comprensi�n de las posibilidades de Apache-Proxy.

.�ProxyRequest (Activar Proxy)

Esta directiva permite activar o desactivar la funci�n de Proxy. Tener en cuenta que se anular�n todas las directivas tanto para funciones de cach� como de Proxy, excepto la directiva ProxyPass.

Sus valores pueden ser On u Off tal como se muestra a continuaci�n y solo est� disponible en Apache 1.1 y superiores.

ProxyRequest On
ProxyRequest Off

.�Listen (Asignar Puerto)

Permite indicar a Apache que escuche peticiones en m�s de una direcci�n IP o puerto. Por defecto si no especificamos ninguna IP escucha para todas, pero solo para el puerto indicado.

Sus valores pueden ser [direcci�n-IP:]puerto tal como se muestra a continuaci�n y solo est� disponible en Apache 1.1 y superiores.

Listen 8087
Listen 80
Listen 192.168.0.87:8080

.�AllowCONNECT (Permitir m�todo CONNECT)

Permite especificar una lista de puertos a los que el Proxy mediante el m�todo CONNECT quiz� conecte.

Sus valores pueden ser port [port]... tal como se muestra a continuaci�n y solo est� disponible en Apache 1.3.2 y superiores.

AllowCONNECT 443 563 23

Son los puertos que utiliza HTTPS, SNEWS y telnet respectivamente.

Un ejemplo pr�ctico

Para probar su funcionamiento utilizaremos el cliente telnet con el fin de realizar una conexi�n a un host remoto a trav�s del Proxy mediante el protocolo HTTP.

  1. Hacemos un telnet al servidor Proxy en el puerto que est� escuchando.
    telnet 192.168.0.87 8087
  2. Una vez realizada la conexi�n, el cliente telnet espera que le indiquemos una petici�n. Conectamos desde el Proxy al ordenador deseado mediante el puerto 23 que utiliza telnet.
    CONNECT 192.168.0.84:23 http/1.0
  3. Presionamos la tecla Enter y la sesi�n telnet se realiza a trav�s del Proxy y l�gicamente mantenida por �ste ya que si desactivamos Apache con la orden: service httpd stop, la conexi�n se pierde.

.�ProxyBlock (Control acceso URL, control seg�n destino)

Bloquea peticiones HTTP, HTTPS y FTP de documentos que contengan en su direcci�n la palabra, el host o el dominio especificado.

Sus valores pueden ser *|word|host|domain [word|host|domain]... tal como se muestra a continuaci�n y solo est� disponible en Apache 1.2 y superiores.

ProxyBlock www.sex.com rocky.wotsamattau.edu
ProxyBlock *

Tener en cuenta que especificar la palabra "sex" ya es suficiente para bloquear direcciones como: www.sex.com www.sexista.com http://sexologia.com y que utilizar el "*" significa bloquear todas las peticiones.

Adem�s, esta directiva es muy interesante ya que en caso de enviar las peticiones a un Proxy remoto mediante la directiva ProxyRemote, el bloqueo se contin�a realizando y por tanto se podr�an utilizar Proxys para restringir el acceso a determinados usuarios y un Proxy remoto para realizar las peticiones que se hubieran permitido.

.�ProxyRemote (Desviar a un Proxy, control seg�n destino)

Permite indicar que p�ginas web ser�n gestionadas por un servidor Proxy remoto, es decir ser� el remoto quien realizar� la petici�n al servidor y la cachear�.

Sus valores pueden ser URL http://hostname[:port] tal como se muestra a continuaci�n y solo est� disponible en Apache 1.1 y superiores.

ProxyRemote http://hotmail.com/ http://192.68.0.84:8087
ProxyRemote * http://192.68.0.84:8087
ProxyRemote ftp http://192.68.0.84:8087

En la segunda l�nea se especifica que todas las peticiones de direcciones web las procesar� un servidor remoto y en la tercera que todas las peticiones ftp las gestionar� un servidor remoto.

.�NoProxy (No desviar a otro Proxy, control seg�n destino)

Esta directiva hace referencia a la directiva ProxyRemote y permite especificar que peticiones no las ha de enviar al Proxy remoto sino que las tiene que procesar �l directamente.

Sus valores pueden ser: domain|SubRed|IpAddress|Hostname [domain|SubRed|IpAddress|Hostname]..., tal como se muestra a continuaci�n y solo est� disponible en Apache 1.3 y superiores.

ProxyRemote * http://192.68.0.84:8087
NoProxy .company.com 192.168.112.0/21 www.hotmail.com

Los ejemplos mostrados corresponden a un dominio una subred y un hostname.

.�ProxyPass (Desviar contenidos a un nuevo web server)

Permite al servidor Proxy local actuar como un espejo del servidor que en realidad ahora est� sirviendo el contenido. Esta directiva es �til si en un pasado nuestro servidor Apache servia unos documentos web que ahora los sirve otro servidor, ya que no ser� necesario avisar a la gente del traslado y podr�n continuar haciendo la petici�n al servidor antiguo ya que la directiva redireccionar� sin que el usuario se d� cuenta de nada. Adem�s esta directiva sigue funcionando aunque deshabilitemos la funci�n de Proxy.

Sus valores pueden ser: path url, donde "path" es el nombre del antiguo "path virtual local" y "url" es una direcci�n parcial del servidor remoto, tal como se muestra a continuaci�n y solo est� disponible en Apache 1.1 y superiores.

ProxyPass /mirror/foo/ http://server2.org/

A la pr�ctica si nuestro servidor local tuviera la direcci�n http://server.org/ y ya no ofreciera el contenido web, al pedir http://server.org/mirror/foo/web.html se redireccionar�a la petici�n a http://server2.org/web.html.

Un ejemplo pr�ctico

Tenemos un servidor Apache que ya no contiene documentos, con la direcci�n IP: 192.168.0.87 y un nuevo servidor Apache con la direcci�n IP: 192.168.0.84 que se encargar� de servir los documentos a partir de ahora. Configuramos en el servidor 192.168.0.87 la directiva de redirecci�n:

ProxyPass / http://192.168.0.84/

Ahora con el cliente pedimos http://192.168.0.87/icons/ y recibimos los documentos todo y que ya no los tiene, debido a que autom�ticamente a realizado la petici�n a http://192.168.0.84/icons/.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
SIGUIENTE ARTÍCULO