INSTALACION Y CONFIGURACION DE SERVIDOR PROXY

Anuncio
INSTALACION Y CONFIGURACION DE SERVICIO PROXY TRANSPARENTE
MANUEL ELISEO OSORIO JAIMES
CÓDIGO: 1150715
UNIVERSIDAD FRANCISCO DE PAULA SANTANDER
PROGRAMA DE INGENIERIA
INGENIERIA DE SISTEMAS
2016
INSTALACION Y CONFIGURACION DE SERVICIO PROXY TRANSPARENTE
MANUEL ELISEO OSORIO JAIMES
CÓDIGO: 1150715
PROFESOR: JEAN POLO SQUEDA OLAGO
UNIVERSIDAD FRANCISCO DE PAULA SANTANDER
PROGRAMA DE INGENIERIA
INGENIERIA DE SISTEMAS
2016
TABLA DE CONTENIDO
INTRODUCCION
4
OBJETIVOS
5
CONCEPTO DE PROXY
6
INTRODUCCION A ARCHIVOS PAC
7
INTRODUCCION A WPAD
8
INSTALACION
11
CONFIGURACION BÁSICA
12
CONFIGURACION DE LAS IPTABLES
19
CONFIGURACION DE WPAD
20
CONFIGURACION DEL SERVIDOR APACHE
22
CONFIGURACION DEL DNS
24
PRUEBA DEL SERVIDOR PROXY
25
BIBLIOGRAFIA
27
INTRODUCCIÓN
Proxy es un servicio que funciona de intermediario entre los clientes a otro servidor,
de tal forma que el tráfico de las peticiones del cliente a las maquinas externas pasa
por el servidor intermedio, esto provoca una situación estratégica que ofrece muchas
alternativas de manejo del tráfico como son: control de acceso, registro del tráfico,
restricción a determinados tipos de tráfico, mejora de rendimiento, anonimato de la
comunicación, caché web, etc. Dependiendo del contexto, la intermediación que
realiza el proxy puede ser considerada por los usuarios, administradores o
proveedores como legítima o delictiva y su uso es frecuentemente discutido.
Un servicio proxy ofrece más efectividad si es transparente. Transparente significa que
el usuario en la máquina del cliente no puede saber si su máquina está conectada a
un proxy ya que no tiene nada que le indique que esté conectado uno, por lo que se
puede manejar mejor en caso incurra en una artimaña para conectarse directamente.
La instalación y configuración de un proxy transparente se hace mediante tecnologías
como squid sumado a la configuración del protocolo WPAD, que a su vez esta se basa
en la utilización de servicios como DHCP y DNS para funcionar.
En este Trabajo se verá la instalación y configuración de un web-proxy transparente
utilizando la tecnología squid y valiéndose del protocolo WPAD en una máquina virtual
utilizando la distribución de GNU/LINUX fedora en su versión server 23.de 64 bits.
OBJETIVOS
Del presente documento se tienen como objetivos:

Definir y entender el concepto de Proxy, Proxy Web Trasparente e identificar
sus usos y los beneficios que trae su aplicación.

Conocer y analizar el funcionamiento del servidor web Squid en Fedora 23 para
su aplicación como servicio.

Realizar el proceso de instalación de Squid en Fedora 23.

Realizar las pruebas pertinentes al servicio para mirar su funcionamiento.
CONCEPTO DE PROXY
El término en ingles «Proxy» tiene un significado muy general y al mismo tiempo
ambiguo, aunque invariablemente se considera un sinónimo del concepto de
«Intermediario». Se suele traducir, en el sentido estricto, como delegado o apoderado
(el que tiene poder sobre otro).
Un Servidor Intermediario o Proxy se define como una computadora o dispositivo que
ofrece un servicio de red que consiste en permitir a los clientes realizar conexiones de
red indirectas hacia otros servicios de red. Durante el proceso ocurre lo siguiente:




Cliente se conecta hacia un Servidor Proxy.
Cliente solicita una conexión, archivo u otro recurso disponible en un servidor
distinto.
Servidor Intermediario proporciona el recurso ya sea conectándose hacia el
servidor especificado o sirviendo éste desde un caché.
En algunos casos el Servidor Intermediario puede alterar la solicitud del cliente
o bien la respuesta del servidor para diversos propósitos.
Los Servidores Proxy generalmente se hacen trabajar simultáneamente como muro
cortafuegos operando en el Nivel de Red, actuando como filtro de paquetes, como en
el caso de iptables, o bien operando en el Nivel de Aplicación, controlando diversos
servicios, como es el caso de TCP Wrapper. Dependiendo del contexto, el muro
cortafuegos también se conoce como BPD o Border Protection Device o simplemente
filtro de paquetes.
Una aplicación común de los Servidores Proxy es funcionar como caché de contenido
de Red (principalmente HTTP), proporcionando en la proximidad de los clientes un
caché de páginas y archivos disponibles a través de la Red en servidores HTTP
remotos, permitiendo a los clientes de la red local acceder hacia éstos de forma más
rápida y confiable.
Cuando se recibe una petición para un recurso de Red especificado en un URL
(Uniform Resource Locator) el Servidor Intermediario busca el resultado del URL
dentro del caché. Si éste es encontrado, el Servidor Intermediario responde al cliente
proporcionado inmediatamente el contenido solicitado. Si el contenido solicitado
estuviera ausente en el caché, el Servidor Intermediario lo traerá desde servidor
remoto, entregándolo al cliente que lo solicitó y guardando una copia en el caché.
El contenido en el caché es eliminado luego a través de un algoritmo de expiración de
acuerdo a la antigüedad, tamaño e historial de respuestas a solicitudes (hits)
(ejemplos: LRU, LFUDA y GDSF).
Los Servidores Proxy para contenido de Red (Web Proxies) también pueden actuar
como filtros del contenido servido, aplicando políticas de censura de acuerdo a criterios
arbitrarios.
Un proxy transparente combina un servidor proxy con NAT (Network Address
Translation) de manera que las conexiones son enrutadas dentro del proxy sin
configuración por parte del cliente, y habitualmente sin que el propio cliente conozca
de su existencia. Este es el tipo de proxy que utilizan los proveedores de servicios de
internet (ISP).
Introducción a archivos PAC
¿Qué es un archivo PAC?
Una configuración automática de proxy (PAC) es archivo contiene un conjunto de
reglas codificadas en JavaScript que permite a un navegador web para determinar si
se debe enviar el tráfico de Internet directamente a Internet o ser enviados a través de
un servidor proxy. Los archivos PAC pueden controlar cómo maneja un navegador web
HTTP, HTTPS y FTP,además proporcionan flexibilidad y redundancia de una manera
que no es posible en la actualidad al configurar un proxy explícito.
Un navegador que soporte PAC proporciona acceso a una lista de funciones como se
define en la especificación original de Netscape.
Cada navegador implementa la APA en una caja de arena, lo que permite el acceso
sólo a aquellas funciones de JavaScript necesarios para operar y nada más. A modo
de ejemplo, no es posible acceder a la cadena de agente de usuario del navegador en
un archivo PAC, una cadena disponible a una página web normal. Las funciones
soportadas y permitidas por el entorno de pruebas se documentan a continuación.
Introducción a WPAD
WPAD es una tecnología que ayuda a un navegador web para detectar
automáticamente la ubicación de un archivo PAC mediante DNS o DHCP.
Un navegador que soporte tanto DHCP y DNS primero intentará localizar un archivo
PAC mediante DHCP, y no debe existir una configuración de DHCP conmutará por
DNS Si ambos están configurados, un navegador dejará abierta.
WPAD de DHCP
DHCP de WPAD es un método para detectar la ubicación
el aprovechamiento de la infraestructura local de DHCP.
configurarse con una opción de almacenar la ubicación
navegador web puede consultar. Una vez que se ha
navegador web hará una petición para el archivo PAC.
del archivo PAC mediante
Un servidor DHCP puede
del archivo PAC, que un
encontrado la opción, el
Requisitos previos incluyen un archivo PAC, el servidor web, servidor DHCP, y para
cualquier computadora de usuario para ser configurados para obtener su información
de la dirección IP de red del servidor DHCP.
Ejemplo
En el siguiente ejemplo, el nombre de red del ordenador del usuario es
laptop01.us.division.company.com.
Tras la carga, el navegador web emite una DHCPINFORM, solicitando que el servidor
DHCP proporciona una lista de opciones y sus configuraciones.
El servidor DHCP responde con un DHCP ACK mensaje, que contiene la lista de
opciones y configuraciones
Una de estas opciones, 252 , contiene la ubicación del archivo PAC. El navegador web
puede realizar una solicitud para descargar el archivo PAC.
WPAD de DNS
DNS de WPAD es un método para detectar un archivo PAC a través de
descubrimiento, aprovechando el nombre de red del ordenador del usuario y el uso de
una configuración de DNS coherente y PAC nombre de archivo de secuencia de
comandos. DNS de WPAD es el método más ampliamente apoyado, con el apoyo en
todos los principales navegadores y sistemas operativos.
Requisitos previos incluyen un archivo PAC, el servidor web y un nombre de host DNS
de acceso a nivel local para que apunte al servidor web.
Ejemplo
En el siguiente ejemplo, el nombre de red del ordenador del usuario es
laptop01.us.division.company.com.
Un archivo PAC con el nombre de archivo wpad.dat está siendo servido por un servidor
web en el host wpad.company.com.
Un navegador habilitado WPAD de DNS se eliminará el nombre de la máquina
(laptop01), aplique wpad al nombre de red, y aplicar como sufijo el recurso de archivo
/wpad.dat, por ejemplo, http: // wpad .us.division.company.com / wpad.dat .
El navegador intentará descargar el archivo
http://wpad.us.division.company.com/wpad.dat.
PAC
desde
la
ubicación
Si el navegador web no puede resolver el host wpad.us.division.company.com,
progresará a través de la jerarquía de nodos sub-dominio y tratar de descargar el
archivo desde el host wpad.dat wpad.division.company.com, y así sucesivamente
hasta que se alcanza el nodo válido más bajo, wpad.company.com.
INSTALACIÓN Y CONFIGURACIÓN DE UN SERVIDOR PROXY TRANSPARENTE
CON SQUID
El proceso de instalación y configuración se hizo sobre una máquina virtual con
GNU/Linux Fedora 23
INSTALACIÓN
Para realizar el proceso de instalación abra una terminal y estando registrado como
súper-usuario (en caso de que no esté registrado como súper-usuario escriba use el
comando “su” y posteriormente escriba su contraseña de root) y escribir el siguiente
comando y posteriormente de enter
[root@nombreHost Directorio]# dnf install squid
Una vez instalado los archivos de configuración se instalarán en el directorio
/etc/squid/, en esta carpeta se encuentra el archivo principal de configuración llamado
squid.conf.
CONFIGURACION BÁSICA12
Lo siguiente es establecer una configuración para nuestro servidor proxy. Existe un
gran número de parámetros, pero se recomienda utilizar los siguientes





Al menos una lista de control de acceso
Al menos una regla de control de acceso
http_port
cache_dir
error_directory, sólo si van a personalizar mensajes de error
Controles de acceso
Para poder controlar el tráfico de los clientes hacia Internet, es necesario establecer
Listas de Control de Acceso que definan una red o bien ciertos anfitriones en particular.
A cada lista se le asignará una Regla de Control de Acceso que permitirá o denegará
el acceso a Squid.
Listas de control de acceso
De modo predeterminado Squid habilita el acceso a todas las redes locales, definidas
en el RFC1918. Es decir, permite el acceso a 10.0.0.0/8, 172.16.0.0/12,
192.168.0.0/16, fc00::/7 y fe80::/10.
Regularmente una lista de control de acceso se establece con la siguiente sintaxis:
acl [nombre de la lista] src [lo que compone a la lista]
Si se desea establecer una lista de control de acceso que abarque a toda la red local,
basta definir la IP correspondiente a la red y la máscara de la sub-red. Por ejemplo, si
se tiene una red donde los anfitriones tienen direcciones del segmento IP
192.168.1.0/24, se puede utilizar lo siguiente: acl localnet src 192.168.1.0/24
También puede definirse una Lista de Control de Acceso especificando un archivo
localizado en cualquier parte del disco duro y la cual contiene una lista de direcciones
IP. Ejemplo: acl lista1 src “/etc/squid/listas/lista1.conf”
También se puede bloquear o permitir dominios y extensiones en las listas de control
de acceso con la siguiente sintaxis:
para dominios:
acl prohibidas url_regex “/etc/squid/listas/prohibidas.txt” este archivo se crearía
posteriormente en la dirección /etc/squid/ y su contenido sería dominios por ej:
youtube.com, ufps.edu.co, etc.
para extensiones:
acl palabras urlpath_regex “/etc/squid/listas/palabras.txt” este archivo se crearía
posteriormente en la dirección /etc/squid/ y su contenido serían extensiones escritas
de esta forma: \. (la extensión) $ por ej: \.exe$
como se puede ver estos archivos están ubicados en una carpeta que se creó llamada
listas esto se hace con el comando:
#mkdir listas
El contenido de cada uno de estos archivos es el siguiente.
ya creados los archivos procedemos a abrir el archivo ubicado en el directorio
/etc/squid/ y puesto que ya estamos en esa ubicación (confirmarlo con el comando
pwd) escribimos el comando nano squid.conf
posteriormente se crean las reglas de control de acceso que son:
acl redLan src 192.168.1.0/24
acl palabras url_regex "/etc/squid/listas/palabras.txt"
acl prohibidas url_regex "/etc/squid/listas/prohibidas.txt"
Luego nos disponemos a hacer las reglas de control de acceso:
Reglas de Control de Acceso
Estas definen si se permite o deniega acceso hacia Squid. Se aplican a las Listas de
Control de Acceso. Deben colocarse en la sección de reglas de control de acceso
definidas por el administrador, es decir, a partir de donde se localiza la siguiente
leyenda:
#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
La sintaxis básica de una regla de control de acceso es la siguiente:
http_access [deny o allow] [lista de control de acceso](En donde deny son las
listas denegadas o prohibidas y allow son las permitidas)
Para desactivar la configuración predeterminada y poder utilizar una diferente, localice
La línea que incluye http_access allow localnet.
en nuestro caso vamos a utilizar una configuración diferente por lo tanto vamos a
desactivarla comentando, esto se hace anteponiendo un numeral a la línea de esta
forma
También nos disponemos a crear las reglas de control de acceso para cada uno de las
listas:
Otras configuraciones:
Opción http_port
Este opción es utilizado para indicar el puerto a través del cual escuchará peticiones
Squid. EL valor predeterminado es 3128.
El puerto estándar designado para servidores de caché de Internet (webcache) es el
puerto 8080.
http_port 8080
La opción permite establecer también si se quiere utilizar una dirección IP en particular.
Esto añade mayor seguridad al servicio, pues si se tiene dos tarjetas de red, una con
una dirección IP pública y otra con una dirección IP privada, se puede establecer que
Squid solo permita conexiones desde la dirección IP privada.
http_port :8080
Si se necesita configurar un servidor proxy en modo transparente, solo es necesario
añadir la opción intercept
http_port intercept
En nuestro caso se escuchará por el puerto por defecto 8080 y lo colocaremos como
transparente
Opción cache_mgr
Esta opción es de carácter informativo. De modo predeterminado, si algo ocurre con
el caché, como por ejemplo que muera el proceso, se enviará un mensaje de aviso a
la cuenta web master del servidor. Puede especificarse una distinta si acaso se
considera conveniente.
Opción cache_mem.
La opción cache_mem establece la cantidad ideal de memoria para lo siguiente:


Objetos en tránsito.
Objetos frecuentemente utilizados (Hot).

Objetos negativamente almacenados en el caché.
Los datos de estos objetos se almacenan en bloques de 4 Kb. La opción cache_mem
especifica un límite máximo en el tamaño total de bloques acomodados, donde los
objetos en tránsito tienen mayor prioridad. Sin embargo, los objetos frecuentemente
utilizados (Hot) y aquellos negativamente almacenados en el caché, podrán utilizar la
memoria sin utilizar hasta que esta sea requerida. De ser necesario, si un objeto en
tránsito es mayor a la cantidad de memoria especificada, Squid excederá lo que sea
necesario para satisfacer la petición.
De modo predeterminado, desde la versión 3.1 de Squid, se establecen 256 MB, que
es más que suficiente para las necesidades de redes de área local con pocos
anfitriones. Puede especificar una cantidad menor para obtener un mejor rendimiento,
pues conviene utilizar la memoria disponible para hacer cache en memoria de muchos
objetos pequeños que son frecuentemente visitados, que hacer cache de unos pocos
objetos grandes que sólo unos pocos usuarios aprovecharán.
En nuestro caso se establecieron 512 MB por lo tanto la sintaxis seria:
cache_mem 512
Opción cache_dir
Este opción se utiliza para establecer que tamaño se desea que utilice Squid para
almacenamiento de caché en el disco duro. De modo predeterminado Squid utilizará
el formato ufs para crear en el directorio /var/spool/squid un caché de 200 MB, dividido
en jerarquías de 16 directorios subordinados, hasta 256 niveles cada uno:
cache_dir ufs /var/spool/squid 200 16 256
por defecto el cache_dir está comentado procedemos a des comentar quitando el #
Con todos estos cambios ya tendríamos nuestro servidor proxy configurado,
procedemos a presionar Ctrl+x y posteriormente escribimos s y damos enter.
Por ahora solo tenemos el proxy configurado de manera ordinaria y no transparente,
es decir, para que funcione en los host clientes que tiene que configurarse la dirección
del servidor proxy y su puerto (en nuestro caso seria 192.168.1.47 por el puerto 8080)
Iniciando, reiniciando y añadiendo el servicio al arranque del sistema.
Una vez terminada la configuración, ejecute el siguiente mandato para iniciar por
primera vez Squid:
service squid start
Si necesita volver a cargar la configuración para probar cambios realizados, sin
detener el servicio, ejecute lo siguiente:
service squid reload
Si necesita reiniciar para probar cambios hechos en la configuración, considerando
que este proceso puede llegar a demorar algunos minutos, ejecute lo siguiente:
service squid restart
Si desea que Squid inicie de manera automática la próxima vez que inicie el sistema,
ejecute lo siguiente:
chkconfig squid on
Lo anterior habilitará a Squid en todos los niveles de ejecución
Configuración de las IPTABLES
Ejecutamos la orden # nano /etc/sysconfig/iptables
Esta es la configuración por defecto
Para comentar una línea utilizamos el comodin “#” , comentamos las que estan
marcadas.
Ingresamos estas reglas
Como configuramos Squid para escuchar peticiones por el puerto 8080 y que la red de
área
local corresponde a 192.168.1.0/24, abrimos los puertos 80/TCP (http) y 8080/TCP
(webcache) del servidor y cerramos la salida desde la red de área local hacia los
puertos 20 (ftp-data), 21 (ftp), 22 (ssh) y 443 (https) en el exterior.
Guardamos los cambios (al salir del editor nano)
Posteriormente guardamos los cambios con systemctl restart squid.service
CONFIGURACION DE WPAD
Se crea el directorio /var/www/wpad con permisos de acceso y escritura para usuario
y de
acceso para grupo y otros (rwxr-xr-x).
mkdir -m 0755 /var/www/wpad
Se crea el archivo /var/www/wpad/wpad.dat
y se modifica según sus configuraciones de DNS e IP’s.
function FindProxyForURL(url, host)
{
if (
isInNet(host, "192.168.1.0", "255.255.255.0")
|| isInNet(host, "127.0.0.0", "255.0.0.0")
|| shExpMatch(host, "192.168.1.*")
|| shExpMatch(host, "127.*" )
|| shExpMatch(host, "localhost")
|| shExpMatch(host, "*.osornet.asor")
|| isPlainHostName(host)
|| dnsDomainIs(host, ". osornet.asor")
){
return "DIRECT";
}
else
{
return "PROXY dns1.osornet. asor:8080";
}
}
Es indispensable que el archivo /var/www/wpad/wpad.dat tenga permisos de lectura
para todos, de otro modo será imposible compartirlo a través del servicio httpd.
chmod a+r /var/www/wpad/wpad.dat
CONFIGURACION DEL SERVIDOR APACHE
Se crea el archivo wpad.conf
nano /etc/httpd/conf.d/wpad.conf
los valores resaltados se cambian según sus configuraciones de DNS e IP’s
<VirtualHost *:80>
ServerName wpad.osornet.asor
ServerAlias wpad
DocumentRoot /var/www/wpad
ErrorLog logs/wpad-error_log22
CustomLog logs/wpad-access_log combined
<Directory "/var/www/wpad">
AddType application/x-ns-proxy-autoconfig .dat
DirectoryIndex wpad.dat
<IfModule mod_authz_core.c>
# Apache 2.4
Require local
Require ip 192.168.1.0/24
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Deny from all
Allow from 127.0.0.0/8 192.168.1.0/24
</IfModule>
</Directory>
</VirtualHost>
Se reinicia el servicio:
systemctl restart httpd
CONFIGURACION DEL SERVIDOR DNS
Agregamos las siguientes lineas para que el servidor resuelva el nombre de
wpad.ajar.asor.local
nano /var/named/osornet.asor.zona
PRUEBA DEL SERVIDOR PROXY
Para probar los funcionamientos de squid vaya al navegador y escriba los dominios a
probar en la barra de direcciones, en este caso probaremos con los prohibidos que
están en el archivo /var/squid/listas/prohibidas.txt, si el servicio squid funciona bien
entonces no debería poder acceder a estas direcciones.
Bibliografía:
Servidor
proxy.
(2016).
Es.wikipedia.org.
https://es.wikipedia.org/wiki/Servidor_proxy
Retrieved
10
May
2016,
from
Web Proxy Autodiscovery Protocol. (2016). Wikipedia. Retrieved 10 May 2016, from
https://en.wikipedia.org/wiki/Web_Proxy_Autodiscovery_Protocol
Web Proxy Autodiscovery Protocol. (2016). Wikipedia. Retrieved 10 May 2016, from
https://en.wikipedia.org/wiki/Web_Proxy_Autodiscovery_Protocol
FindProxyForURL.
(2016).
http://findproxyforurl.com/
Findproxyforurl.com.
Retrieved
10
May
2016,
from
Descargar