SERVIDOR PROXY EN UBUNTU 2.docx

22
SERVIDOR PROXY EN UBUNTU ¿Qué es un proxy y cómo funciona? Un proxy es un programa o dispositivo que realiza una acción en representación de otro, esto es, si una hipotética máquina A solicita un recurso a una C, lo hará mediante una petición a B; C entonces no sabrá que la petición procedió originalmente de A. Esta situación estratégica de punto intermedio suele ser aprovechada para soportar una serie de funcionalidades: proporcionar caché, control de acceso, registro del tráfico, prohibir cierto tipo de tráfico, etc. Un proxy nos permite conectarnos a un equipo de forma indirecta. Cuando un equipo conectado a una red desea acceder a una información o recurso de Internet (llámese ver una página web, descargarnos un fichero mp3, o ver la última película de nuestro actor/actriz favorito), es realmente el proxy quien realiza la comunicación y a continuación envía el resultado al equipo que solicitó dicha información. La palabra proxy significa intermediario en inglés. El uso más común es el de servidor proxy, que es un ordenador que intercepta las conexiones de red que un cliente hace a un servidor de destino.

Transcript of SERVIDOR PROXY EN UBUNTU 2.docx

Page 1: SERVIDOR PROXY EN UBUNTU 2.docx

SERVIDOR PROXY EN UBUNTU

¿Qué es un proxy y cómo funciona?

Un proxy es un programa o dispositivo que realiza una acción en representación de otro, esto es, si una hipotética máquina A solicita un recurso a una C, lo hará mediante una petición a B; C entonces no sabrá que la petición procedió originalmente de A. Esta situación estratégica de punto intermedio suele ser aprovechada para soportar una serie de funcionalidades: proporcionar caché, control de acceso, registro del tráfico, prohibir cierto tipo de tráfico, etc.

Un proxy nos permite conectarnos a un equipo de forma indirecta. Cuando un equipo conectado a una red desea acceder a una información o recurso de Internet (llámese ver una página web, descargarnos un fichero mp3, o ver la última película de nuestro actor/actriz favorito), es realmente el proxy quien realiza la comunicación y a continuación envía el resultado al equipo que solicitó dicha información.

La palabra proxy significa intermediario en inglés.

El uso más común es el de servidor proxy, que es un ordenador que intercepta las conexiones de red que un cliente hace a un servidor de destino.

o De ellos, el más famoso es el servidor proxy web (comúnmente conocido solamente como «proxy»). Intercepta la navegación de los clientes por páginas web, por varios motivos posibles: seguridad, rendimiento, anonimato, etc.

o También existen proxy para otros protocolos, como el proxy de FTP.o El proxy ARP puede hacer de enrutador en una red, ya que hace de

intermediario entre ordenadores. Proxy (patrón de diseño) también es un patrón de diseño (programación) con el

mismo esquema que el proxy de red.

Page 2: SERVIDOR PROXY EN UBUNTU 2.docx

Un componente hardware también puede actuar como intermediario para otros.

Como se ve, proxy tiene un significado muy general, aunque siempre es sinónimo de intermediario. Cuando un equipo de la red desea acceder a una información o recurso, es realmente el proxy quien realiza la comunicación y a continuación traslada el resultado al equipo que la solicitó.

Hay dos tipos de proxys atendiendo a quien es el que quiere implementar la política del proxy:

proxy local: En este caso el que quiere implementar la política es el mismo que hace la petición. Por eso se le llama local. Suelen estar en la misma máquina que el cliente que hace las peticiones. Son muy usados para que el cliente pueda controlar el tráfico y pueda establecer reglas de filtrado que por ejemplo pueden asegurar que no se revela información privada (Proxy de filtrado para mejora de la privacidad).

proxy externo: El que quiere implementar la política del proxy es una entidad externa. Por eso se le llama externo. Se suelen usar para implementar cacheos, bloquear contenidos, control del tráfico, compartir IP, etc.

¿Cuándo y para qué sirve un proxy?

Control: sólo el intermediario hace el trabajo real, por tanto se pueden limitar y restringir los derechos de los usuarios, y dar permisos sólo al proxy.

Ahorro. Sólo uno de los usuarios (el proxy) ha de estar preparado para hacer el trabajo real. Con estar preparado queremos decir que es el único que necesita los recursos necesarios para hacer esa funcionalidad. Ejemplos de recursos necesarios para hacer la función pueden ser la capacidad y lógica de cómputo o la dirección de red externa (IP).

Velocidad. Si varios clientes van a pedir el mismo recurso, el proxy puede hacer caché: guardar la respuesta de una petición para darla directamente cuando otro usuario la pida. Así no tiene que volver a contactar con el destino, y acaba más rápido.

Filtrado. El proxy puede negarse a responder algunas peticiones si detecta que están prohibidas.

Modificación. Como intermediario que es, un proxy puede falsificar información, o modificarla siguiendo un algoritmo.

Como resumen, las principales funciones de Squid son las siguientes:

Permite el acceso web a máquinas privadas (IP privada) que no están conectadas directamente a Internet.

Controla el acceso web aplicando reglas. Registra el tráfico web desde la red local hacia el exterior. Controla el contenido web visitado y descargado.

Page 3: SERVIDOR PROXY EN UBUNTU 2.docx

Controla la seguridad de la red local ante posibles ataques, intrusiones en el sistema, etc.

Funciona como una caché de páginas web. Es decir, almacena las páginas web visitadas por los usuarios y de esta manera las puede enviar a otros usuarios sin tener que acceder a Internet de nuevo.

Guarda en caché las peticiones DNS e implementa una caché para las conexiones fallidas.

Registra logs de todas las peticiones cursadas. Soporta el protocolo ICP que permite integrar cachés que colaboran y permite

crear jerarquías de cachés y el intercambio de datos.

Como consecuencia de estas funciones, la implantación de un servidor proxy-caché en una red proporciona las siguientes ventajas:

Reduce los tiempos de respuesta.

Si la página web que se solicita está en la caché del servidor, ésta se sirve sin necesidad de acceder de nuevo al servidor original, con lo cual se ahorra tiempo.

Disminuye el tráfico en la red y el consumo de ancho de banda.

Si la página web está almacenada en la caché del servidor, la petición no sale de la red local y no será necesario hacer uso de la línea exterior consiguiendo así un ahorro en la utilización del ancho de banda.

Cortafuegos.

Cuando se utiliza un servidor proxy-caché, éste comunica con el exterior, y puede funcionar como cortafuegos, lo cual aumentará la seguridad del usuario respecto a la información a la que se acceda.

Filtrado de servicios.

Es posible configurar el servidor proxy-caché dejando sólo disponibles aquellos servicios (HTTP, FTP,...) que se consideren necesarios, impidiendo la utilización del resto.

¿Cómo es un servidor proxy transparente?

Muchas organizaciones (incluyendo empresas, colegios y familias) usan los proxies para reforzar las políticas de uso de la red o para proporcionar seguridad y servicios de caché. Normalmente, un proxy Web o NAT no es transparente a la aplicación cliente: debe ser configurada para usar el proxy, manualmente. Por lo tanto, el usuario puede

Page 4: SERVIDOR PROXY EN UBUNTU 2.docx

evadir el proxy cambiando simplemente la configuración. Una ventaja de tal es que se puede usar para redes de empresa.

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).

SQUID3

Es un servidor situado entre la máquina del usuario y otra red (a menudo Internet) que actúa como protección separarando las dos redes y como zona caché para acelerar el acceso a páginas web o poder restringir el acceso a contenidos.

Es decir, la función de un servidor proxy es centralizar el tráfico de una red local hacia el exterior (Internet). Sólo el equipo que incorpora el servicio proxy debe disponer de conexión a Internet y el resto de equipos salen a través de él.

Como las peticiones hacía Internet de los equipos de la red local son interceptadas por el servidor proxy, éste puede realizar una tarea de filtrado de accesos, impidiendo aquellos destinos que estén expresamente prohibidos en los archivos de configuración del servicio. Squid no es un filtro de contenidos pero puede actuar como tal.

En el aula se suele utilizar este servicio ya que permite llevar un control sobre la actividad de la red hacia el exterior del aula. En este caso lo usual es que el equipo que hace la función de servidor proxy disponga de dos interfaces de red. Una de ellas es utilizada para atender a la red local y la otra proporciona la conexión con Internet. Las peticiones de páginas web que se realizan desde el aula son interceptadas por la interfaz interna y reenviadas a la interfaz externa si cumplen los requisitos establecidos desde el servicio proxy.

Hay que tener en cuenta que la mayoría de los servidores web permiten la configuración como proxy-caché (Apache, IIS,...), pero Squid sólo es un proxy y no puede servir páginas por sí mismo.

Cuando decimos que Squid también funciona como caché significa que está guardando copia de los datos obtenidos de otras peticiones y de esa forma acelera el acceso a estos datos si se producen peticiones similares. Sólo se accederá de nuevo a las páginas originales cuando se detecte que se han producido modificaciones, es decir los datos almacenados difieren de los datos en el servidor web de origen.

Normalmente no existe una sola caché, sino que se tienen varios servidores (en máquinas diferentes) relacionados entre sí mediante una estructura en árbol.

Squid es un Servidor Intermediario (Proxy) de alto desempeño, que puede funcionar como Servidor Intermediario (Proxy) y caché de contenido de Red para los protocolos

Page 5: SERVIDOR PROXY EN UBUNTU 2.docx

HTTP, FTP, GOPHER y WAIS, Proxy de SSL, caché transparente, WWCP, aceleración HTTP, caché de consultas DNS, filtración de contenido y control de acceso por IP y por usuario.

Consiste básicamente en un programa principal como servidor, un programa para búsqueda en servidores DNS, programas opcionales para reescribir solicitudes y realizar autenticación y algunas herramientas para administración y y herramientas para clientes.

Al iniciar Squid da origen a un número configurable (5, de modo predefinido a través del parámetro dns_children) de procesos de búsqueda en servidores DNS, cada uno de los cuales realiza una búsqueda única en servidores DNS, reduciendo la cantidad de tiempo de espera para las búsquedas en servidores DNS.

No puede ser utilizado como Servidor Intermediario (Proxy) para protocolos como SMTP, POP3, TELNET, SSH, IRC, etc. Si se requiere intermediar para cualquier protocolo distinto a HTTP, HTTPS, FTP, GOPHER y WAIS se requerirá hacer uso de un servidor SOCKS como Dante

No se instala por defecto, pero se encuentra en los repositorios de Ubuntu, por lo que puede ser instalado a través de Synaptic, Aptitude o apt-get

La creación y configuración de un servidor proxy no transparente en Ubuntu 12.1 se realiza básicamente en 3 pasos:

1) Instalación del Squid3 Para instalar este servidor proxy simplemente se introduce el siguiente comando en la consola:

Esto instala todos los componentes necesarios del Squid3 en nuestra PC.Si no instala o nos devuelve algún error, a veces es necesario introducir el siguiente comando:

Esto actualiza nuestros repositorios, y ya se debería de poder instalar el squid3 finalizada la actualización.

2) Configuración del Squid3 Una vez instalado el squid3 procedemos a configúralo, para ello debemos modificar el archivo “/etc/squid3/squid.conf”, para ello introducimos en consola :

sudo apt-get install squid3

sudo apt-get update

sudo gedit /etc/squid3/squid.conf

Page 6: SERVIDOR PROXY EN UBUNTU 2.docx

Esto nos abrirá un archivo bastante grande en el cual realizaremos las siguientes modificaciones: (para facilitar podemos usar el buscador de palabras de gedit)

a. Localizar “http_port”: Este parámetro corresponde al puerto donde squid escuchara las peticiones.

Los puertos registrados recomendados para servidores intermediarios (Proxies) pueden ser el 3128 (por defecto) y 8080 a través de TCP.

http_port 3128

http_port 8080

Si se desea incrementar la seguridad, puede vincularse el servicio a una IP que solo se pueda acceder desde la red local. Considerando que el servidor utilizado posee una IP 10.10.7.15, puede hacerse lo siguiente:

http_port 10.10.7.15:3128

http_port 10.10.7.15:8080

b) Localizar “cache_mem”:

El parámetro cache_mem establece la cantidad ideal de memoria para lo siguiente:

Page 7: SERVIDOR PROXY EN UBUNTU 2.docx

Objetos en tránsito. Objetos frecuentemente utilizados (Hot). Objetos negativamente almacenados en el caché.

De modo predefinido se establecen 8 MB. Si se posee un servidor con al menos 128 MB de RAM, 16 MB es el valor para este parámetro:

cache_mem 16 MB

Aunque también es recomendable asignar la tercera parte de la memoria disponible.

c) Localizar “cache_dir”:

El parámetro cache_dir se utiliza para establecer que tamaño se desea que tenga el caché en el disco duro para Squid. De modo predefinido Squid utilizará un caché de 100 MB, de modo tal que encontrará la siguiente línea:

cache_dir ufs /var/spool/squid 100 16 256

Mientras más grande sea el caché, más objetos se almacenarán en éste y por lo tanto se utilizará menos el ancho de banda. La siguiente línea establece un caché de 700 MB:

Page 8: SERVIDOR PROXY EN UBUNTU 2.docx

cache_dir ufs /var/spool/squid 700 16 256

Los números 16 y 256 significan que el directorio del caché contendrá 16 directorios subordinados con 256 niveles cada uno.

d) Localizar “ACL”(Listas de control de acceso):

Las Listas de Control de Acceso definen una red o bien ciertas máquinas 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, se establecen 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 las máquinas tienen direcciones IP 10.140.111.n con máscara de sub-red 255.255.255.0, podemos utilizar lo siguiente:

acl miredlocal src 10.140.111.0/255.255.255.0

Notar que el ultimo digito del IP es ‘0’.

Page 9: SERVIDOR PROXY EN UBUNTU 2.docx

Más conveniente es definir 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.:

acl permitidos src "/etc/squid/permitidos"

El archivo /etc/squid/permitidos contendría algo como siguiente:

10.140.111.2

10.140.111.3

10.140.111.4

10.140.111.5

10.140.111.6

En caso de querer restringir el acceso de una pc, basta con eliminarla de la lista.

Es conveniente definir una Lista de Control de Acceso especificando los dominios bloqueados en un archivo localizado en cualquier parte del disco duro, y la cual contiene una lista de los dominios:

acl bloqueados dstdomain "/etc/squid/bloqueados"

El archivo /etc/squid/bloqueados contendría algo como siguiente:

www.microsoft.com

www.ibm.com

www.hotmail.com

Page 10: SERVIDOR PROXY EN UBUNTU 2.docx

En este caso el comando “url_regex” indica al proxy que busque en las direcciones las palabras clave que introduciremos, hay dos formas de hacerlo:

i. Escribir “acl noway url_regex Facebook YouTube Tutv”,en este caso el proxy impedirá el acceso a las cualquier página web que contenga dichas palabras.(Notar que cada nombre se debe separar con un espacio)

ii. Escribir “acl noway url_regex “/etc/squid3/nopermitidos””, en este caso el proxy accederá al archivo nopermitidos y buscara las palabras clave escritas en este. (Las palabras son una por línea)

e) Localizar “http_access”:

Las Reglas de control de Acceso definen si se permite o no el acceso hacia Squid. Se aplican a las Listas de Control de Acceso.

La sintaxis básica es la siguiente:

http_access [deny o allow] [lista de control de acceso]

En este ejemplo la regla que establece acceso permitido a Squid a la Lista de Control de Acceso denominada permitidos:

http_access allow permitidos

Page 11: SERVIDOR PROXY EN UBUNTU 2.docx

La expresión!, significa no. Pueden definirse así respecto de dos listas de control de acceso, lista1 y lista2, que se permite el acceso a Squid a lo que comprenda lista1 excepto aquello que comprenda lista2:

http_access allow lista1 !lista2

Esta regla es útil cuando se tiene un gran grupo de IP dentro de un rango de red al que se debe permitir acceso, y otro grupo dentro de la misma red al que se debe denegar el acceso.

Guardamos el archivo y procedemos a crear el archivo “/etc/squid3/nopermitidos”, para ello escribimos en consola:

En este archivo podemos escribir las palabras que queremos que bloquee el proxy, una por línea (para nuestro caso), o bien la lista de IP’s a denegar, para ello leer la parte de la configuración ACL.

sudo gedit /etc/squid3/nopermitidos

Page 12: SERVIDOR PROXY EN UBUNTU 2.docx

Guardamos el archivo y proseguimos a reiniciar el servicio squid, para ello escribimos en consola:

Si todo no nos devuelve ningún error, proseguimos. Notaremos que al acceder al navegador y escribir en nuestro navegador cualquier palabra o dirección que incluya las palabras no permitidas este accede normalmente, no se asusten que aún falta un paso de la configuración, ya que este es un proxy no transparente.

3) Configuración del proxy del navegador Ahora debemos acceder al nuestro navegador y configurar el proxy de este, en mi caso usaremos Mozilla.

sudo service squid3 restart

Page 13: SERVIDOR PROXY EN UBUNTU 2.docx
Page 14: SERVIDOR PROXY EN UBUNTU 2.docx
Page 15: SERVIDOR PROXY EN UBUNTU 2.docx
Page 16: SERVIDOR PROXY EN UBUNTU 2.docx

En Proxy HTTP debemos de poner la IP de nuestro servidor proxy y en Puerto el puerto que pusimos anteriormente, ahora recargamos nuevamente el navegador con la palabra no permitida y nos debería mostrar lo siguiente:

Adicionalmente podemos configurar el “visible_hostname”,”cache_mgr” y el idioma del error a mostrar.Configurar “visible_hostname”:Nos permite modificar el nombre del host de acceso, que por defecto es localhost. Podemos poner cualquier nombre y se encuentra en la parte mas inferior del mensaje.Editamos el archivo “/etc/squid3/squid.conf” ejecutando el comando:

sudo gedit /etc/squid3/squid.conf

Page 17: SERVIDOR PROXY EN UBUNTU 2.docx

Configurar “cahe_mgr”:Nos permite establecer el correo del administrador, por defecto es webmaster.

Page 18: SERVIDOR PROXY EN UBUNTU 2.docx

Configurar el idioma de error:A veces la pagina de error se muestra en otro idioma, para configurarlo debemos introducir la siguiente línea:

Esto indica a squid buscar el directorio de error, queda por sobreentendido que squid debe tener esos archivos, es decir, en mi caso, debe existir la siguiente ruta: “/usr/share/squid3/errors/es”, que es la carpeta español.

Como ya sabemos cualquier cambio en la configuración debemos reiniciar el servidor con:

sudo service squid3 restart

Page 19: SERVIDOR PROXY EN UBUNTU 2.docx