Está en la página 1de 59

PROXY

Un servidor proxy es un software que realiza tareas de servidor intermediario. El caso ms comn es utilizarlo para compartir internet en mbitos donde se posee una nica conexin a internet y varias computadoras. El servidor proxy se conecta directamente a internet y por otra interfaz a la red interna, de modo que todos los pedidos a internet de las computadoras pertenecientes a la LAN pasan a travs del proxy y es ste en realidad el que hace las conexiones hacia la web y luego entrega las respuestas a los hosts correspondientes. Un proxy, en una red informtica, es un programa o dispositivo que realiza una accin en representacin de otro, esto es, si una hipottica mquina A solicita un recurso a una C, lo har mediante una peticin a B; C entonces no sabr que la peticin procedi originalmente de A. Esta situacin estratgica de punto intermedio suele ser aprovechada para soportar una serie de funcionalidades: proporcionar cach, control de acceso, registro del trfico, prohibir cierto tipo de trfico etc.

CARACTERISTICAS:
Permite definir los permisos que tienen los usuarios de la red interna sobre los servicios, dominios, IP externas. Todos los usuarios de la red interna comparten una nica direccin IP de forma que desde el exterior no se puede diferenciar a unos de otros. Puesto que todo el trfico que circula de la red interna hacia internet y viceversa pasa por el proxy, se puede auditar

el uso que se hace de internet. Permite almacenar las pginas recientemente consultadas en una cache para aumentar el rendimiento de la red. Por ejemplo, la pgina que se almacena en la cach de un proxy para que al recibir la peticin cargue ms rpido. CONEXIONES SIN PROXY:

CONEXIONES CON PROXY:

SQUID
Dentro de los servidores ms importantes que existen en GNU/Linux existe el servidor proxy, el cual se encarga de administrar el acceso a internet de tu red local y tambin es conocido como servidor intermedio, el servidor proxy que se ocupa en GNU/Linux en sus diferentes distribuciones es squid. Squid es un programa que hace cache de datos obtenidos de internet para poder optimizar recursos de banda ancha de internet, entre sus caractersticas ms importantes son:

Proxy/cache: Proporciona servicio proxy a peticiones del tipo http, https y ftp a equipos que se encuentran en nuestra red local para que puedan acceder hacia internet y a su vez provee la funcionalidad de cache en el cual se almacenan localmente las paginas consultadas por los usuarios de forma que incrementa la rapidez de acceso a la informacin web y ftp. Proxy SSL: Es un servicio de squid compatible con SSL ( Secure Sockets Layer), con el cual se aceleran las peticiones y las peticiones hacia internet estaran cifradas. Jerarquas de Cache: Nuestro squid puede pertenecer a una jerarqua de cache que trabajan conjuntamente sirviendo peticiones. En este caso tendremos varios servidores squid resolviendo peticiones de una pgina web, si no la tiene registrada le pregunta a otro hasta que es encontrada la informacin. Compendio de ICP, HTCP, CARP, Cache: Squid sigue los compendios de protocolos ICP, HTCP, CARP y cach que tienen como objetivo permitir a un proxy "preguntarle" a otros proxys cach si poseen almacenado un recurso determinado. Proxy Transparente: Puede ser configurado para ser usado como proxy transparente de manera que las solicitudes son enrutadas por medio de reglas de firewall y sean enviadas al squid sin tener que configurar los clientes dentro de una red. WCCP: Permite interceptar y redirigir el trfico que recibe un router hacia uno o ms proxys cach, haciendo control de la conectividad de los mismos. Control de Accesos: En este parte establecemos reglas de control de acceso, esto permite establecer polticas de denegacin o aceptacin. Aceleracin de servidores HTTP: Cuando hacemos peticiones hacia internet la informacin es almacenada en el cache del squid y si hay otra solicitud hacia el mismo recurso el squid le devolver la informacin que tiene el squid en cache. Si hay algn cambio entonces la informacin deber ser actualizada. SNMP: Permite activar el protocolo SNMP, esto permite la administracin de red, que permite supervisar, analizar y comunicar informacin de estado entre una gran variedad de mquinas, pudiendo detectar problemas y proporcionar mensajes de estados. Cach de resolucin DNS: Squid est compuesto tambin por el programa DNS server, que se encarga de la bsqueda de nombres de dominio. Cuando Squid se ejecuta, produce un nmero configurable de procesos DNS server, y cada uno de ellos realiza su propia bsqueda en DNS. De este modo, se reduce la cantidad de tiempo que la cach debe esperar a estas bsquedas DNS.

Squid es un Servidor Intermediario (Proxy) de alto desempeo que se ha venido desarrollando desde hace varios aos y es hoy en da un muy popular y ampliamente utilizado entre los sistemas operativos como GNU/Linux y derivados de Unix. Es muy confiable, robusto y verstil y se distribuye bajo los trminos de la Licencia Pblica General GNU (GNU/GPL). Siendo sustento lgico libre, est disponible el cdigo fuente para quien as lo requiera. Entre otras cosas, Squid puede funcionar como Servidor Intermediario (Proxy) y cach de contenido de Red para los protocolos HTTP, FTP, GOPHER y WAIS, Proxy de SSL, cach transparente, WWCP, aceleracin HTTP, cach de consultas DNS y otras muchas ms como filtracin de contenido y control de acceso por IP y por usuario. Squid consiste de un programa principal como servidor, un programa para bsqueda en servidores DNS, programas opcionales para reescribir solicitudes y realizar autenticacin y algunas herramientas para administracin y herramientas para clientes. Al iniciar Squid da origen a un nmero configurable (5, de modo predefinido a travs del parmetro dns_children) de procesos de bsqueda en servidores DNS, cada uno de los cuales realiza una bsqueda nica en servidores DNS, reduciendo la cantidad de tiempo de espera para las bsquedas en servidores DNS. Los servidores proxy son en su mayora desplegados para llevar a cabo lo siguiente:

Reducir el consumo de ancho de banda. Mejorar la experiencia de navegacin del usuario al reducir el tiempo
de carga de pgina. Hacer cumplir las polticas de acceso a la red. usuarios individuales o grupos.

Se logra mediante el almacenamiento en cach de documentos web. Control de trfico de los usuarios o informar el uso de Internet para Mejorar la privacidad de los usuarios
usuario directamente a Internet. carga en un nico servidor. al no exponer la mquina del

Distribuirla carga entre los servidores web diferentes para reducir la PROXY INVERSO

Un proxy inverso (o reverse proxy) es una tcnica de almacenar las respuestas o recursos de un servidor web local para que las solicitudes posteriores al mismo recurso puede ser satisfechas con la copia local en el servidor proxy, a veces sin ni siquiera estar realmente en contacto con el

servidor web. El servidor proxy chequea si la copia almacenada localmente del documento web sigue siendo vlida antes de servir la copia almacenada en cach. La vida del documento Web localmente almacenada se calcula a partir de los encabezados HTTP adicionales recibidos desde el servidor web. Usar cabeceras HTTP, servidores web pueden controlar si un determinado documento / respuesta debe ser almacenado en cach por un servidor proxy o no. El almacenamiento en cach Web se utiliza sobre todo: Para reducir el consumo de ancho de banda. Un gran nmero de documentos web estticas como los archivos CSS y JavaScript, imgenes, videos, y as sucesivamente pueden almacenar en cach, ya que no cambian con frecuencia y constituye la mayor parte de la respuesta de un servidor web. Por los ISP para reducir el tiempo promedio de carga de la pgina para mejorar la experiencia de navegacin para sus clientes en el acceso telefnico o banda ancha. Para tomar una carga de un servidor web muy ocupado sirviendo pginas estticas y documentos de un servidor proxy cach.

PROXY TRANSPARENTE
Tal como hemos visto es posible usar un proxy para aplicar polticas de control de acceso a Internet. Normalmente esa configuracin no es transparente: es necesario modificar el cliente para que use el proxy al acceder a Internet, de forma que es posible que un usuario modifique esa configuracin. Una configuracin de proxy transparente hace que no sea necesaria modificacin alguna en las mquinas clientes, eliminando el riesgo de que un usuario modifique dicha configuracin a su antojo. El uso de un proxy transparente combina un servidor proxy con NAT, de forma que todas las conexiones son encaminadas a travs del proxy sin la intervencin de la mquina cliente.

OBTENCIN DE SQUID
Squid est disponible en varias formas (archivos comprimidos de origen, cdigo fuente de un sistema de control de versiones, paquetes de binarios, tales como RPM, DEB, etc) desde el sitio oficial de Squid, Squid varios espejos en todo el mundo, y los repositorios de software de casi todo el operativo popular sistemas. Squid tambin se suministra con muchas distribuciones de Linux / Unix.

Hay varias versiones y liberaciones de squid disponibles para su descarga desde el sitio oficial de Squid. Para obtener el mximo rendimiento de una instalacin de Squid todo lo posible para ver el ltimo cdigo fuente de un sistema de control de versiones (VCS) para que podamos obtener las ltimas mejoras y correcciones. Pero cuidado, el ltimo cdigo fuente de un VCS es generalmente de punta y no puede ser estable o tal vez ni siquiera funcione correctamente. Aunque el cdigo de un VCS es bueno para el aprendizaje o evaluacin de las nuevas caractersticas de Squid, se aconsejan o usar el cdigo de un VCS para los despliegues de produccin. Si queremos ir a lo seguro, probablemente debe descargar la ltima versin estable de las versiones ms antiguas. Las versiones estables se prueban generalmente antes de que sean puestos en libertad y se supone que funcionan fuera de la caja. Versiones estables se puede utilizar directamente en despliegues de produccin.

VERSIONES ESTABLES

VERSIONES BETA

VERSIONES DE DESARROLLO

VERSIONES ANTERIORES

FUNCIONAMIENTO:
Una aplicacin comn de los Squid es funcionar como cach de contenido de Red (principalmente HTTP), proporcionando en la proximidad de los clientes un cach de pginas y ficheros disponibles a travs de la Red en servidores HTTP remotos, permitiendo a los clientes de la red local acceder hacia stos de forma ms rpida y confiable. Cuando se recibe una peticin para un recurso de Red especificado en un URL (Uniform Resource Locator) el Squid busca el resultado del URL dentro del cach. Si ste es encontrado, el Squid responde al cliente proporcionado inmediatamente el contenido solicitado. Si el contenido solicitado no estuviera disponible en el cach, el Squid lo traer desde servidor remoto, entregndolo al cliente que lo solicit y guardando una copia en el cach. El contenido en el cach es eliminado luego a travs de un algoritmo de expiracin de acuerdo a la antigedad, tamao e historial de respuestas a solicitudes (hits) (ejemplos: LRU, LFUDA y GDSF).

LRU (poltica por defecto): Se eliminan de la cache los objetos que no han sido accedidos en mucho tiempo, manteniendo en la cache los que han sido utilizado ms recientemente. LFUDA: Los objetos ms solicitados permanecen en el cache sin importar su tamao, de modo que un objeto grande que se solicite con mayor frecuencia impedir que se pueda hacer cache de objetos pequeos que se soliciten con menor frecuencia. GDSF: Optimiza la eficiencia por objeto, manteniendo en el cache los objetos pequeos ms frecuentemente solicitados; descarta del cache objetos grandes que sean solicitado con frecuencia.

VENTAJAS:
Soporta HTTP y FTP. Tiene un avanzado mecanismo de autentificacin y control de acceso (o sea, a quien y cuando permitimos utilizar el proxy). Permite actuar como 'cache' de Internet, copiando contenido en forma local para que se lo pueda accesar rpidamente. Es Software Libre. Ahorro de trfico. Velocidad en tiempo de respuesta. Filtrado de contenidos.

DESVENTAJAS:
La mquina donde funcionara el Proxy debe tener capacidad de almacenamiento acorde a la cache que necesitemos o queramos. Debe tener un buen poder de procesamiento, ya que no es solo un 'reenvio' de paquetes tcp/ip. Recuerden que estamos trabajando en la Capa de Aplicacin. En modo transparente existen algunos problemas de compatibilidad (mnimos, pero existen). Hay que configurar la utilizacin del Proxy en cada cliente (hay 2 formas de salvar este inconveniente, que veremos ms adelante).

JERARQUIA DE SERVIDORES
SQUID permite especificar otros servidores intermediarios, utilizando la cache en una jerarqua como padres o como hermanos, dependiendo de la topologa de la red estos pueden operar en cascada (padres) o en paralelo (hermanos).

CACHS MULTINIVEL
Es posible configurar varios proxys para que cooperen intercambiando objetos entre ellos. De esta forma se reduce la carga total del sistema y se aumenta la probabilidad de que el objeto se encuentre ya en la red local. Es posible configurar incluso jerarquas de cachs, de forma que se pueda pedir pginas a cachs del mismo nivel o enviar peticiones a otros proxys de jerarqua ms alta para que pidan las pginas a otros cachs existentes en la red o las obtengan directamente de la fuente. Elegir una buena topologa para los cachs es muy importante para no acabar creando ms trfico del que ya haba en la red antes de instalar los cachs. Por ejemplo, en el caso de una red local muy extensa conviene configurar un servidor proxy para cada subred y conectar estos a un proxy de jerarqua superior conectado a su vez al cach proxy del ISP. Toda esta comunicacin se lleva a cabo mediante el protocolo ICP ( Internet Cache Protocol) basado en UDP. Las transferencias de datos entre la mayora de cachs se realizan mediante HTTP, protocolo basado en TCP. Para encontrar el servidor ms apropiado desde el que obtener un objeto, un cach enva una peticin ICP a sus proxys vecinos. Estos le enviarn respuestas ICP con cdigo HIT, si el objeto se encuentra efectivamente all, o bien MISS en caso contrario. En caso que haya varios HIT, el proxy se decidir por un servidor en especial en funcin de factores como la velocidad de respuesta o la proximidad, entre otros. Si las respuestas de los proxys vecinos no son satisfactorias, la peticin se realizar al cach principal.

OBJETOS CACHEADOS EN INTERNET


No todos los objetos disponibles en la red son estticos. Existen pginas generadas dinmicamente por CGIs, contadores de visitantes o bien documentos que incluyen SSL para codificar el contenido y hacerlo ms seguro. Por esos motivos se considera este tipo de objetos como no cacheables, ya que cada vez que se accede a ellos ya han cambiado. Pero para todos los dems objetos que se guardan en el cach existe el problema de cunto tiempo deben quedarse all. Para determinarlo se asignan diferentes estados a los objetos del cach. Los servidores web y los cachs proxy controlan el estado de un objeto aadiendo cabeceras como Lastmodified (ltima modificacin) o Expires

(expira) y la fecha correspondiente. Tambin se utilizan otras cabeceras para especificar los objetos que no deben cachearse. Normalmente, los objetos desaparecern antes del cach por la falta de espacio en el disco. Se utiliza algoritmos para sustituir objetos en el cach, como el LRU (Last Recently Used) que consiste en sustituir los objetos menos utilizados por nuevos.

Tamao del cach de disco


Depende de varios factores. En un cach pequeo la probabilidad de un HIT (el objeto ya se encuentre en el cach) ser pequea, ya que el cach se llenar con facilidad y se deber sustituir los objetos antiguos por nuevos. En cambio, en el caso de disponer de por ejemplo 1GB de disco para cachear, y de que los usuarios slo necesiten 10MB al da para navegar, se tardar al menos 100 das en llenar el cach. El mtodo ms fcil para determinar el tamao del cach es en funcin del trfico mximo que pase por el mismo. Si se dispone de una conexin de 1Mb/s, como mucho se transferirn 125KB por segundo. Si todo este trfico va a parar al cach, en una hora ser 450MB, y suponiendo que este trfico se genera durante las 8 horas de trabajo, tendremos en total 3,6GB diarios. Como la lnea no suele trabajar al mximo, la cantidad total de datos procesada por el cach es de unos 2GB. As pues, para guardar todos los datos navegados por la web en un da, necesitamos en este ejemplo 2GB de memoria RAM para Squid.

ACTUALIZAR LOS PATRONES DE LOS OBJETOS ALMACENADOS EN CACH


Squid ofrece la Directiva refresh_pattern, con el que podemos controlar el estado de un objeto en cach. Actualizar los patrones se pueden utilizar para lograr mayores tasas de HIT, manteniendo los objetos recientemente expir fresca durante un perodo corto de tiempo, o por razones imperiosas de algunos de los encabezados HTTP enviados por los servidores web. Mientras que la directiva de cach puede hacer uso de ACL, refresh_pattern utiliza expresiones regulares. La ventaja de utilizarla directiva refresh_patternes que se puede alterar el curso de la vida de los objetos almacenados en cach, mientras que con la directiva de cach slo se puede controlar si una solicitud debe ser almacenado en cach o no.

Vamos a echar un vistazo a la sintaxis de refresh_pattern: refresh_pattern [-i] regex min percent max [OPTIONS] La expresin regex parmetro debe ser una expresin regular que describe la peticin de URL. Una lnea de patrn de actualizacin se aplica a cualquier URL que coincide con la expresin regular correspondiente. No puede haber varias lneas de los patrones de refresco. La primera lnea, cuya expresin regular coincide con la direccin actual, se utiliza. De forma predeterminada, la expresin regular es entre maysculas y minsculas, pero podemos utilizar-i para que sea entre maysculas y minsculas. El mtodo utilizado para la determinacin de la actualizacin o el estancamiento de un objeto almacenado en cach. Un objeto en cach se considera: Expiracin. si el tiempo de caducidad que se menciona en el encabezado de respuesta HTTP es en el pasado. Refresca, si el tiempo de expiracin mencionada en las cabeceras de respuesta HTTP es en el futuro. Expiracin, si la edad de respuesta es ms que el valor mximo. Refresca, si LM-factor es menor que el valor por ciento. Refresca, si la edad de respuesta es menor que el valor min. Expiracin, de lo contrario. Tiempo para la accin del clculo de la actualizacin de los objetos almacenados en cach: Digamos que un cliente pidi a la imagen en http://example.com/text.jpg~~ hace una hora, y la imagen fue modificada por ltima vez (creado) en el servidor web hace seis horas. Supongamos que el servidor web no especific el tiempo de caducidad. Por lo tanto, tenemos los siguientes valores para las diferentes variables: En el momento de la solicitud, la edad del objeto era (6 -1)= 5 horas. Actualmente, la edad de respuesta es de 1 hora. En la actualidad, el LM-factor es 1 5 = 20 por ciento. Vamos a comprobar si el objeto se ha refrescado: La edad de respuesta es de 60 minutos, que no es ms de 1440 (valor mximo), as que esto no puede ser el factor decisivo. LM-factor es 20 por ciento, que es inferior al 60 por ciento, por lo que el objeto se refresca. Ahora, vamos a calcular el momento en que el objeto expirar. La edad es objeto de 5 horas y el valor es 60 por ciento. Por lo tanto, el objeto expirar en (5x 60) 100= 3 horas de la ltima solicitud, es decir, 2 horas a partir de ahora.

OPCIONES PARA ACTUALIZACIN

EL

PATRN

DE

La mayora de las veces, el tiempo de expiracin especificada por los servidores web para todas las solicitudes. Sin embargo, algunos documentos de la tela, como las hojas de estilo (CSS) o archivos JavaScript (JS) incluidos en la pgina web, cambiar muy rara vez y se puede subir su tiempo de caducidad a un valor ms alto para aprovechar al mximo el almacenamiento en cach. A medida que los servidores web y a especificar el tiempo de expiracin, el cach de CSS /JS, caducar automticamente. Para ignorarla fuerza de la caduca y un montn de otras cabeceras relacionadas con el almacenamiento en cach, podemos pasar las opciones de la directiva refresh_pattern. Opciones para el patrn de actualizacin: override-expire: La opcin de override-expire, anula o hace caso omiso de la cabecera Expires, que es el actor principal para determinar el tiempo de caducidad de una respuesta almacenada en cach. Como el encabezado Caduca se tiene en cuenta, los valores del mnimo, mximo, y los parmetros por ciento jugar un papel esencial en la determinacin de la actualizacin de una respuesta. override-lastmod: La opcin de override-lastmod obligar a Squid para ignorar la cabecera Last-Modified, que finalmente se imponga el uso del valor mnimo para determinar la actualizacin de un objeto. Esta opcin no sirve de nada, si nos hemos fijado el valor de minutos a cero. reload-into-ims: Usando la opcin de reload-into-ims obligar a Squid para convertir las directivas de cach no-en las cabeceras HTTP de las cabeceras If-Modified-Since. El uso de esta opcin es til slo cuando la cabecera Last-Modified est presente. ignore-reload: cabeceras HTTP. ignore-no-cache: Cuando la opcin ignore-no-cache utiliza la cach, Squid simplemente ignora la directiva no-cache en las cabeceras HTTP. ignore-no-store: El encabezado HTTP ignore-no-store se utiliza par ainformar a los clientes que no se les permite almacenar los datos que se transmiten. Si la opcin de ignore-no-store se establece, Squid simplemente ignorara esta cabecera HTTP y almacena en cach la respuesta si se trata de almacenar en cach. Usando la opcin de ignore-reload simplemente ignorar la no-cacheo directivas de recarga presentes en las

ignore-must-revalidate: El encabezado HTTP ignore-mustrevalidate significa que la respuesta debe ser revalidado con el servidor Web de origen antes de que sea utilizado de nuevo. Establecer la opcin de ignore-must-revalidate har cumplir Squid hacer caso omiso de esta cabecera. ignore-private: La informacin privada o datos sensibles por lo general lleva una cabecera HTTP conocido como Cache-Control: prvate para que los servidores intermedios no hacen cach de las respuestas. Sin embargo, la opcin de ignorar-privada se puede utilizar para ignorar esta cabecera. ignore-auth: Si la opcin de ignore-auth est definida, entonces Squid ser capaz de almacenar en cach las solicitudes de autorizacin. Con esta opcin puede ser muy arriesgado. refresh-ims: Esta opcin puede ser bastante til. La opcin de refresh-IMS fuerzas de Squidpara validar el objeto en cach con el servidor original cada vez que un If-Modified-Since encabezado solicitud es recibidade un cliente. El uso de este puede aumentar la latencia, pero los clientes siempre obtendrn los datos ms recientes.

ANULACIN DE LAS RECUPERACIONES PARCIALES


Cuando un cliente inicia una peticin de ir a buscar algunos datos y aborta prematuramente, Squid puede continuar para tratar de recuperar los datos. Esto puede causar ancho de banda y otros recursos tales como el poder de procesamiento y memoria que se pierde, sin embargo, si tenemos las solicitudes posteriores para el mismo objeto, que va a resultar en una proporcin de aciertos mejor. Para actuar contra este problema, Squid ofrece tres directivas quick_abort_min(KB), quick_abort_max(KB), y quick_abort_pct(por ciento). Para todas las solicitudes abortadas, Squid comprueba los valores de estas directivas y toma la accin apropiada de acuerdo a las siguientes reglas:

Si los datos restantes que debe ser recuperado es menor que el valor Si los datos restantes a ser transferidos es mayor que el valor de Si los datos que ya se ha transferido ms de ciento quick_abort_pct
quick_abort_max, Squid abortar inmediatamente la solicitud. de los datos totales, a continuacin, Squid se mantendr la recuperacin de los datos. de quick_abort_min, Squid continuar a buscarla.

ALMACENAMIENTO EN PETICIONES FALLIDAS

CACH

LAS

Las solicitudes de recursos que no existe (HTTP Error 404) o un cliente no tiene permiso para acceder al recurso solicitado (HTTP Error 403) son comunes y las peticiones a esos recursos representan un porcentaje significativo de las solicitudes totales. Estas respuestas son almacenables por Squid. Sin embargo, a veces los servidores web no enva el Expira cabeceras HTTP en las respuestas, lo que impide el almacenamiento en cach de Squid estas respuestas. Para resolver este problema, Squid ofrece la negative_ttl directiva que obliga a este tipo de respuestas en la memoria cach durante el tiempo especificado. La sintaxis de negative_ttl es como sigue: negative_ttl TIME_UNITS. Anteriormente,este valor fue de cinco minutos por defecto, pero en las nuevas versiones de Squid, se establece en cero segundos por defecto.

MEMORIA RAM
La cantidad de memoria requerida por Squid est relacionada directamente con la cantidad de objetos que se encuentran en el cach. Squid tambin almacena referencias a los objetos en el cach y objetos utilizados frecuentemente en la memoria RAM para optimizar la obtencin de los mismos. La memoria RAM es muchsimo ms rpida que el disco duro. Squid tambin guarda muchos otros datos en la memoria, como por ejemplo una tabla con todas las direcciones IP utilizadas, un cach para los nombres de dominio totalmente cualificados, objetos calientes (los que ms se solicitan), buffers, listas de control de acceso, etc. Es muy importante tener memoria ms que suficiente para el proceso de Squid, ya que en el caso de tener que pasar el proceso al disco duro, las prestaciones del sistema se reducirn drsticamente. Para facilitar la administracin de la memoria utilizada por el cach, podemos utilizar la herramienta cachemgr.cgi

EJECUCIN DE SQUID
Las opciones de lnea de comandos: Normalmente, todas las opciones de configuracin de Squid residen con en el archivo squid.conf (el archivo de configuracin de Squid principal). Para modificar la funcionalidad de Squid, el mtodo preferido consiste en cambiar las opciones en el archivo

squid.conf. Sin embargo, hay algunas opciones que tambin pueden ser controlados usando las opciones adicionales de lnea de comandos durante la ejecucin de Squid. Estas opciones no son muy populares y se usan rara vez, pero estas son muy tiles para la depuracin de los problemas sin el servidor proxy Squid. Antes de explorarlas opciones de lnea de comandos, vamos a ver cmo Squid se ejecuta desde la lnea de comandos. La ubicacin del archivo binario de Squid depende de la opcin prefix pasa al comando configure antes de compilar. As, dependiendo del valor de la opcin - prefix, la ubicacin del ejecutable de Squid puede ser uno de /usr/local/sbin/squido ${PREFIX}/sbin/squid Donde ${PREFIX} es el valor de la opcin

- prefix pasa al comando de configuracin. Por lo tanto, para ejecutar Squid, que necesitamos para ejecutar uno de los siguientes comandos en el terminal: Cuando la opcin prefix no se utiliza con el comando de configuracin, la ubicacin predeterminada del archivo ejecutable de Squid ser /usr/local/sbin/squid. Cuando la opcin prefix se utiliz y se estableci en un directorio, entonces la ubicacin del ejecutable de Squid ser de ${PREFIX}/sbin/squid. $ Squid: Este comando se ejecutar Squid es despus de cargarlas opciones de configuracinde la squid.conf.

REGLAS DE ACCESO DE SQUID

Una vez que tenemos un servidor proxy Squid en marcha y funcionando, podemos definir reglas para permitir o denegar el acceso a diferentes personas o para controlar el uso de los recursos. Tambin es posible para definir los lmites superior e inferior sobre el uso de diferentes recursos. Conocer las normas de la lista, que son bsicamente una combinacin de permitir o denegar la palabra clave y los elementos de ACL, desempean un papel vital en la consecucin de este tipo de control.

LAS LISTAS DE CONTROL (ACL)


Listas de control de acceso son los elementos de base en el archivo de configuracin de Squid, que ayudan en la identificacin de transacciones en la Web, por diversos atributos de la transaccin.

TIPOS DE ACL
Squid soporta la identificacin de los clientes que utilizan el protocolo ident proporcionando el tipo de ACL. Squid intenta conectarse al servidor ident en la mquina cliente y recibe el nombre de usuario correspondiente a la solicitud actual, cuando el tipo de ident ACL se utiliza. El nombre de usuario que Squid recibir no puede ser el nombre de usuario del usuario conectado. Por ejemplo, cuando Squid intenta obtener el nombre de usuario de un servidor proxy aguas abajo, se puede obtener el Squid nombre de usuario, proxy,o nadie, en funcin del valor de la directiva cache_effective_user. Normalmente, no es posible especificar todos los usuarios sobre todo si se tiene una red grande. Para estos casos, Squid ofreceuna palabra clave especial, REQUIRED, que se puede utilizar para hacer cumplir un nombre de usuario para todas las solicitudes. Si se produce una bsqueda de identidad en cualquier nombre de usuario, la ACL es igual, de lo contrario la ACL no ser igualada.

PROXY DE AUTENTICACIN
La mejor manera de mantener a los chicos malos de un servidor proxy es el uso de la autenticacin del proxy. En este caso, el cliente tendr que introducir un nombre de usuario y contrasea para poder utilizar nuestro servidor proxy. Si la autenticacin del proxy est habilitada, el cliente deber enviar un encabezado adicional con credenciales de autenticacin, que Squid evaluar y comprobar si el cliente se debe permitir utilizar nuestro servidor proxy. La parte interesante es que Squid no puede validar las credenciales enviadas por el cliente por su cuenta. Squid pasa las credenciales que recibe de un cliente a un proceso de ayuda, y la validez de las credenciales se determina por el proceso externo. Por lo tanto, tenemos el tipo proxy_auth ACL en el que podemos especificar una lista de nombres de usuario para la autenticacin. Sin embargo, como hemos visto anteriormente, Squid no puede validar las credenciales de s mismo, hay que especificar al menos un esquema de autenticacin para validar el nombre de usuario y la contrasea enviada por el cliente. Esquemas de autenticacin se configuran con las directivas auth_paramen nuestro archivo de configuracin de Squid.

INSTALACION Y CONFIGURACION DE SQUID


Para poder instalar instalar el servicio de squid tendremos que ejecutar lo siguiente como usuario root. Yum y install squid*

La configuracin del servidor proxy SQUID se realiza en un nico archivo de texto plano generalmente ubicado en /etc/squid/squid.conf. La sintaxis en este archivo debe comenzar en la primera columna, sin dejar espacios. gedit squid.conf

Parmetro http_port En este parmetro configuramos el puerto de escucha de nuestro servidor squid, por default es el puerto 3128, pero tambin puede ser utilizado el 8080; y utiliza el 3130 para comunicarse mediante ICP (Internet Cache Protocol) con otras caches.

http_port 3128 icp_port 3130

Parmetro cache_mem Establece la cantidad de memoria RAM dedicada para almacenar los datos ms solicitados. Esta opcin viene comentada por los cual la des comentaremos para darle un valor reservado en memoria RAM.

# cache_mem 8 MB
por

cache_mem 50 MB

El valor ya depende del administrador y de la carga que tenga el squid.

Parmetros cache_swap Dentro del cache_swap, existen dos parmetros: cache_swap_low y cache_swap-high. Con estos le indicamos a squid que mantenga los niveles del espacio del area de intercambio o tambin conocido como swap. Estos parmetros viene siempre desactivados por cual los buscaremos para activarlos.

#cache_swap_low 90 #cache_swap_high 95
por

cache_swap_low 90 cache_swap_high 95

Con esto decimos al squid que mantenga los niveles del espacio del rea de intercambio entre 90% y 95%.

Parmetros maximum_object_size Utilizamos esta directiva para indicar el tamao mximo para los objetos a almacenar en la cache.

#maximum_object_size 4096 KB
por

maximum_object_size 1024 MB

Parmetro hierarchy_stoplist Este parmetro es til para indicar a squid que paginas que contengan ciertos caracteres no deben almacenarse en cache. Tambin se pueden incluir como sitios de webmail y paginas locales en su red ya que no sera necesario almacenarlas en el cache, esta opcin ya viene habilitada solamente tendremos que modificarle algunos datos de la misma.

hierarchy_stoplistcgi-bin ?
por

hierarchy_stoplistcgi-bin ? Hotmail gmail yahoo

Parmetro visible_hostname Es el nombre del equipo, el nombre debe ser igual a los siguientes ficheros /etc/hosts y en /etc/sysconfig/network. Este parametro no viene configurado en el archivo de configuracion, tendremos que agregar y que en ocasiones pueda ser que nuestro servicio de squid no quiera iniciar.

visible_hostname nombrehost

Parmetro cache_dir Con este parmetro establecemos el tamao que deseamos que tenga la cache en el disco, lo cual tendremos que habilitar y modificar el siguiente dato.

#cache_dir ufs /var/spool/squid 100 16 256


por

cache_dir ufs /var/spool/squid 700 16 256

Con esto establecemos el tamao que deseamos que tenga la cache en el disco, se puede incrementar hasta el tamao que desee el administrador, nosotros establecemos 700MB de cache con 16 directorios subordinados y 256 niveles cada uno.

Parmetro access_log Especifica en que directorio se realizara el registro de accesos al squid, este parmetro es importante para definir un anlisis de estadsticas con webalizer.

access_log /var/log/squid/access.log squid

Parmetro cache_log Define en donde se almacenaran los mensajes del comportamiento de la cache de squid. Por default viene desactivado.

cache_log /var/log/squid/cache.log

Reglas acl Una ACL es una definicin de control de acceso, que utiliza squid para especificar mediante el tipo de acceso; la entrada hacia la red o Internet, existen varios tipos de reglas ACL que comentaremos en la tabla. Src(Origen) Dst(Destino) Time(Tiempo) url_regex

Srcdomain(Dominio de Origen) urlpath_regex Dstdomain(Dominio de Destino) req_mime srcdom_regex dstdom_regex Macaddress(Direccion MAC) password

Regla Tipo src Esta regla especifica una o varias direccin IP de origen o un segmento de red con su mscara de red. Nomenclatura: acl [Nombre] src [Contenido] Ejemplos: 1) El nombre de la regla es llamada redlocal la cual tendra asignada un segmento de red 192.168.1.0 a 24 bits.

acl redlocal src 192.168.1.0/24


2) Esta regla es llamada jefes de los cuales solamente se le proporcionan algunas IP de nuestro segmento de red.

acl jefes src 192.168.1.10 192.168.1.20


3) Esta regla que se llama sistemas en la cual manda a llamar al archivo permitidos el cual se encuentra en /etc/squid, contiene las IP de la gente que trabaja en el rea de sistemas.

acl sistemas src /etc/squid/permitidos

Regla Tipo dst Especifica una direccin de destino en formato IP y mascara o el nombre del sitio a visitar. Nomenclatura: acl [Nombre] dst [Contenido] Ejemplos: 1) En esta regla es llamada webmail la cual contendr como destino final las direcciones de webmail mas conocidos de internet.

2) En esta regla es llamada iplocales la cual contendr algunas de la IP de nuestro segmento de red.

acl webmail dst www.gmail.com www.hotmail.com www.yahoo.com

acl iplocales dst 192.168.1.109 192.168.1.103

Regla Tipo srcdomain. La regla de tipo srcdomain se establecen permisos sobre dominios web de origen y se determina por la resolucin de DNS inversa. Para poder ocupar esta regla es necesario contar un DNS local. Nomenclatura: acl [Nombre] srcdomain [Contenido] Ejemplo: La regla repos indica que mquinas de nuestra red local estn agregadas a la misma.

acl repos srcdomain repocen.dyndns.net

repoubu.dyndns.net

repodeb.dyndns.net

Regla Tipo dstdomain La regla de tipo dstdomain se establecen permisos sobre dominios web de destino. Nomenclatura: acl [Nombre] dstdomain [Contenido] Ejemplo: La regla permitidos indicamos que dominios pueden estar hacia la salida a internet

acl pemitidos dstdomain .linuxparatodos.net .factor.com.mx .eluniversal.com .reforma.com

Regla Tipo srcdom_regex Esta regla se encarga de evaluar palabras de entrada a nuestra red, ocupndose expresiones regulares. Nomenclatura: acl [Nombre] srcdom_regex [Contenido] Ejemplo: La regla intranet analiza todas las posibles palabras de factor en maysculas y minsculas de nuestra red local.

acl intranet srcdom_regex -i factor\..*

Regla Tipo dstdom_regex Esta regla se encarga de evaluar palabras de salida, ocupndose expresiones regulares. Nomenclatura: acl [Nombre] dstdom_regex [Contenido] Ejemplo: La regla google_todos analiza todas las posibles palabras de google en maysculas y minsculas.

acl google_todos dstdom_regex -i google\..*

Regla Tipo time Esta regla establece un tiempo lmite de conexin dentro de una semana. Parmetros por das de la semana: Parmetro S M T H W F A D Da Lunes Martes Mircoles Jueves Viernes Sbado Domingo
Todos los Das

En el manejo de las horas se establece un horario de 24:00 hrs Nomenclatura: acl [Nombre] time [das] [horainicio]-[horafin] Ejemplo: La regla horario establece que est habilitada los das Lunes a Viernes de 09:00 a 18:00 hrs.

acl horario time MTWHF 09:00-18:00

Regla Tipo url_regex Permite especificar expresiones regulares para comprobar dicha url, a este tipo de regla se recomienda tener un archivo en cual agregamos todas la palabras que nosotros creamos que importantes. Nomenclatura: acl [Nombre] url_regex Path Ejemplo de archivo porno.txt: Sex xxx adultpornotube chicas porn playboy lolitas Ejemplo: Esta regla se llama porno el cual manda a llamar a un archivo que contiene palabras relacionadas a pornografa.

acl porno url-regex /etc/squid/porno

Regla Tipo urlpath_regex Esta regla nos permite la administracin de descargas por medio de la extensin de los archivos, se recomienda tener Nomenclatura: acl [Nombre] urlpath_regex Path Ejemplo de archivo extensiones.txt: \.avi$ \.mpg$ \.mpeg$ \.avi$ \.flv$ \.exe$ \.bat$ \.zip$ \.mp3$ Ejemplo: Esta regla se llama extensiones la cual administrar las descargas por medio de la extensiones de los archivos.

acl extensiones urlpath_regex /etc/squid/extensiones


Otra forma:

acl videos urlpath_regex -i \.(avi|mp4|mov|m4v|mkv|flv)(\?.*)?$

Regla Tipo req_mime Esta regla nos permite comprobar el tipo de peticin mime que realiza un cliente. Nomenclatura: acl [Nombre] req_mime mime Ejemplo: Esta regla se llame MSN la cual contiene el mime del mensajero MSN.

acl MSN req_mime type application/x-msn-messenger

Regla Tipo macaddress Este tipo de regla nos permite administrar squid por medio de Mac Address. Nomenclatura: acl [Nombre] arp Mac Address Ejemplo: Esta regla se llama adminmac en la cual nosotros proporcionamos el Mac Address de las mquinas clientes.

acl adminmac arp 09:00:2b:23:45:67 00:1f:3c:5f:fd:b1 00:1e:ec:70:7e:24

Regla Tipo password Este tipo de regla, se controla el acceso a internet por medio de un usuario y password, para poder habilitar este mtodo tendremos que hacer lo siguientes pasos de configuracin. 1) Creamos el archivo que contendr las claves.

touch claves

2) Le asignamos permisos de Lectura/Escritura y el usuario encargado del archivo.

chmod 600 claves chown squid:squid claves

3) Creacin de usuario y password para el acceso a internet.

htpasswd claves clientes

4) Habilitaremos las siguientes opciones dentro del fichero de configuracin del servidor squid, busquemos el primer parmetro llamado auth_param basic. #auth_param basic program <uncomment and complete this line> Este parmetro lo modificaremos de la siguiente manera. auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/claves

Estamos enlazando la aplicacin que nos permitira autenticarnos y en donde se encuentra el archivo donde se encuentran las cuentas de los usuarios.

5) Por ultimo tendremos que habilitar la regla acl encargada de la autenticacin de password.

#acl password proxy_auth REQUIRED


por

acl password proxy_auth REQUIRED


usuarios.

Con esto ya tendremos habilitada la regla para la autenticacin de los

Control de Acceso El control de acceso define si se permite o deniega el acceso a las reglas para que empecemos a crear el filtrado. Nomenclatura: http_access allow/Deny Regla Ejemplo: Como sabemos la regla jefes contendr la IP de las personas encargadas de cada rea de la empresa y tendrn acceso a todo el internet. http_access allow jefes Todos los dems clientes de la red no tendrn acceso a internet. http_access deny redlocal Dentro de la configuracin http_access, existe una expresin ! que significa no, esto permite que una regla se permitida o denegada. Es lo contrario a la primera definicin del control de acceso. Ejemplo: Esta regla permite navegar a todo la red en un horario de 09:00 a 18:00 Hrs y solamente a la paginas permitidas por el administrador. Pero no pueden entrar hacia los otros recursos de internet.

http_access deny redlocal !horario !permitidos

Configuracin bsica squid Como vemos en el siguiente diagrama de red, especificaremos las siguientes reglas que tendr nuestra red.

Todas las computadoras de la empresa se encuentran dentro del segmento de red 192.168.1.0/24. Los jefes de cada departamento tienen salida a sin ninguna restriccin a internet y sus IP son 92.168.1.10, 192.168.1.20. El resto de la red solamente tiene acceso a la pgina de la empresa Factor y de inters social, con un horario de 08:00 a 19:00 hrs, sin poder descargar archivos de msica y vdeos.

Crearemos las reglas del squid. acl redlocal src 192.168.1.0/24 acl jefes src 192.168.1.10 192.168.1.20 acl permitidas dstdomain /etc/squid/permitidas acl horario time MTWHF 08:00-19:00 acl extensiones urlpath_regex /etc/squid/extensiones Comenzaremos a configurar el control de accesos. http_access allow jefes http_access deny redlocal !permitidas !horario extensiones Con esto tendremos ya configurado nuestro squid, para poder exportar en proxy desde consola tendremos que hacer lo siguiente:

export http_proxy=http://192.168.1.254:3128

A continuacin debemos iniciar el servicio y luego dejarlo esttico para que se inicie cada vez que el sistema se reinicie.

Service squid start Service squid restart Chkconfig --level 235 squid on

Configuracin de Navegadores Web. Solo nos falta que en las mquinas clientes configuremos la salida a internet por proxy. Ejemplos:

Firefox

Men Herramientas ---> Opciones ---> Avanzadas ---> Red ---> Configuracin---> Configuracin manual de proxy ---> Poner la direccin IP del servidor proxy en conjunto con su puerto correspondiente ---> Usar el mismo proxy para todo.

Internet Explorer. Opciones de Internet --->Conexiones --->

Men Herramientas ---> Configuracin de LAN

Iptables
El comportamiento de las tablas IP se basa en pares de reglas y acciones. Las reglas definen en el que los paquetes de paquetes (ej. de una determinada red) una determinada accin (por ejemplo, dejar caer los paquetes) se ejecutar. Netfilter procesa todas las reglas de forma secuencial para cada paquete. Cuando encuentra uno que coincida con una regla determinada, se pronunciar por llamar a la accin definida para esa regla. Las medidas adoptadas pueden ser terminativo o no. Por ejemplo, una accin que pide a netfilter para ignorar un paquete de seguro ser llamado y no hay otras normas se aplicarn. Esta es una accin terminativa. Sin embargo, si la accin especfica que se debe registrar slo la existencia del paquete, que har su trabajo y dejar que netfilter procesar las siguientes reglas. Esta es una accin que no terminativo.

Diagrama de flujo de datos El flujo de datos dentro de cada tabla / de la cadena en el interior del ncleo de Linux se describe en el grfico a continuacin. En cada cuadro, se etiqueta la cadena que acta y los nombres de las tablas vlidas para cada cadena. El trfico fluye a travs de cada una de las tablas de serie para cada cadena. Por ejemplo, en PREROUTING cadena, estn las tablas raw, mangle e nat . Trfico que fluye a travs de esta cadena se pasa por cada una de las tres tablas de forma secuencial. Reglas Dada una determinada cadena / tabla es necesario el uso de reglas para seleccionar en la que los paquetes de una determinada accin tendr lugar. No todas las reglas se aplican a todas las cadenas. Por ejemplo, una regla que especifica la interfaz de salida de un paquete no se aplica a la cadena PREROUTING, ya que la decisin de enrutamiento no se ha tomado en ese momento. Hay reglas generales (referido como PARAMETERS en los manuales iptables(8) ) y extensiones (ver MATCH EXTENSIONS en el mismo manual). Las reglas generales son generalmente los mismos a travs de diferentes versiones del ncleo. Coincidir las extensiones depende del ncleo en ejecucin y la versin Tablas IP (recuerde que las tablas de propiedad intelectual es slo una herramienta de entorno de usuario para interactuar con netfilter). Es posible tener el caso en que una determinada regla existe en los cuadros de propiedad intelectual, pero es de aplicacin correspondiente, no se encuentra en el ncleo en ejecucin. En este caso, tratando de utilizar dicha norma se producir un error. Las reglas generales son las siguientes: Regla -p PROTOCOL -s ADDRESS -d ADDRESS -i INTERFACE -o INTERFACE Descripcin Especificar un protocolo IP (por ejemplo, TCP ,UDP). Especifique una direccin de origen. Especifique una direccin de destino. Especifique una interfaz local de trfico entrante. Especifique una interfaz local de trfico de salida.

Las extensiones de los partidos sern tratados a seguir.

Tablas Hay cuatro tablas definidas en iptables, que se encargan de diferentes tipos de procesos

Tabla raw nat

Sentido Bajo nivel de alteracin de paquetes. Los cambios en los encabezados de los paquetes (en NAT se lleva a cabo).

mangle Se utiliza para realizar modificaciones de paquetes especializados. filter El filtrado de paquetes.

Objetivo Un objetivo de especificar la accin a tomar cuando un paquete cumple una regla cierta. Este objetivo puede ser uno de los por defecto (debe estar disponible en todos los granos) o una extensin de destino. Los objetivos predeterminados son:

Objetivo Sentido ACCEPT DROP QUEUE Deje pasar el paquete. Instruya a netfilter para ignorar el paquete. Pasar al paquete al espacio de usuario.

RETURN Desde el manual: "detener el paso en la cadena y continuar con la siguiente regla de la anterior (llamada) de la cadena Si al final de una cadena del sistema se alcanza o una regla de una cadena integrada con el objetivo RETURN coincide, el destino especificado por la poltica de la cadena determina el destino del paquete. "

En la prctica, la mayora de las veces que se va a utilizar ya sea ACCEPT o DROP. Reglas de escritura De acuerdo con iptables, hay muchas maneras de agregar / quitar las reglas. Todas las acciones de reglas de complementos, son la operacin discreta. Esto sugiere la creacin de un script que contiene todos los iptables las llamadas que componen el servidor de seguridad conjunto. Recuerde limpiar todas las reglas pre-existentes al inicio de la secuencia de comandos. Para aadir una sola regla (al final de los existentes), siga esta forma general: # Iptables -t [CUADRO]-A [CADENA] [REGLAS]-j [objetivo] Donde: Variable TABLE CHAIN RULES TARGET Sentido Especifique la tabla. Especifique la cadena. Las reglas para paquetes de seleccin. Accin a tomar su lugar.

aqu slo trataremos de la tabla nat, por lo que cada vez que escribamos una instruccin comenzaremos con iptables

-t nat.
La tabla nat est formada por tres cadenas: PREROUTING: Permite modificar paquetes entrantes antes de que se tome una decisin de enrutamiento. OUTPUT: Permite modificar paquetes generados por el propio equipo despus de enrutarlos POSTROUTING: Permite modificar paquetes justo antes de que salgan del equipo. Para cadena se especifican reglas, para las que es fundamental el orden, ya que cuando un paquete encuentra una regla que lo define, aplica esa regla y no lee las siguientes.

Parmetros generales Listar reglas Utilizamos el parmetro -L (normalmente se acompaa de -n para que los resultados se muestran de forma numrica y evitar consultas DNS) # iptables -t nat -L -n Chain PREROUTING (policy ACCEPT) target prot opt source destination Chain POSTROUTING (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Que nos muestra las tres cadenas de la tabla nat y que en este momento no hay ninguna regla aplicada. Verbose Para una salida ms completa de iptables utilizamos el parmetro -v: # iptables -t nat -L PREROUTING -n -v Chain PREROUTING (policy ACCEPT 21 packets, 4133 bytes) pkts bytes target prot opt in out source destination que nos informa de los paquetes y bytes que atraviesan una cadena y en caso de que hubiese reglas, se contaran los paquetes y bytes a los que se ha aplicado cada una. Borrar contadores Si queremos poner a cero los contadores de paquete que se aplican en las cadenas de una tabla: iptables -t nat -Z Borrar todas las reglas de una cadena Para borrar todas las reglas de una cadena se escribe: iptables -t nat -F OUTPUT Se puede no especificar ninguna cadena, con lo que se borran todas las reglas de todas las cadenas de una tabla: iptables -t nat -F iptables -t nat -X

iptables -t nat -Z Que borra todas las reglas anteriores y pone los contadores a cero. Ejemplo Supongamos que tenemos una situacin como la de la imagen:

Vamos a ver los pasos que habra que dar para que todos los equipos de la red local tuviesen acceso a Internet y se pudieran alojar servicios en cualquiera de ellos. Activacin del bit de forward En principio un equipo con GNU/Linux no permite que pasen paquetes de una interfaz de red a otra, para que se permita esto y por tanto pueda funcionar el equipo como router, o ms concretamente en este caso como dispositivo de NAT, hay que activar (dar valor 1) lo que se denomina bit de forward: echo 1 > /proc/sys/net/ipv4/ip_forward Esta activacin se borra cuando se apaga el equipo, ya que el directorio /proc est en memoria. Para que dicha activacin permanezca lo habitual es definirla en el fichero /etc/sysctl.conf, asegurndose de que exista una lnea como: net.ipv4.ip_forward=1 POSTROUTING Todos los equipos de la red 192.168.3.0/24 estn interconectados entre s, pero en principio no tienen acceso a Internet puesto que sus direcciones IP son privadas y por tanto no son accesibles desde Internet (ningn equipo contestara a sus peticiones). El equipo que tiene dos interfeces de red s tiene acceso a Internet ya que la interfaz de red eth0 tiene una direccin IP pblica, adems pertenece a la red 192.168.3.0/24 ya que est conectado a travs de la interfaz de red eth1 con direccin IP 192.168.3.254. El equipo con dos interfaces de red puede funcionar como dispositivo de NAT (source NAT), aceptando paquetes provenientes del resto de equipos de la red 192.168.3.0/24 que entren por eth1 con destino a cualquier equipo de Internet. Tal como se describe en el ejemplo inicial de SNAT, el dispositivo de NAT debe

cambiar la direccin IP origen, pero esto se hace justo antes de enviar el paquete a Internet y por tanto habr que definirlo en la cadena POSTROUTING. Source NAT (esttico) con iptables La regla que hay que poner para que se haga SNAT de todos los equipos de la red 192.168.3.0/24 es tan simple como: iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -o eth0 -j SNAT --to 80.58.1.14 Explicacin de los parmetros: -A POSTROUTING: Aade (Add) una regla a la cadena POSTROUTING -s 192.168.3.0/24: Se aplica a los paquetes que tengan como direccin origen (source) la 192.168.3.0/24 -o eth0: Se aplica a los paquetes que salgan (out-interface) por eth0 -j SNAT --to 80.58.1.14 (--to aqu es equivalente a --to-source): Cambia la direccin de origen por la 80.58.1.14

Source NAT (dinmico) con iptables Podramos tener un caso similar al anterior, pero en el que la direccin IP pblica del equipo que se conecta a Internet fuese dinmica, por lo que no la sabamos a priori y no sera posible definirla en una regla como la anterior. En ese caso la regla de iptables a utilizar sera: iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -o eth0 -j MASQUERADE Donde el nico cambio se refiere a la accin (parmetro -j), en este caso es MASQUERADE, que cambia la direccin origen por la que tenga la interfaz de salida (eth0). MASQUERADE podra funcionar tambin si la direccin IP de eth0 fuese esttica, pero en ese caso se recomienda utilizar SNAT. PREROUTING (Todo lo que se explica en este punto no se hace con la seguridad en mente, sino simplemente para explicar algunas cosas que se pueden hacer con PREROUTING. En una implementacin real, esto tendra que ir combinado con un cortafuegos y un esquema de red diferente). Para realizar una conexin cliente-servidor entre dos equipos de Internet hay que especificar completamente lo que se denomina socket de Internet, que queda definido con lo siguiente: Protocolo (normalmente TCP o UDP) Direccin IP equipo cliente Puerto equipo cliente Direccin IP equipo servidor Puerto equipo servidor Si volvemos a nuestro problema, el nico equipo de la red local que es accesible desde Internet es el dispositivo de NAT a travs de su direccin IP pblica

80.58.1.14, ya que sera el nico con el que un equipo de Internet podra establecer un socket y por tanto sera el nico equipo de la red que podra alojar servicios. Todo esto cambia si utilizamos NAT, ya que en el equipo que tiene las dos interfaces de red podemos cambiar la direccin IP destino (DNAT) de una peticin que llegue de Internet y mandarla a un equipo de la red local. Supongamos que instalamos un servidor web en un equipo de la red local con direccin IP 192.168.3.2 y queremos que sea accesible desde Internet, tendremos que modificar las peticiones que lleguen al puerto 80/tcp des equipo que tiene la direccin IP pblica y que cambie la direccin IP destino 80.58.1.14 por 192.168.3.2, esto se hace con la siguiente regla: iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth0 -j DNAT --to 192.168.3.2 Explicacin de los parmetros: -A PREROUTING: Aade (Add) una regla a la cadena PREROUTING -p tcp: Especifica el (p)rotocolo de transporte (tcp en este caso) --dport 80 (equivalente a --destination-port 80): Puerto destino 80 (ligada al parmentro anterior) -i eth0: Especfica eth0 como interfaz de entrada (in-interface) -j DNAT --to 192.168.3.2 (--to aqu es equivalente a --to-destination): Cambia la direccin IP destino (inicialmente 80.58.1.14) a 192.168.3.2 Es lgico que haya que hacerlo en la cadena PREROUTING, porque las reglas de esta cadena se aplican antes de tomar la decisin de enrutamiento, as se tomar la decisin de encaminamiento con la nueva direccin IP destino. Para otros servicios bastara con poner el protocolo y puerto adecuados, aunque el caso del servicio ftp es ms complicado y necesitara una discusin mas detallada. La principal limitacin de utilizar DNAT con una sola direccin pblica es que no es posible poner ms de un servicio en el mismo puerto, ya que slo se puede hacer DNAT a un equipo de la red local (el socket debe estar totalmente determinado). Hay algunos servicios que permiten utilizar puertos diferentes a los estndar, como por ejemplo http, ya que podemos acceder a un servidor web que est en un puerto diferente al 80/tcp, simplemente especificando en el navegador. Como iptables nos permite no slo modificar la direccin IP destino sino tambin el puerto destino, podramos poner un segundo servidor web en el equipo 192.168.3.3 y aadir la siguiente regla: iptables -A PREROUTING -p tcp --dport -880 -i eth0 -j DNAT --to 192.168.3.3:80 Donde hemos especificado el puerto destino 880 (que no es un puerto estndar para ningn servicio) y cambiamos tanto la IP destino como el puerto destino con -to 192.168.3.3:80. Para acceder a ese servicio desde Internet tendremos que escribir en el navegador: http://80.58.1.14:880

Ejemplo: 1. Creamos y editamos un archivo de extensin sh dentro del directorio /etc 2. En la parte inicial del archivo debemos poner #!/bin/sh. Esta lnea es importante ya que ejecutar nuestro archivo de configuracin. 3. Eliminamos las reglas anteriores mediante las siguientes lneas o o o o o o o o o o o o o o o o iptables F iptables X iptables Z iptables t nat F iptables P INPUT DROP iptables P OUTPUT DROP iptables P FORWARD DROP iptables t nat P PREROUTING DROP iptables t nat P POSTROUTING DROP iptables A INPUT i lo j ACCEPT iptables A INPUT s 192.20.40.249 j ACCEPT iptables A INPUT p tcp dport 80 j ACCEPT iptables A INPUT p tcp dport 20:21 j DROP iptables A INPUT p tcp dport 3306 j DROP iptables A INPUT p tcp dport 22 j DROP iptables A INPUT p tcp dport 10000 j DROP

4. Establecemos polticas por defecto

5. Al local host le dejamos que pase todo 6. A nuestra direccion IP le dejamos acceso total 7. El Puerto 80 de navegacion web debe estar abierto por lo tanto 8. Y el resto de puertos potencialmente riegosos se cierran

9. Grabamos el archivo y luego le establecimos permisos de lectura y ejecucin al archivo generado

10. Y ahora el paso final, debemos decirle al sistema que ejecute ese script
cuando inicie, para eso modificamos el archivo /etc/rc.local y colocamos la direccin del archivo ah.

11. Verificamos que nuestras reglas se encuentren ejecutando mediante iptables L -n