webmin squid firewall servidor dhcp delay pools
TRANSCRIPT
1 Ministerio de Educación - Dirección de Sistemas| Marcelo Ponce – Eugenio Regis
Ministerio de Educación de la Provincia de Córdoba
Dirección de Sistemas
Manual Ilustrativo
Webmin - Squid – Firewall – Servidor DHCP – Delay Pools
2 Ministerio de Educación - Dirección de Sistemas| Marcelo Ponce – Eugenio Regis
Webmin y servidor de servicios
Este tutorial tiene como destinatario el grupo de administradores de red del programa Conectar
Igualdad en la provincia de Córdoba. Todo lo expuesto se ajusta al software y hardware que el
programa propone. La versión de Squid utilizada es la 2.7. Se omiten explicaciones que no tengan
un fin práctico o una posible implementación para este grupo.
¿Cómo se accede a esta herramienta? Webmin es la herramienta que usamos para configurar nuestro servidor mediante una interfaz
web. Podemos acceder a dicha interfaz tanto desde un navegador en el servidor como desde
un equipo remoto. En ambos casos debemos abrir el navegador y dirigirnos a la siguiente dirección
web:
https://servicios.miescuela.local:10000
https://172.16.0.1:10000 Nota 1: se puede evitar la resolución de nombre escribiendo la dirección de red.
Nota 2: note que se utiliza el protocolo HTTPS para una conexión segura.
Página de ingreso a Webmin - https://servicios.miescuela.local:10000/
Es importante destacar que si tenemos configurado en nuestro explorador web un proxy manual
(véase en configuración de proxy no transparente) debe agregarse a la lista de “excepciones de uso por
proxy” el ip de nuestro servidor “172.16.0.1” para que se realice la conexión normalmente.
3 Ministerio de Educación - Dirección de Sistemas| Marcelo Ponce – Eugenio Regis
Página Principal de Webmin - https://servicios.miescuela.local:10000/
Formas de hacer un Backup de la configuración Para hacer una copia de respaldo de la configuración de Squid (o de cualquier servicio
individual), nos dirigimos al apartado Webmin > Copia de Seguridad. Seleccionamos el modulo a respaldar
en este caso “Proxy Squid” y seleccionamos el destino donde se va a guardar el archivo de respaldo. Una
buena opción es “Descargar en navegador” y descargar el archivo a nuestro puesto de trabajo (o
netbook).
Webmin > Copia de Seguridad de Archivos de Configuración
4 Ministerio de Educación - Dirección de Sistemas| Marcelo Ponce – Eugenio Regis
Webmin > Copia de Seguridad de Archivos de Configuración
Proxy Squid La versión de Squid utilizada es la 2.7. Se omiten explicaciones que no tengan un fin práctico o
una posible implementación para este grupo.
¿Qué es squid? Squid es un Servidor Intermediario (Proxy) que tiene incorporado un sistema de caché. Un proxy
es una herramienta que actúa de intermediario entre dos redes; en nuestro caso, entre Internet y nuestra
red local.
Squid posee las siguientes características:
● Squid proporciona un servicio de Proxy que soporta peticiones HTTP, HTTPS y FTP a equipos
que necesitan acceder a Internet y a su vez provee la funcionalidad de caché especializado
en el cual almacena de forma local las páginas consultadas recientemente por los usuarios.
● Squid puede ser configurado para ser usado como proxy transparente de manera que las
conexiones son enrutadas dentro del proxy sin configuración del lado del cliente, y
habitualmente sin que el propio cliente conozca de su existencia. De modo predefinido
Squid utiliza el puerto 3128 para atender peticiones, sin embargo se puede especificar que
lo haga en cualquier otro puerto disponible o bien que lo haga en varios puertos disponibles
a la vez.
5 Ministerio de Educación - Dirección de Sistemas| Marcelo Ponce – Eugenio Regis
● Ofrece la posibilidad de establecer reglas de control de acceso. Esto permite establecer
políticas de acceso en forma centralizada, simplificando la administración de una red.
● Squid está compuesto también por el programa dns server, que se encarga de la búsqueda
de nombres de dominio. Cuando Squid se ejecuta, produce un número configurable de
procesos dns server, y cada uno de ellos realiza su propia búsqueda en DNS. De este modo,
se reduce la cantidad de tiempo que la caché debe esperar a estas búsquedas DNS.
● Squid no debe ser utilizado como Proxy para protocolos como SMTP, POP3, TELNET, SSH, IRC, etc.
Como acceder a Squid El acceso a la interfaz web de Squid se hace desde la propia interfaz de Webmin, para acceder a
esta puedes:
1. Si estas en el servidor pueden hacer clic sobre el icono de "Servicios" en el escritorio. Si estas desde un equipo portátil y conectado a la red del colegio, debes: Abrir un navegador y en la barra de direcciones escribir "servicios.miescuela.local:10000" (sin comillas). Das la orden de mostrar la página y el navegador debería lanzar una advertencia, a la que respondes que estás de acuerdo y decides continuar mostrando el contenido.
2. Dirigite al apartado “Servidores” y finalmente a “Squid –Servidor Proxy.
Servidores > Squid - Servidor Proxy
Configuración de Squid
6 Ministerio de Educación - Dirección de Sistemas| Marcelo Ponce – Eugenio Regis
Los archivos donde se encuentra toda la configuración de Squid están en la ruta /etc/squid En
la raíz de este directorio encontramos el archivo de texto plano squid.conf que contiene la
configuración de Squid.
Otros > Explorador de Archivos
Modos de trabajo Proxy Transparente y Tradicional
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). En un proxy tradicional cada equipo debe ser configurado
manualmente.
7 Ministerio de Educación - Dirección de Sistemas| Marcelo Ponce – Eugenio Regis
Servidores > Squid - Servidor Proxy > Puertos y Trabajo en Red
Puertos de Trabajo (Redireccionamiento de puertos en Squid) La redirección de puertos juega un papel muy importante en nuestro servidor, pues de esta
configuración dependerá la transparencia de la conexión entre los clientes y el Squid.
Notarán también que si se desactiva el redireccionamiento automático de puertos, se borrará la
línea en el archivo <iptables.up.rules> correspondiente a la cadena PREROUTING de la tabla NAT. La línea
a considerar es la siguiente:
# Forward HTTP connections to Squid proxy
-A PREROUTING -p tcp -m tcp -i eth0 --dport 80 -j REDIRECT --to-ports 3128
Esta propone cambiar toda la trayectoria de los paquetes con destino al puerto 80 hacia el
puerto 3128 donde serán administrados por nuestro SQUID.
8 Ministerio de Educación - Dirección de Sistemas| Marcelo Ponce – Eugenio Regis
Servidores > Squid - Servidor Proxy > Configuración del Redireccionamiento de Puertos
Teniendo en cuenta lo expuesto consideren que de no realizarse este redireccionamiento del
tráfico hacia squid, este no podría cumplir con su trabajo. No se administraría la caché, tampoco se
filtrarían URLs ni las demás restricciones que podríamos aplicar usando nuestras ACL’s.
Directiva en el <squid.config> que fija el modo de trabajo y el puerto (o puertos) donde escucha
las peticiones.
http_port 3128 transparent
Caché Web Se llama caché web a la caché que almacena documentos web (es decir, páginas, imágenes,
etcétera) para reducir el ancho de banda consumido, la carga de los servidores y el retardo en la descarga.
Un caché web almacena copias de los documentos que pasan por él, de forma que subsiguientes
peticiones pueden ser respondidas por el propio caché, si se cumplen ciertas condiciones.
9 Ministerio de Educación - Dirección de Sistemas| Marcelo Ponce – Eugenio Regis
Servidores > Squid - Servidor Proxy > Opciones de Caché
Antes de hacer el Backup del servidor borrar la cache. Para esto existe
una utilidad en Webmin en el apartado Servidor proxy Squid > Limpiar y reconstruir cache.
Directivas más usadas para configurar la Caché Desde el archivo <squid.config> la directiva que define la cantidad de memoria real dedicada
para almacenar los datos más solicitados, es la siguiente: cache_mem 8 MB
Servidores > Squid - Servidor Proxy > Uso de Memoria
10 Ministerio de Educación - Dirección de Sistemas| Marcelo Ponce – Eugenio Regis
Otras directivas de configuración general
Parámetros cache_swap, porcentaje de uso del archivo de intercambio del sistema operativo para la
caché-
cache_swap_low 90
cache_swap_high 95
Tamaño máximo para los objetos a almacenar en la cache.
maximum_object_size 10240 MB
Paginas que contengan ciertos caracteres no deben almacenarse en cache.
hierarchy_stoplist cgi-bin ? hotmail gmail yahoo escuela.factor.com.mx
Tamaño que deseamos que tenga la cache en el disco
cache_dir aufs /var/spool/squid 700 16 256 # 700MB de cache con 16 directorios subordinados y 256 niveles cada uno
Cada cuanto se actualiza el cache.
# \.zip$ archivos del tipo ZIP
# 0 tiempo mínimo para considerar un archivo como fresco expresado en minutos.
# 50% de tiempo para considerar un archivo como fresco.
# 1440 tiempo máximo para considerar un archivo como fresco expresado en minutos.
refresh_pattern \.zip$ 0 50% 1440 # ^ftp protocolo
refresh_pattern ^ftp: 0 50% 1440
Log de Eventos (Bitácora)
El registro de eventos como se imaginarán es de gran importancia, con el podremos analizar el
tráfico de Squid y es esta bitácora la que consultará el generador de informes.
q lerdo q es
Directiva que define donde se almacenaran los eventos del comportamiento de la cache de squid
cache_log /var/log/squid/cache.log
Directiva que indicar donde se guarda el log de registros
access_log /var/log/squid/access.log squid
11 Ministerio de Educación - Dirección de Sistemas| Marcelo Ponce – Eugenio Regis
servidores > Generador de Informes de Análisis de Squid
servidores > Generador de Informes de Análisis de Squid
12 Ministerio de Educación - Dirección de Sistemas| Marcelo Ponce – Eugenio Regis
Generador de Informes de Análisis de Squid > Lista de informes ya generados
Generador de Informes de Análisis de Squid, vista de un informe.
Listas de Control de Acceso Las reglas ACL son Listas de Control de Acceso y pueden ser de varios tipos. Su finalidad es
definir conjuntos de elementos que ayudarán, más adelante a definir las reglas de acceso.
En nuestro tiempo como administradores nos ha sucedido, en más de una oportunidad, que
Squid deje de brindar servicio debido a una mala confección de las ACLs. En ocasiones la herramienta nos
13 Ministerio de Educación - Dirección de Sistemas| Marcelo Ponce – Eugenio Regis
muestra mensajes de error, aunque no siempre es tan amable. Es aquí donde se hace difícil nuestra tarea.
Les dejamos algunos Tips, para prevenir problemas:
○ Asegurarse de no repetir un objetivo. Por ejemplo, si tenemos dos ACLs definiendo un
grupo de NIC (directiva ARP). Nunca repetir una MAC, ni en la misma ACL, ni en ACLs
diferentes. Se produce un comportamiento anormal y el servicio puede detenerse.
○ Si se define una lista de dominios, no listar el dominio principal y un subdominio del
mismo dominio. Ejemplo, .google.com y mail.google.com. Estas dos definiciones no son
compatibles entre sí, o usamos una o la otra.
La sintaxis de las ACLs es la siguiente:
acl [nombre de la acl] [tipo] [parámetros] [definición]
Tipos de ACL más usados Regla sobre Dirección IP de origen (source).
una sola dirección acl administrador src 192.168.1.0/24 más de una dirección acl administrativos src 192.168.1.10 192.168.1.20
importar un archivo externo (también de texto plano) donde está la lista de direcciones acl 4B_turno_tarde src “/etc/squid/4BTT.txt”
Regla sobre Dominio de destino (destiny domain). una sola dirección acl hotmail dstdomain .hotmail.com más de una dirección acl correo dstdomain .hotmail.com .yahoo.com.ar .gmail.com
Regla sobre Expresión Regular de Dominio de Destino (destiny domain regular expression)
El parámetro -i desactiva la opción case sensitive acl facebook dstdom_regex -i facebook
Regla sobre Expresión Regular de URL
(Uniform Resource Locator regular expression)
Se usan para definir url según palabras clave acl palabras_no_permitidas url_regex “/etc/squid/url_prohibidas.txt”
14 Ministerio de Educación - Dirección de Sistemas| Marcelo Ponce – Eugenio Regis
Regla de Ruta de URL de Expresión Regular
Sirve para definir tipos de archivo para la descarga acl extensiones urlpath_regex “/etc/squid/extensiones_prohibidas.txt”
Regla tipo Tiempo (time)
Se usan las iniciales de los días en inglés, y el formato de hora de 00:00 a 24:00 acl horario time MTWHF 09:00-18:00
Regla sobre el protocolo de resolución de direcciones (ARP)
Sirve para filtrar por dirección MAC (media access control) también conocida como ID de
Hardware. Pueden usar el comando GETMAC para averiguarla desde el Prompt de Windows. acl administrador arp 09:00:2b:23:45:67
Restricciones Proxy Por otro lado, las restricciones de acceso se apilan de tal manera que podemos ir
combinando las listas de control de acceso. Las restricciones lo que hacen es decir: “tomamos una
lista (o sea una ALC) y todo lo que coincida (o no) con ella lo denegamos o lo
permitimos”. A su vez se arma una lista de restricciones. Squid lee la lista de restricciones de arriba
hacia abajo aplicándolas. El orden es: primero permito y luego deniego.
Regla Permitir (allow)
si coincide con la acl permite el acceso http_access allow administrador
si NO coincide con la acl permite el acceso http_access allow !administrador
Regla Denegar (deny)
si coincide con la acl deniega el acceso http_access deny alumnos
si NO coincide con la acl deniega el acceso http_access deny !administrador
Nota: para ambas reglas se puede citar más de una acl
http_access deny !administrador alumnos http_access allow administrador !alumnos
15 Ministerio de Educación - Dirección de Sistemas| Marcelo Ponce – Eugenio Regis
Opciones de la página de error
Cuando Squid debe mostrar un mensaje de error lo hace a través de una página especial para
cada tipo de error. Una de las primeras cosas que intentamos hacer en nuestros servidores fue cambiar el
idioma es estos mensajes. La directiva que define en que carpeta se buscaran los archivos de dichas
páginas web es la siguiente: error_directory /usr/share/squid/errors/Spanish
Otros > Explorador de Archivos: error_directory /usr/share/squid/errors/Spanish
Los lectores atentos estarán pensando “¿Y sí me dirijo a este directorio, podre modificar el
mensaje de error a mi gusto?”. La respuesta es, sí. Fue lo que hicimos. Les dejamos el código de nuestros
archivos para el mensaje de error de “acceso denegado”.
16 Ministerio de Educación - Dirección de Sistemas| Marcelo Ponce – Eugenio Regis
mensaje de acceso denegado personalizado
CÓDIGO HTML <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<TITLE>Acceso Denegado</TITLE>
</HEAD>
<BODY bgcolor="#E6E6FA">
<font size="6" color="red" face="verdana">Acceso Denegado
<HR noshade size="1px">
<font size="2" color="black" face="verdana">
Mientras intentabas acceder a la siguiente URL: <A HREF="%U">%U</A><BR>
Si es necesario el profe puede solicitar al Adminitrador de la Red habilitar la navegación en Internet para tu curso.<BR><BR>
<strong>Puedes navegar libremente en los siguientes sitios web:</strong><BR><BR>
<A HREF="http://www.conectarigualdad.gob.ar">Conectar Igualdad</A><BR>
<A HREF="http://www.exocampus.com">Exocampus</A><BR>
<A HREF="http://www.educared.org">Educared</A><BR>
<A HREF="http://www.anses.gob.ar">Anses</A><BR>
<A HREF="http://www.miescuela.local">Miescuela.local</A><BR>
<A HREF="http://www.englishexercises.org">English Exercises</A><BR>
<A HREF="http://translate.google.com">Google Traductor</A><BR>
<A HREF="http://www.wikipedia.org">Wikipedia</A><BR>
<A HREF="http://www.rae.es">Real Academia Española</A><BR>
17 Ministerio de Educación - Dirección de Sistemas| Marcelo Ponce – Eugenio Regis
<A HREF="http://www.infoleg.gov.ar">Información Legislativa - Gobierno de la Nación Argentina</A><BR>
<A HREF="http://ipem90.blogspot.com">ipem90.blogspot.com - Blog del Colegio</A><BR><BR>
En los recreos puedes navegar en Internet, para buscar información o para divertirte.<BR>
Pero recuerda que cuando toque el timbre debes apagar tu netbook y volver al aula ordenadamente.<BR><BR>
<HR noshade size="1px">
<strong>Recuerda que debes registrar tu equipo para que se active la garantía.
<A HREF="http://servicioswww.anses.gov.ar/conigreg/Pagina/menu_registracion.aspx">Registrar</A></strong>
<BR><BR><BR><BR>
<BR><BR><BR><BR>
</BODY>
</HTML>
Aquí otro ejemplo
18 Ministerio de Educación - Dirección de Sistemas| Marcelo Ponce – Eugenio Regis
CÓDIGO HTML <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"> <TITLE>IPEM Nº 168 "DIEGO DE ROJAS"</TITLE>
<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE> </HEAD><BODY> <H1> <IMG SRC="http://i717.photobucket.com/albums/ww173/prestonjjrtr/Smileys%20Holidays/Halloween/eyes_light.gif"> ACCESO DENEGADO <IMG SRC= "http://i164.photobucket.com/albums/u31/SlappyThePenguin/star-wars-smiley-5472.gif"> </H1> <H2>El URL solicitado se encuentra bloqueado</H2> <HR noshade size="1px">
<P> Mientras se intentaba traer el URL: <A HREF="%U">%U</A> <P> Ha ocurrido el siguiente problema:
<UL> <LI>
<STRONG> Acceso Denegado. </STRONG>
<P> Las reglas de control de acceso impiden que su petición sea permitida en este momento. Contacte con el Administrador de Redes
si cree que esto es incorrecto.<BR> <BR>
Tenga en cuenta que el acceso a REDES SOCIALES, tales como "Facebook", "Twitter" y "Google+", se encuentran restringidas para el uso solamente en horarios de recreo:<BR> <BR>
<STRONG>Horarios de Redes Sociales:</STRONG><BR> <h4 ALIGN= "MIDDLE" > <LI>09:20-09:30 - 1º RECREO TURNO MAÑANA<BR>
<LI>10:50-11:00 - 2º RECREO TURNO MAÑANA<BR> <LI>12:20-12:30 - 3º RECREO TURNO MAÑANA<BR>
<LI>13:05-13:20 - HORARIO DE ALMUERZO<BR> <LI>14:40-14:50 - 1º RECREO TURNO TARDE<BR> <LI>16:10-16:20 - 2º RECREO TURNO TARDE<BR> <LI>17:40-17:50 - 3º RECREO TURNO TARDE<BR> </P>
</h4>
19 Ministerio de Educación - Dirección de Sistemas| Marcelo Ponce – Eugenio Regis
</UL> <HR>
<H4 ALIGN="MIDDLE">
<table> <tr> <td>
<a href="mailto:[email protected]"> <IMG SRC= "http://img155.imageshack.us/img155/1903/diegocolor.jpg"ALIGN= "MIDDLE " ALT= "IPEM Nº 168 'Diego de Rojas'" WIDTH=80 HEIGTH=100> </a>
</td> <td>
<a href="mailto:[email protected]">Eugenio Regis</a> <BR> Administrador de Redes <BR> <a href="mailto:[email protected]">IPEM Nº 168 "Diego de Rojas"</a> <BR>
Villa General Belgrano - Calamuchita<BR> </td> <td>
<a href="mailto:[email protected]"> <IMG SRC= "http://img854.imageshack.us/img854/1706/cartoonizer3.jpg"ALIGN= "MIDDLE " ALT= "Kuque" WIDTH=110 HEIGTH=100> </a>
</td> </tr> <tr> <td colspan="3" align= "MIDDLE"> <table border>
<tr> <td><a href="http://feibu.com/"> <IMG SRC= "http://img408.imageshack.us/img408/2219/55771180.jpg"ALIGN= "MIDDLE " ALT= "FACEBOOK" WIDTH=80 HEIGTH=100> </a>
</td> <td><a href="http://lawebdelpajarito.com/"> <IMG SRC= "http://img812.imageshack.us/img812/8650/12973713.jpg"ALIGN= "MIDDLE " ALT= "TWITTER" WIDTH=80 HEIGTH=100> </a>
</td> <td><a href="http://guglemas.com/"> <IMG SRC=
"http://img841.imageshack.us/img841/3484/92282004.png"ALIGN= "MIDDLE " ALT= "GOOGLE++" WIDTH=80 HEIGTH=100> </a> </td> </tr>
</table> </td> </tr>
</table> </H4> <HR>
Fuentes y Bibliografía ampliatoria https://docs.google.com/viewer?url=http%3A%2F%2Fdoxfer.webmin.com%2Ftwiki%2Fpub%2FWebmin%
2FEs%2FSERVIDOR_PROXY_SQUID.doc
http://es.tldp.org/Manuales-LuCAS/doc-iptables-firewall/doc-iptables-firewall-html/#1
http://administradores.educarex.es/wiki/index.php/Proxy_cach%C3%A9_y_filtrador_web:_squid
http://bulma.net/body.phtml?nIdNoticia=2284
http://www2.linuxparatodos.net/web/comunidad/base-de-conocimiento/-
/wiki/Base%20de%20Conocimiento/Servidor+Proxy
http://www.visolve.com/squid/squid27/contents.php
http://www.squid-cache.org/
20 Ministerio de Educación - Dirección de Sistemas| Marcelo Ponce – Eugenio Regis
Corta Fuegos de Linux
Un cortafuego (firewall en inglés) es una parte de un sistema o una red que está diseñada para bloquear el acceso no autorizado, permitiendo al mismo tiempo comunicaciones autorizadas.
IPTables Es una herramientas que se construye sobre netfilter, el framework de alteración de paquetes de
Linux 2.4.xy 2.6.x. Se trata de una modificación importante de su predecesor, ipchains, y se utiliza para controlar el filtrado de paquetes, traducción de direcciones de red y manipulación de paquetes. La base de datos de netfilter puede ser alterada por la herramienta iptables. Cuando el equipo se
reinicia estas tablas se vacían. Al cargarse el núcleo nuevamente una rutina, a cargo de iptables, vuelve a
escribir las cadenas (o registros si se quiere) en las tablas. Esta es la estructura de la base de datos en
cuestión.
Tabla Función Nombre de la Cadena Función de la cadena
Filter Filtrado de paquetes
FORWARD
Filtrar paquetes hacia otras NIC
INPUT
Filtrar paquetes que llegan al firewall
OUTPUT
Filtrar paquetes que parten del firewall
Nat Traducción de direcciones de red (Network Address Translation)
PREROUTING
La traducción de direcciones se produce antes
del enrutamiento. Facilita la transformación de
la dirección IP de destino para que sea
compatible con la tabla de enrutamiento del
servidor de seguridad. Se utiliza con NAT de la
dirección IP de destino, también conocida como
NAT de destino o DNAT.
POSTROUTING
La traducción ocurre luego del enrutamiento.
Esto se emplea cuando no fue necesario
modificar la dirección IP de destino en el
PREROUTING.
OUTPUT
Traducción de direcciones de red para los
paquetes generados por el firewall.
Mangle PREROUTING
POSTROUTING
OUTPUT
INPUT
FORWARD
Modificación del bit “quality of service” del
paquete TCP, antes del enrutamiento.
21 Ministerio de Educación - Dirección de Sistemas| Marcelo Ponce – Eugenio Regis
En nuestra experiencia como administradores de red creemos que el filtrado de paquetes es de
gran importancia no solo para la seguridad del sistema, sino para posibilitar una conexión a Internet de
calidad. Para lograr la funcionalidad deseada repasaremos como cerrar y abrir puertos, descartar y
permitir el tráfico de paquetes IP. Manos a la obra...
¿Cuál es la ruta de un paquete al atravesar la lógica de iptables?
22 Ministerio de Educación - Dirección de Sistemas| Marcelo Ponce – Eugenio Regis
23 Ministerio de Educación - Dirección de Sistemas| Marcelo Ponce – Eugenio Regis
De este algoritmo, solo nos interesa lo que suceda en la tabla Filter, el paso de un paquete por
esta tabla se describe en el siguiente diagrama.
Un paquete entra y es analizado. Si su destino es el propio servidor (o host local), se analizan las
reglas INPUT. Si el paquete no es descartado llega al proceso local de destino, es analizado y enviado para ser escrutiniado por las reglas OUTPUT. En el caso de que el destino del paquete fuera otro host solo se analizan las reglas FORWARD.
Acceso al archivo de configuración a interfaz web.
Si bien Webmin propone una interfaz de configuración para el firewall de Linux, creemos que es
más simple y fácil de entender si trabajamos directamente sobre el archivo de configuración. Desde la
interfaz el Webmin en la sección OTROS, accedemos al “Explorador de archivos” (notar el uso de Java).
Navegamos a hasta el siguiente archivo. /etc/iptables.up.rules
24 Ministerio de Educación - Dirección de Sistemas| Marcelo Ponce – Eugenio Regis
Como experiencia personal, les proponemos dos formas de trabajar. Una descargar este archivo
y trabajarlo desde otra aplicación y luego de terminada la edición, subirla al servidor con la sección de “Cargas y Descargas”. Y la otra forma seria usando directamente la herramienta “Editar” del aplet java.
Propuestas de configuración En este último apartado recorreremos dos configuraciones analizando la sintaxis y explicando
que se pretendió hacer con cada línea.
El primer ejemplo de archivo iptables.up.rules
# inicio de la lista de reglas de la cadena MAGLE
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
# fin de la lista de reglas de la tabla MAGLE
# Estas definiciones están intactas, tal cual como vienen tras la instalación del SO.
# Noten que la política por defecto de cada una de las cadenas es Aceptar el paquete que no coincida con
ninguna de las reglas.
*filter
:FORWARD ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
# Descarto SSH que no sea de 172.16.0.10
25 Ministerio de Educación - Dirección de Sistemas| Marcelo Ponce – Eugenio Regis
-A INPUT -p tcp -m tcp ! -s 172.16.0.10 --dport 22 -j DROP
#política permitir cierto tráfico
#Teniendo en cuenta nuestra política “restrictiva de puertos” y a los fines de administrar mejor nuestros
clientes, sabiendo que no todos tienen los mismos privilegios, al principio de la tabla de filtros
señalaremos las siguientes “líneas”.
#Permitir conexiones desde una ip determinada para todos los puertos
-A FORWARD -p tcp -s 172.16.8.84 -i eth0 -o eth1 --dport 1:65535 -j ACCEPT
-A FORWARD -p udp -s 172.16.8.84 -i eth0 -o eth1 --dport 1:65535 -j ACCEPT -A FORWARD -p tcp -s 172.16.8.85 -i eth0 -o eth1 --dport 1:65535 -j ACCEPT -A FORWARD -p udp -s 172.16.8.85 -i eth0 -o eth1 --dport 1:65535 -j ACCEPT -A FORWARD -p tcp -s 172.16.8.87 -i eth0 -o eth1 --dport 1:65535 -j ACCEPT -A FORWARD -p udp -s 172.16.8.87 -i eth0 -o eth1 --dport 1:65535 -j ACCEPT #Denegar Facebook por https -A FORWARD -p tcp -d 69.171.0.0/16 -i eth0 -o eth1 --dport 443 -j DROP -A FORWARD -p udp -d 69.171.0.0/16 -i eth0 -o eth1 --dport 443 -j DROP -A FORWARD -p tcp -d 66.220.0.0/16 -i eth0 -o eth1 --dport 443 -j DROP -A FORWARD -p udp -d 66.220.0.0/16 -i eth0 -o eth1 --dport 443 -j DROP -A FORWARD -p tcp -d 69.63.0.0/16 -i eth0 -o eth1 --dport 443 -j DROP -A FORWARD -p udp -d 69.63.0.0/16 -i eth0 -o eth1 --dport 443 -j DROP #Política de Puertos -A FORWARD -p tcp --dport 0:52 -i eth0 -o eth1 -j DROP -A FORWARD -p udp --dport 0:52 -i eth0 -o eth1 -j DROP -A FORWARD -p tcp --dport 53 -i eth0 -o eth1 -j ACCEPT -A FORWARD -p udp --dport 53 -i eth0 -o eth1 -j ACCEPT -A FORWARD -p tcp --dport 54:79 -i eth0 -o eth1 -j DROP -A FORWARD -p udp --dport 54:79 -i eth0 -o eth1 -j DROP -A FORWARD -p tcp --dport 80 -i eth0 -o eth1 -j ACCEPT -A FORWARD -p udp --dport 80 -i eth0 -o eth1 -j ACCEPT -A FORWARD -p tcp --dport 81:442 -i eth0 -o eth1 -j DROP -A FORWARD -p udp --dport 81:442 -i eth0 -o eth1 -j DROP -A FORWARD -p tcp --dport 443 -i eth0 -o eth1 -j ACCEPT -A FORWARD -p udp --dport 443 -i eth0 -o eth1 -j ACCEPT -A FORWARD -p tcp --dport 444:65535 -i eth0 -o eth1 -j DROP -A FORWARD -p udp --dport 444:65535 -i eth0 -o eth1 -j DROP # Otra política de puertos (recomendado por Marco Antonio de Hoyos)
# vale destacar que no en todas las versiones del núcleo estas líneas son salidas. Son necesarias ciertas
extensiones.
-A FORWARD -p tcp -m multiport ! -d 172.16.0.2 -i eth0 -o eth1 -j REJECT --reject-with icmp-port-
unreachable ! --dports 80,53,443
-A FORWARD -p udp -m multiport ! -d 172.16.0.2 -i eth0 -o eth1 -j REJECT --reject-with icmp-port-unreachable ! --dports 80,53,443 -A FORWARD -p tcp -m multiport ! -d serv0007.exocampus.net -i eth0 -o eth1 -j REJECT --reject-with icmp-port-unreachable ! --dports 80,53,443 -A FORWARD -p udp -m multiport ! -d serv0007.exocampus.net -i eth0 -o eth1 -j REJECT --reject-with
icmp-port-unreachable ! --dports 80,53,443
26 Ministerio de Educación - Dirección de Sistemas| Marcelo Ponce – Eugenio Regis
COMMIT
*nat
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o eth1 -j MASQUERADE
# redirecciona conexiones HTTP al Proxy Squid
-A PREROUTING -p tcp -m tcp -i eth0 --dport 80 -j REDIRECT --to-ports 3128
COMMIT
Bibliografía http://www.netfilter.org/documentation/index.html
27 Ministerio de Educación - Dirección de Sistemas| Marcelo Ponce – Eugenio Regis
Servidores DHCP
El protocolo de configuración dinámica de host (DHCP, Dynamic Host Configuration Protocol) es
un estándar IP diseñado para simplificar la administración de la configuración de red de los hosts en una
red. Se implementa el uso de servidores para administrar la asignación dinámica de configuraciones. Las
direcciones IP o también llamadas direcciones de Red, en rigor, se asignan a cada interfaz en cada nodo de
la red y debe ser única. La dirección IP identifica al equipo host y la máscara de subred la subred a la que
pertenece. DHCP permite asignar dinámicamente una dirección IP a un cliente a partir de la base de datos
de direcciones IP del servidor DHCP de la red local. En las redes TCP/IP, DHCP reduce la complejidad y
cantidad de trabajo administrativo para volver a configurar los equipos.
Servidor DHCP de nuestros servidores escolares
En nuestro servidor escolar, el servidor DHCP está configurado para brindar direcciones IP dinámicamente en el rango “172.16.1.1 > 172.16.9.254”, lo que nos facilita enormemente la tarea al no tener que asignar manualmente cada equipo. Sin embargo, hay situaciones en las que debemos controlar este proceso con mayor precisión. Es de utilidad decirle al servidor DHCP que asigne a cierta interfaz siempre la misma dirección IP, así por ejemplo podremos diferenciarlo unívocamente con esta dirección en un filtrado de paquetes (Firewall).
Cada interfaz de red cuenta con una dirección física, también llamada dirección MAC (Media Access Control - Control de Acceso al Medio). En el servidor de seguridad (TDServer) es llamada ID de Hardware. Este identificador es el que se usa para poder asignar siempre la misma dirección IP a la misma interfaz.
De vuelta en nuestro servidor... tenemos la posibilidad de acceder a las configuraciones de este servicio desde la interfaz web de Webmin o editando un archivo de configuraciones, que en este caso se
llama /etc/dhcp3/dhcpd.conf.
En esta oportunidad no profundizaremos al explicar la sintaxis del archivo de configuración, solo mostraremos como asignar configuraciones estáticas a equipos de nuestra red desde la interfaz Web de Webmin.
Nos dirigimos dentro del apartado Servidores al enlace correspondiente al Servidor DHCP.
28 Ministerio de Educación - Dirección de Sistemas| Marcelo Ponce – Eugenio Regis
Servidores > Servidor DHCP
En la sección de Máquinas y Grupos de Máquinas, hacemos clic en el enlace “Añadir una nueva
máquina”
Servidores > Servidor DHCP > Añadir una nueva maquina
29 Ministerio de Educación - Dirección de Sistemas| Marcelo Ponce – Eugenio Regis
En donde especificaremos el nombre que le daremos al nuevo equipo, en el ejemplo “Eugenio-NB”, cuya dirección de hardware escribimos separando de a pares con el signo “:” (dos puntos). Siguiendo con la idea original si abrimos nuestro archivo de configuración <dhcpd.conf> encontraremos lo explicado en la siguiente sección: #Red Local - donde asignaremos el rango de las ips que tomaran cada uno de los hosts de nuestra red
subnet 172.16.0.0 netmask 255.255.0.0 { option domain-name-servers 172.16.0.1; option domain-name "miescuela.local"; option routers 172.16.0.1; pool { range 172.16.1.1 172.16.9.254; } } # y aquí agregaremos uno a uno los hosts que decidiremos tengan ip estática. # este es otro ejemplo.
host EugenioCel { hardware ethernet ac:81:f3:1f:a6:b8; fixed-address 172.16.8.84; }
30 Ministerio de Educación - Dirección de Sistemas| Marcelo Ponce – Eugenio Regis
DELAY POOLS
Los Delays Pools son la alternativa que ofrece Squid para el control del ancho de banda (rate
limiting y traffic shaping); son una de las herramientas más importantes que propone Squid. A pesar de ello, están poco documentadas y con frecuencia son mal empleadas.
El beneficio de estos radica en que controlan el ancho de banda, sin causar penalidades (retardo o delay) sobre los objetos traídos desde la caché. En lenguaje técnico de Proxy, un CACHÉ MISS es cuando el objeto buscado NO se encuentra en la memoria cache y debe ser descargado desde un servidor remoto en Internet, y es aquí donde actual los pooles de retardo. Contrario a lo anterior, un CACHÉ HIT ocurre cuando el objeto buscado SI es encontrado en esta memoria intermedia.
CLASES DE DELAY POOLS CLASE 1 El Delay Pool clase 1 define una única estructura de control (en nuestra abstracción un solo
tanque). Este limita el uso del canal de manera global sin importar cómo lo usan los clientes internamente o cómo está definida lógicamente la LAN. En el inglés técnico se habla de la definición de un único aggregate bucket. Esta es la opción indicada si usted desea limitar el ancho de banda que usa Squid, sin importar cómo lo emplean los usuarios. Este tipo permite decir "hay un ancho de banda disponible de 1 Mbps de tráfico desde Internet, para compartir entre todos los usuarios y si alguno se pone a mirar vídeos, no navegamos los demás"
Ejemplo: delay_parameters 1 131072/131072
Internet | ▼ ┌──────┐ | | |~~~~~~| | | | Pool | └──────┘ / / \ \ / / \ \ / / \ \ ☺ ☺ Hosts ☺ ☺
CLASE 2 Este es un Delay clase 1 con como máximo 256 Delay Pools clase 2 subordinados al primero. En
inglés técnico un aggregate bucket y 256 individual buckets. En nuestra abstracción un tanque principal y 256 tanques secundarios alimentados por el tanque principal. Con este Delay es posible controlar el canal que usan 256 clientes. El tipo 2 permite definir un ancho de banda global y un límite por cada usuario. Este tipo te permite decir "hay un ancho de banda disponible de 1 Mbps de tráfico desde Internet pero cada usuario no puede usar más de 64 kbps".
Ejemplo: delay_parameters 1 131072/131072 8192/8192
31 Ministerio de Educación - Dirección de Sistemas| Marcelo Ponce – Eugenio Regis
Internet | ▼ ┌──────┐ | | |~~~~~~| | | | Pool | ────────└──────┘──────── / / \ \ / / \ \ / / \ \ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ | | | | | | | | |~~~~~~| |~~~~~~| |~~~~~~| |~~~~~~| | | | | | | | | | Pool | | Pool | | Pool | | Pool | └──────┘ └──────┘ └──────┘ └──────┘
☺ ☺ ☺ ☺ Hosts
CLASE 3 Este es un Delay Pool clase 1 con 256 Delay Pools clase 2 y 65536 Delay Pools de clase 3
subordinados a este. En ingles técnico un aggregate bucket, 256 network buckets, y 65536 individual buckets. Está orientado para manejar la asignación de ancho de banda en redes clase B.
El tipo 3 te permite definir un ancho de banda global, un límite por cada subred, y un límite por
cada usuario. Este tipo te permite decir "hay un ancho de banda disponible de 1 Mbps de tráfico de internet, pero cada subred no puede usar más de 128kbps, y cada usuario individual no puede usar más de 64kbps".
Ejemplo: delay_parameters 1 131072/131072 16384/16384 8192/8192
Sintaxis Convención para expresar las propiedades de las Delay Pools en el archivo de configuración
<squid.conf>
Primero definimos la cantidad de Pooles a utilizar delay_pools N, donde N es > 0 y representa
la cantidad de Delay Pools a usar.
32 Ministerio de Educación - Dirección de Sistemas| Marcelo Ponce – Eugenio Regis
Ejemplo: delay_pools 3
Definición de la clase de cada pool La clase del Delay Pool se especifica con la directiva delay_class, la siguiente es su sintaxis genérica.
delay_class N C donde N es > 0 y representa el identificador y C representa la clase (puede ser 1, 2 o 3) Ejemplos:
# el Delay Pool número 1 será clase 3 delay_class 1 3 # el Delay Pool número 2 será clase 1 delay_class 2 1 # el Dalay Pool número 3 será clase 2 delay_class 3 2
Directiva delay_access Permite relacionar un pool con una ACL específica y así asignar su uso a una determinada
condición. Es similar a las reglas de acceso de Squid, y de la misma forma es necesario definir previamente las ACls y los Pooles para luego definir si se permite o se deniega el acceso.
delay_access id allow acl name | deny acl name Ejemplos: # se permite el acceso al pool 1 a todos los equipos que estén definidor por la acl <localnet>
Delay_access 1 allow localnet
Parámetros de los Pooles de Retardo Los parámetros de cada Delay Pool se definen por medio de la directiva delay_parameters, cuya
sintaxis es la siguiente.
delay_parameters id rate/size [ rate/size [rate/size]] Los valores de rate y size son dados en Bytes. Por ende no olvide hacer la conversión respectiva de
Kbits (valor en que se mide la velocidad de proveedores de Internet) a Bytes. Ejemplo:
delay_parameters 1 131072/232144
33 Ministerio de Educación - Dirección de Sistemas| Marcelo Ponce – Eugenio Regis
Un Delay clase 1. Se usan máximo 1Mb/s de ancho de banda con ráfagas de descarga de 2Mb. Solo se limita el ancho de banda que usa en total sin importar cómo se distribuye el canal entre los clientes, lo cual da la posibilidad a condiciones de competencia por el ancho de banda en todo momento.
Ejemplo:
delay_parameters 1 131072/464288 16384/131072 Un Delay clase 2. Define que se usarán máximo 1Mb/s para navegación con ráfagas de 4Mb para
una asignación del canal al máximo, 256 clientes de 128Kb/s con ráfagas de descarga de 512Kb (esto es, pueden descargar 512Kb a todo lo que de el canal si tienen el individual bucket lleno). Este montaje es para una organización cuyos usuarios demandan una gran cantidad de canal. Aquí el peor caso se presenta cuando hay 8 clientes demandando todo el canal asignado de forma continua.
Ejemplo:
delay_parameters 1 131072/232144 16384/65536 8192/12800 Un Delay clase 3 con 1 Mb/s (131072B/s) en total para navegación, con un tamaño para ráfagas
(burst) globales de 2Mb (232144Bytes). Para cada subred se asigna un canal máximo de 128Kb/s con un tamaño para ráfagas de 512Kb (65536Bytes) con un ancho de banda para cada host de 64Kb/s (8192B/s) con la posibilidad de ráfagas de descargas de 100Kb (12800Bytes). Note que los valores para cada subred y host exceden los límites de canal disponible si hay más de 4 clientes. En este caso se produce una condición de competencia y el primero que solicita el canal es el que lo obtiene.
En los Delay Pools clase 2 y clase 3 es posible deshabilitar los buckets que no se desea utilizar
colocando -1/-1 en el bucket correspondiente. # asigno el canal a hosts en una red sin límite global
delay_parameters 1 -1/-1 10000/200000
Pooles de Retardo desde WEBMIN Desde la interfaz principal del módulo Squid, accedemos a “Pools de Retardo”
34 Ministerio de Educación - Dirección de Sistemas| Marcelo Ponce – Eugenio Regis
Servidores > Squid - Servidor Proxy
Utilizamos el link, “Agregar un nuevo pool de retardo”
Servidores > Squid - Servidor Proxy > Pools de retardo
Completamos el formulario con los datos que damos a continuación.
35 Ministerio de Educación - Dirección de Sistemas| Marcelo Ponce – Eugenio Regis
Servidores > Squid - Servidor Proxy > Pools de retardo > Agregar Pool de Retardo
clase de pool: "1 -Agregar" límite agregado (para clases 1, 2 y 3) : 56kb /segundo, 100 kb máx. Límite individual (para las clases 2 y 3): Ilimitado Límite de red (para clase 3): Ilimitado
NOTA: DEBIDO A QUE EL WEBMIN HACE UNA MALA CONVERSIÓN DE LAS UNIDADES DE MEDIDA RECOMENDAMOS PRIMERO HACERLAS MANUALMENTE Y EXPRESARLAS DIRECTAMENTE EN BYTES.
36 Ministerio de Educación - Dirección de Sistemas| Marcelo Ponce – Eugenio Regis
Servidores > Squid - Servidor Proxy > Pools de retardo > Agregar Pool de Retardo
Servidores > Squid - Servidor Proxy > Pools de retardo > Agregar Pool de Retardo
Finalmente hacemos clic en crear....
Servidores > Squid - Servidor Proxy > Pools de retardo > Agregar Pool de Retardo
Esta es la página resultante, pero no es todo...
37 Ministerio de Educación - Dirección de Sistemas| Marcelo Ponce – Eugenio Regis
Servidores > Squid - Servidor Proxy > Pools de retardo
Aún no hemos terminado, debemos asignar las reglas de acceso. Hacemos clic en
“agregar una ACL nueva para este pool”
Servidores > Squid - Servidor Proxy > Pools de retardo > 1
38 Ministerio de Educación - Dirección de Sistemas| Marcelo Ponce – Eugenio Regis
Agreguen una de "permitir" a "localnet", luego “Salvar”
Servidores > Squid - Servidor Proxy > Pools de retardo
Salvan nuevamente
39 Ministerio de Educación - Dirección de Sistemas| Marcelo Ponce – Eugenio Regis
Servidores > Squid - Servidor Proxy > Pools de retardo
y con eso tenemos terminado nuestro primer Delay Pool, el que le dará acceso a
internet a cada uno de los host en nuestra red a una velocidad de 56 kbits/s. Aunque podemos también declarar esto u otra configuración en la ubicación /etc
dentro del archivo <squid.conf> Como dijimos al principio primero declararemos la cantidad de Pools (haremos otro
ejemplo que se ajusta a nuestros casos con conexiones de entre 1mbits/s y 1.5 mbits/s dados por nuestro ISP)
# declararemos 2 Pools - uno para casos con privilegios y el otro general con restricciones de velocidad
delay_pools 2 # declaramos quien tiene acceso y quien NO a cada uno de nuestros pools delay_access 1 allow mi_cel mi_NB Veronelli-NB mi_PC delay_access 1 deny !mi_cel !mi_NB !Veronelli-NB !mi_PC delay_access 2 allow localnet delay_access 2 deny !localnet # ahora decimos de que clase serán - cabe destacar que al menos uno tendrá acceso
sin restricción así que como será ilimitado deberá ser de clase 1 delay_class 1 1 delay_class 2 2 # y ajustamos los parámetros con las velocidades y los tamaños que mejor se ajusten
a nuestra configuración # el primer delay estará ilimitado simbolizado con los “-1/-1”
40 Ministerio de Educación - Dirección de Sistemas| Marcelo Ponce – Eugenio Regis
# y en el segundo delay declaramos que la velocidad de descarga de nuestra red es de 1mbits/s (131072) pero con un “limite” de 2 megabytes (2097152) de descarga y a su vez cada host de nuestra red tendrá un límite de velocidad 96 kbits/s (12288) “limitados” cada 100 kilobytes (102400) de datos descargados.
delay_parameters 1 -1/-1 delay_parameters 2 131072/2097152 12288/102400