ongreen4 1

Anuncio
ongreen4
1
Universidad Simón Bolı́var
Laboratorio Docente de Computación
Trimestre Enero-Marzo 2011
FIREWALLS, IPTABLES, NAT,
DMZ
Javier I Argüello Sosa
09-10047
1 de mayo de 2011
Índice general
1. Introducción
3
2. Conceptos básicos
2.1. Modelo TCP/IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2. Segmentos TCP, datagramas UDP y Paquetes IP . . . . . . . . . . . .
2.3. Tipos de Mensaje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
4
5
5
3. Firewalls
3.1. Qué puede hacer un Firewall? . . . . . . . . . . . . . . . . . . . . . . .
3.2. Tipos de firewall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3. Polı́ticas de un firewall . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
7
7
8
4. Iptables
4.1. Tablas y cadenas . . . . .
4.2. Destinos de las reglas . . .
4.3. Seguimiento de conexiones
4.4. El comando iptables . . .
4.5. Especificando las reglas . .
.
.
.
.
.
10
10
11
12
13
13
5. Proxy
5.1. Ventajas y Desventajas de un Proxy . . . . . . . . . . . . . . . . . . . .
5.2. Tipos de proxy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
15
16
6. Nat
6.1. NAT estática . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2. NAT dinámico o PAT . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
17
17
7. DMZ
18
8. Implementación
8.1. Objetivos . . . . . . . . .
8.2. Requisitos . . . . . . . . .
8.3. Descripción de la red . . .
8.4. Instalación y configuración
20
20
20
20
21
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
de un servidor DHCP
1
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
8.5. Implementación de un NAT haciendo uso de iptables . . . . . . . . . .
8.6. Implementación NAT mediante un servidor Proxy . . . . . . . . . . . .
2
21
23
Capı́tulo 1
Introducción
Los origenes de Internet, se remontan a los años setenta, época en la que una masa
minoritaria y privilegiada disfrutaba de una tecnologı́a que no habı́a tenido su momento
de explosión.
No existı́a la seguridad y tampoco era un aspecto de importancia. Se utilizaban los
routers para mantener separadas las redes unas de otras.La visión de Internet como una
comunidad relativamente pequeña de usuarios con máquinas compatibles, que valoraba
la predisposición para el intercambio y la colaboración, terminó con una serie de importantes violaciones de seguridad de internet que se produjo a finales de los años ochenta
cuando surgieron los primeros intrusos ”hackers”. En este momento la seguridad se
convirtió en un aspecto vital de la administración de redes.
Poco a poco las empresas fueron percatándose del peligro a base de perder tiempo,
dinero e información, se empezaron a crear sistemas de seguridad para redes, entre los
cuales se encuentran los famosos Firewalls o Cortafuegos.
Este trabajo tiene como objetivo introducir al lector en los conceptos básicos de
Firewall y sus posibles aplicaciones para mejorar la seguridad de su sistema. Por otro
lado, mostrar los conceptos, usos y beneficios de implementar un NAT y DMZ a la
hora de evaluar la seguridad de nuestra red. Por último, se mostrará como compartir la conexión de Internet mediante la configuración de un NAT haciendo uso de la
herramienta Iptables e implementando un servidor Proxy haciendo uso de Squid.
3
Capı́tulo 2
Conceptos básicos
2.1.
Modelo TCP/IP
A finales de los años setenta y comienzo de los ochenta, se comenzaron a implementar
las redes cuyo desarrollo surgió con mucho desorden en todos los sentidos.
Inmediatamente la redes comenzaron a tomar gran tamaño y comenzaron los problemas de comunicación entre estas debido a las dificultades para intercambiar información.
Por esta razón, se desarrolló un segundo modelo conocido como el modelo de referencia
TCP/IP, donde los fabricantes y programadores de este modelo lograron llegar a un
acuerdo sobre las comunicaciones de Internet.
El modelo TCP/IP describe un conjunto de protocolos que permiten que una computadora se comunique en una red. TCP/IP posee cuatro capas de abstracción (los
datos que viajan por la red atraviesan distintos niveles de protocolos) las cuales están
jerarquizadas de la siguiente manera:
Capa de aplicación: incorpora aplicaciones de red estándar (Telnet, SMTP,
FTP, etc.).
Se encuentra en la parte superior de las capas del protocolo TCP/IP y es la que
contiene las aplicaciones de red que permiten la comunicación mediante las capas
inferiores.
Capa de transporte: brinda los datos de enrutamiento, junto con los mecanismos que permiten conocer el estado de la transmisión. Permite que las aplicaciones
que se ejecutan en un equipo remoto puedan comunicarse.
Capa de Internet: es responsable de proporcionar el paquete de datos (datagrama).
Capa de acceso a la red: Especifica la forma en que los datos deben enrutarse.
4
2.2.
Segmentos TCP, datagramas UDP y Paquetes
IP
Tanto TCP (Protocolo de Control de Transmisión)como UDP(User Datagram Protocol) son protocolos de nivel de tranporte (capa de transporte) los cuales permiten el
flujo de datos a través de la red.
La diferencia principal entre estos es la fiabilidad. UDP añade al datagrama la información necesaria para la comunicación extremo a extremo, lo que proporciona gran
velocidad y baja fiabilidad, mientras que TCP envı́a grandes cantidades de información
de forma fiable, lo que tiene un coste en su eficiencia debido a que se debe añadir bastante información a los paquetes a enviar.Para que los mensajes de la capa de transporte
se entreguen entre los dos programas, es necesario enviar dichos mensajes a las respectivas máquinas donde corren los programas. Para esto, se hace uso de TCP o UDP para
encapsular los mensajes en un datagrama de Internet adecuado para enviarlo al otro
equipo. Estos datagramas son paquetes IP.
2.3.
Tipos de Mensaje
Mesajes ICMP: es un mensaje de control y estado IP de la capa de red. Su
encabezado contiene:
Las direcciones de origen y destino
El identificador de Protocolo ICMP
Mensajes ICMP
Un mensaje ICMP indica si el paquete es un comando, una respuesta a un comando, información de estado o una condición de error. Estos no se envı́an entre
programas, sino entre las máquinas de origen y destino.
Un ejemplo de un mensaje ICMP es un mensaje de error cuando se intenta conectarse a un servidor web remoto y el servidor web no se está ejecutando en el host
remoto, el host remoto devolverá un mensaje de error ICMP indicando que el
servicio no existe.
Mensajes UDP: UDP es un protocolo de entrega de transporte sin estado y no
confiable. No ofrece control de flujo, por lo que el datagrama es eliminado si no
se puede procesar durante el camino. Su encabezado solo contiene las direcciones
IP de origen y destino ası́ como los números de puerto de servicios de origen y
destino.
Se dice que no es confiable ya que no asegura la entrega correcta de los paquetes,
pero tiene a su favor que es varias veces más rápida que la transferencia de datos
basadas en TCP.
5
Mensajes TCP: los mensajes TCP se envı́an de forma confiable en ambas direcciones. Se entregan sin errores, sin pérdida o duplicaciones y de forma ordenada.
La gran mayorı́a de los servicios de red se ejecutan sobre TCP. Su encabezado
contiene:
Las direcciones IP de origen y destino.
El tipo de mensaje de Protocolo TCP.
Los puertos de servicio de destino.
Los números de secuencia y de confirmación.
Indicadores de control (permiten crear y mantener un circuito virtual confiablei).
6
Capı́tulo 3
Firewalls
Los firewalls son dispositivos que evitan el acceso de usuarios no autorizados a un
host determinado. Estos dispositivos son instalados tomando en cuenta la arquitectura
de la red, de los servicio que tienen que quedar disponibles para los usuarios. En otras
palabras, se puede definir un firewall como aquel sistema que crea una barrera segura
entre dos redes.
3.1.
Qué puede hacer un Firewall?
Manejar y controlar el tráfico en la red.
Autenticar accesos.
Actuar como intermediario.
Proteger los recursos.
Registrar y almacenar información sobre eventos.
3.2.
Tipos de firewall
El término ”firewall”tiene varios significados dependiendo del mecanismo que se use
para implementarlo, el nivel de pila del protocolo TCP/Ip sobre el que funciona y las
arquitecturas de red y enrutamiento que se usen.
Firewall de filtrado de paquetes: está implementado en el sistema operativo
y funciona en las capas de transporte y de red de la red. Su función es proteger el
sistema filtrando los paquetes basándose en la información de sus encabezados.
Un firewall de filtrado de paquetes realiza un enrutado selectivo, trabajando a
nivel de Transporte y de Red. Éste consta de una lista de reglas de aceptación y
negación, las cuales definen explicitamente los paquetes que pueden pasar y los
que no a través de una interfaz de red.
7
Firewall proxy: implementado como aplicación independiente para cada servicio
con el que se usa un proxy. Una aplicación proxy aparece ante el servidor como el
programa cliente, y ante el cliente como el servidor real. Su función es garanatiar la
integridad de los datos, es decir, que se estén intercambiando los datos apropiados
para el servicio, filtrarlos contra virus y hacer cumplir las directivas de alto nivel
de control de acceso detallado.
La finalidad más habitual de un proxy es la de servir de servidor proxy, el cual
permite acceso a internet a todos los equipos de una organización cuando sólo se
dispone de un único equipo conectado.
Dual Homed Host: es una arquitectura de firewall basada en un único equipo
que implementa funciones de filtrado tanto a nivel de red como de aplicación
mediante el uso de dos interfaces. Este modelo bloquea el ruteo de paquetes de
forma directa obligando a establecer las conexiones siempre usando este proxy o
host bastion como intermediario.
Es más segura que el modelo anterior pero presenta una gran desventaja ya que
si el servidor es traspasado, la totalidad de la red interna queda sin protección.
Screened Host: este modelo combina dos de las alternativas antes mencionadas,
Firewall de filtrado y Dual Homed Host. En primera instancia se filtran paquetes
mediante el router, más adelante y como segunda lı́nea de defensa se encuentra
el host bastion el cual tiene un número reducido de servicios publicados hacia el
exterior.
Screened Subnet: mejor conocida como Zona Desmilitarizada (DMZ), es actualmente la más utilizada e implementada ya que incrementa el nivel de seguridad
agregando una subred intermedia entre las redes externa e interna, donde se ubican los servidores y servicios públicos. Este modelo evita tener un único punto
débil como en el caso del host bastion.
3.3.
Polı́ticas de un firewall
Hay dos maneras de implementar un firewall:
1. Polı́tica por defecto ACEPTAR: en principio todo lo que entra y sale por el
firewall se acepta y solo se denegará lo que se diga explı́citamente.
2. Polı́tica por defecto DENEGAR: todo esta denegado y solo se permitirá pasar
por el firewall aquellos que se permita explı́citamente.
La primera polı́tica facilita mucho la gestión del firewall, ya que simplemente nos
tenemos que preocupar de proteger aquellos puertos o direcciones que sabemos que nos
8
interesa; el resto no importa tanto y se deja pasar. El único problema que podemos
tener es que no controlemos que es lo que esta abierto, o que en un momento dado
se instale un software nuevo que abra un puerto determinado, o que no sepamos que
determinados paquetes ICMP son peligrosos. Si la polı́tica por defecto es ACEPTAR y
no se protege explı́citamente, el sistema estarı́a expuesto a posibles ataques.
9
Capı́tulo 4
Iptables
Iptables y Netfilter
Ipables es un sistema de firewall vinculado al kernel de linux, el cual se ha extendido
a partir del kernel 2.4 de este sistema operativo. Iptables es una interfaz que permite
definir una serie de reglas las cuales indican qué hacer con los paquetes de red.
Iptables es el componente más popular construido sobre Netfilter, el cual es el responsable de filtrar, interceptar y manipular paquetes de red. Netfilter busca en los
encabezamiento de cada paquete que pasa por la pasarela y toma una decisión sobre
que hacer con estos.
Netfilter comienza con tres grupos de normas:
INPUT
OUTPUT
FORWARD
En Iptables, las reglas se agrupan en cadenas y éstas a su vez se agrupan en tablas.
Cada tabla está asociada con un tipo diferente de procesamiento de paquetes.
Cada cadena representa una lista de normas que se consultarán secuencialmente
para cada paquete. Estas normas especifican qué paquetes las cumplen y cual es el
destino final de estos.
4.1.
Tablas y cadenas
Existen tres tipos de reglas en Iptables:
Mangle
Nat
10
Filter
Tabla de filtrado (filter table): responsable del filtrado de paquetes, los cuales
pasarán por alguna de las cadenas predefinidas.
1. Input: es atravesado por los paquetes que tienen como destino el propio
sistema.
2. Output: son recorridos por los paquetes generados por el propio sistema.
3. Forward: recorrido por aquellos paquetes que pasan por el sistema para ser
ruteados al verdadero destino.
Tabla Nat (Nat table): encargada de configurar las reglas de reescritura de
direcciones o puertos.
Cadenas
1. Prerouting: es atravesada por los paquetes entrantes antes de que se consulte la tabla de ruteo local.
2. Postrouting: por donde circulan los paquetes luego de haber elegido el
camino de ruteo.
Tabla Mangle: esta tabla está diseñada para manejos más avanzados como por
ejemplo la calidad de servicio. Contiene las demás cadenas y es usada principalmente para modificar paquetes.
4.2.
Destinos de las reglas
Cada una de las cadenas pueden tener diferentes destinos ya incorporados, como
accept, drop, queue o return. Cuando un destino es el nombre de una cadena definida
por el usuario, el paquete es dirigido a esa cadena para ser procesado.
Accept (aceptar): el paquete es aceptado por Netfilter, donde dependiendo
del caso de la cadena, puede que apruebe su ingreso al host (Input), su egreseo
(Output), o se acepte su ruteo a través del host (Forward).
Drop (descartar): indica que los paquetes deben ser descartados sin ningún tipo
procesamiento. Esto se refleja en el sistema que envı́a el paquete como .alcance
del máximo tiempo de espera en la comunicación”(communication timeout).
Queue (encolar): hace que el paquete sea enviado a una cola en el espacio de
usuario que una aplicación personalizada los tomo y modifique. Si no existe dicha
apliacación el tratamiento es similiar a un Drop.
11
Return (retorno): hace que el paquete deje de circular por la cadena en cuya
regla se ejecutó el destino return. Si esta cadena es una subcadena de otra, el
paquete continuará por la cadena superior. Si la cadena es una cadena principal,
al paquete se le aplicará la polı́tica por defecto de la cadena.
Reject (rechazo): tiene el mismo efecto que drop, con excepción de que envı́a
al origen un paquete de error como puede ser un tcp-reset, para conexiones TCP
denegadas, un icmp-protocol-unreachable para sesiones UDP denegadas. Este se
usa principalmente en las cadenas de Input y Forward de la tabla de filtrado, y
es controlado a través del parametro -reject-with.
Log (bitácora): este destino se usa para enviar un mensaje a un archivo y es
generalmente utilizado para debuggear el tráfico (analizar fallos).
Dnat: hace que la dirección Ip y opcionalmente el puerto sean reescritos para la
traducción de direcciones de red. Se utiliza la opción -to-destination para indicar
el destino a usar.
Snat: hace que la dirección Ip y opcionalmente el puerto sean reescritos para la
traducción de red. Se utiliza la opción -to-source para indicar el origen a usar.
Masquerade: trabaja de manera similar a Snat pero automatiza la traducción
de la Ip de salida (generalmente es utilizado con direcciones públicas dinámicas).
En vez de cambiar la regla de Snat cada vez que la dirección Ip cambia, se calcula
la dirección Ip de origen a la cual se hace NAT fijándose en la dirección IP de la
interfaz de salida cuando un paquete coincide con esta regla.
4.3.
Seguimiento de conexiones
El seguimiento de conexiones le permite al núcleo llevar la cuenta de las sesiones
lógicas de la red y de este modo relacionarlos de manera que se puedan analizar las
conexiones en su conjunto. La traducción de dirección de red depende de esta información para traducir todos los paquetes relacionados de la misma manera e iptables puede
usarla para actuar como un firewall stateful.
Los cuatro estados en que se clasifican son:
New: creando una nueva conexión.
Established: forma parte de una conexión existente.
Related: relacionada pero no parte de una conexión.
Invalid: no es parte de una conexión existente ni capaz de crear una nueva
conexión.
12
4.4.
El comando iptables
Iptables es un comando que permite la gestión del filtrado de paquetes en sistemas
Linux. El filtrado de paquetes está basado en una serie de reglas establecidas por el
administrador, las cuales permite monitorizar y controlar las conexiones realizadas a
través de una interfaz de red.
-t tabla:hace que el comando se aplique a la tabla especificada. La tabla por
defecto es la tabla filter.
-v: produce una salida con detalles.
-n: produce una salida numérica, es decir, muestra los números de puerto en vez
de los nombre de los servicios y direcciones IP en lugar de los dominios.
4.5.
Especificando las reglas
Las reglas especifican los parámetros que deben cumplir los paquetes para que se
les apliquen dichas reglas y luego la acción a tomar (destino).
-s –source dirección/máscara: indican la dirección IP (y su máscara) del origen
del paquete. Esta dirección puede ser una dmirección IP, una dirección IP con un
prefijo de red asociado, o un nombre de terminal (hostname). Si ! precede al origen,
indica que se van a filtrar los paquetes que no vienen del origen especificado.
-d –destination: indica la dirección IP (y su máscara) de destino del paquete.
-p –protocol: compara paquetes del nombre de protocolo especificado. Si ! precede el nombre del portocolo, se comparan todos los paquetes que no son el protocolo especificado. Se puede encontrar una lista de todos los protocolos en el
archivo /etc/protocols.
-i –in-interface: nombre de una interfaz a través de la cual un paquete va a
ser recibido (solo para paquetes entrando en las cadenas INPUT, FOWARD y
PREROUTING). El argumento ! invierte el significado de la expresión. Si el
nombre de la interfaz termina con ’+’, entonces cualquier interfaz que comience
con este nombre será comparada.
–destination-port –sport [puerto[:puerto]]: matchea paquete TCP o UDP
(dependiendo del argumento a la opción -p) que vienen de los puertos o rango
de puertos (cuando se usa la forma puerto:puerto) especificados. Si el argumento
! precede la especificación,se matchean todos los paquetes TCP o UDP que no
vienen de los puertos o rango de puertos especificados.
13
tcp-flags mask comp: Matchea paquetes TCP que tienen marcadas o desmarcadas ciertas banderas del protocolo TCP. El primer argumento especifica las
banderas a examinar en cada paquete TCP, escritas en una lista separada por
comas (no se permiten espacios). El segundo argumento es otra lista separada por
comas de banderas que deben estar marcadas dentro de las que se debe examinar.
Estas banderas son: SYN, ACK, FIN, RST, URG, PSH, ALL, y NONE. Por lo
tanto, la opción -tcp flags SYN, ACK, FIN, RST SYNsolo va a matchear paquetes
con la bandera SYN marcada y las banderas ACK, FIN y RST desmarcadas.
–syn: Matchea paquetes TCP que tienen la bandera SYN marcada y las banderas
ACK, FIN y RST desmarcadas. Estos paquetes son los que se usan para iniciar
conexiones TCP. Al bloquear tales paquetes en la cadena de INPUT, se previenen
conexiones TCP entrantes, pero conexiones TCP salientes no serán afectadas.
Esta opción puede combinarse con otras, como –source, para bloquear o dejar
pasar conexiones TCP entrantes solo de ciertas terminales o redes. Esta opción es
equivalente a -tcp-flags SYN, RST, ACK SYN”. Si ’ !’ precede a –syn, el significado
de la opción se invierte.
14
Capı́tulo 5
Proxy
Un Proxy es un programa o dispositivo que realiza una acción en representación de
otro. Su finalidad más habitual es la de servidor proxy, donde sirve de intermediario
entre un navegador Web e Internet y permite el acceso a Internet a una red de computadoras cuando solo se dispone de un único equipo conectado, es decir, una única
dirección IP.
El uso más común es el de servidor Proxy, el cual permite dar seguridad y mejorar
el acceso a páginas Web, conservándolas en la caché. De este modo, cuando un usuario
envı́a una petición para acceder a una página Web que está almacenada en la caché, la
respuesta y el tiempo de visualización es más rápido. Los servidores Proxy aumentan
también la seguridad ya que pueden filtrar cierto contenido Web y programas maliciosos.
5.1.
Ventajas y Desventajas de un Proxy
Ventajas
1. Control: sólo el intermediario hace el trabajo real, por tanto se pueden limitar y
restringir los derechos de los usuarios, y dar permisos sólo al proxy.
2. Ahorro: sólo el usuario(s) proxy requiere del equipo necesario para realizar el
trabajo real.
3. Velocidad: El proxy puede hacer un caché en el cual guardará las respuestas de
las peticiones para darlas de manera directa cuando otro usuario las solicite.
4. Filtrado: El proxy puede negarse a responder algunas peticiones si detecta que
están prohibidas.
5. Modificación: como intermediario, el proxy puede modificar información basándose
en un algoritmo.
15
Desventajas
1. Abuso: Se debe controlar quién tiene acceso y quién no a sus servicios, tarea que
normalmente es muy difı́cil.
2. Carga: Un proxy tiene que hacer el trabajo de muchos usuarios.
3. Intromisión: algunos usuarios pueden no querer pasar por el proxy, sobretodo si
éste hace de caché y guarda copias de los datos.
4. Irregularidad: un proxy puede representar problemas en ciertos escenarios donde
se presupone la comunicación directa entre un emisor y un receptor.
5.2.
Tipos de proxy
Proxy Transparente: es un proxy que no necesita ninguna configuración especial en los clientes. Se denomina transparente porque el cliente no sabe que los
está usando, es decir, es transparente para él.
Muchas organizaciones usan proxies para reforzar las polı́ticas de uso de la red o
para proporcionar seguridad y servicios de caché. Normalmente, un proxy Web o
NAT no es transparente a la aplicación cliente, por lo cual el usuario puede evadir
el proxy cambiando su configuración.
Un proxy transparente combina un servidor proxy con NAT 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.
Proxy inverso: Es un servidor proxy que, en lugar de permitirles el acceso a
Internet a usuarios internos, permite a usuarios de Internet acceder indirectamente a determinados servidores internos. Con un proxy inverso, el servidor web
está protegido de ataques externos directos, lo cual fortalece la red interna.
Proxy abierto: este tipo de proxy acepta peticiones desde cualquier ordenador,
esté o no conectado a su red.
Este tipo de proxy ejecutará cualquier petición de cualquier máquina que pueda
conectarse a él, realizándola como si fuera una petición del proxy. Por lo que
permite que este tipo de proxy se use como pasarela para el envı́o masivo de
correos de spam.
Un proxy es una herramienta con grandes beneficios como por ejemplo, almacenar
y redirigir servicios como el DNS o la navegación web mediante el cacheo de
peticiones en el servidor proxy, mejora la velocidad general de los usuarios, pero al
aplicar una configuración abierta a todo internet, se convierte en una herramienta
para su uso indebido.
16
Capı́tulo 6
Nat
La tecnologı́a NAT permite que las redes privadas que utilicen direcciones IP no
registradas se puedan conectar a redes públicas. Este mecanismo consiste en utilizar
una dirección IP enrutable para conectar todas las máquinas a la red pública utilizando
la traducción en tiempo real de las direcciones usadas por los paquetes transportados.
Un router NAT cambia las direcciones origen de cada paquete de salida y, dependiendo del método, también el puerto origen para que sea único. Estas traducciones
de dirección se almacenan en una tabla, para recordar qué dirección y puerto le corresponde a cada dispositivo cliente y ası́ saber donde deben regresar los paquetes de
respuesta.
6.1.
NAT estática
Cada dirección privada tiene su dirección pública equivalente. Este tipo de traducción se conoce como traducción de direcciones una a una. Este tipo de NAT no permite
ningún ahorro de direcciones IP ya que es necesaria una dirección pública para cada estación con una dirección privada. Por otra parte implica una gran dificulltad de
gestión si el número de traducciones es elevado.
6.2.
NAT dinámico o PAT
Permite compartir una dirección IP enrutable entre varias máquinas con direcciones
privadas. De esta manera todas las máquinas poseen la misma dirección IP virtual en
forma externa. Para lograr compartir diferentes direcciones IP con una o más direcciones
IP enrutables, la NAT dinámica utiliza la traducción de direcciones de IP del router.
17
Capı́tulo 7
DMZ
El término ”zona desmilitarizada”, DMZ hace referencia a esta zona aislada que
posee aplicaciones disponibles para el público. Es una red local que se encuentra entre
la red interna y la red externa, generalmente Internet.
El objetivo de una DMZ es permitir las conexiones desde la red interna y la externa
a la DMZ, mientras que las conexiones desde la DMZ solo se permiten a la red externa.
Los equipos que se encuentran en la zona desmilitarizada no pueden conectar con
la red interna. Esto permite la posibilidad de dar servicios a la red externa a la vez que
protegen la red interna.
18
La DMZ se usa habitualmente para ubicar servidores que es necesario que sean
accedidos desde fuera, como servidores de correo electrónico, Web y DNS.
Por lo general, la polı́tica de seguridad para la DMZ es la siguiente:
El tráfico de la red externa a la DMZ está autorizado.
El tráfico de la red externa a la red interna está prohibido.
El tráfico de la red interna a la DMZ está autorizado.
Habitualmente una configuración DMZ es usar dos cortafuegos, donde la DMZ se
sitúa en medio y se conecta a ambos cortafuegos, uno conectado a la red interna y
el otro a la red externa. Esta configuración ayuda a prevenir configuraciones erróneas
accidentales que permitan el acceso desde la red externa a la interna. Este tipo de
configuración también es llamado cortafuegos de subred monitoreada (screened-subnet
firewall).
19
Capı́tulo 8
Implementación
8.1.
Objetivos
Para finalizar este trabajo y dejar claro los conceptos mencionados en los capı́tulos
anteriores, se mostrará un ejemplo práctico en el cual se implementará un NAT de tres
maneras completamente diferentes. En primer lugar, se utilizará la herramienta iptables, la cual nos permitirá definir una lista de reglas. Por otro lado, se configurará el
NAT haciendo uso de un Servidor Proxy y se mostrará sus ventajas a la hora de filtrar el contenido de las páginas web. Por último, se utilizará una distribución llamada
Smoothwall, distribución GNU/LINUX diseñado especialmente para que actue como
un cortafuegos.
8.2.
Requisitos
Para poder llevar a cabo la configuración de un NAT, es necesario tener disponibles
al menos dos computadoras de las cuales una debe tener dos interfaces de red fı́sicas.
Por otro lado, se hará uso de un servidor DHCP con la finalidad de otorgar automáticamenta las direcciones IP y las configuraciones de red a las máquinas que se
conecten a la red privada.
8.3.
Descripción de la red
Se utilizará una computadora con dos interfaces de red.
La red externa 192.168.1.0
La red interna 192.168.2.0
Máscara de red 255.255.255.0
eth0 es la interfaz conectada a la red privada o interna.
20
eth1 es la interfaz conectada a la red externa y sirve como gateway.
8.4.
Instalación y configuración de un servidor DHCP
El servidor DHCP será el encargado de proporcionar automáticamente las direcciones ip y las configuraciones de red a las computadoras que se conecten a la red
privada.
Para su intalación debemos instalar el paquete dhcp3-server
sudo apt-get install dhcp3-server
La configuración del servidor se realiza editando el archivo de configuración dhcpd.conf
ubicado en /etc/dhcp3/dhcpd.conf. La configuración que utilizaremos es la siguiente:
ddns-update-style none;
option domain-name-servers 192.168.1.1;
default-lease-time 4000;
max-lease-time 7200;
authoritative;
subnet 192.168.2.0 netmask 255.255.255.0
range 192.168.2.60 192.168.2.80;
option routers 192.168.2.1;
option broadcast-address 192.168.1.255;
option domain-name-servers 72.14.204.147;
default-lease-time 6000
Antes de iniciar el servicio, debemos configurar la interfaz eth0 sudo ifconfig eth0
192.168.2.1 netmask 255.255.255.0
Iniciamos el servidor dhcp
sudo /etc/init.d/dhcp3-server start
8.5.
Implementación de un NAT haciendo uso de
iptables
Como se explicó en el capı́tulo 6, un NAT (Network Address Translation) permite
intercambiar paquetes entre dos redes que poseen direcciones incompatibles. Esto se
21
logra mediante la traducción en tiempo real de las direcciones ip, para lo cual también
es necesario editar los paquetes para permitir la operación de protocolos que incluyen
información de direcciones dentro de la conversación del protocolo.
En este caso utilizaremos la herramienta iptables para establecer las relgas necesarias para realizar el NAT, con la posibilidad de establecer reglas para el filtrado de
paquetes lo que permite configurar el firewall. Con la finalidad que esta configuración
sea permanente, realizaremos un script que se ejecute cada vez que la máquina inicie.
El contenido del script es el siguiente
#!/bin/sh
echo -n Aplicando Reglas de Firewall...
##FLUSH de reglas (Borramos todas las reglas y cadenas existentes)
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
##Establecemos la polı́tica por defecto
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P PROSTROUTING ACCEPT
#interfaz conectada a la red externa eth1
#interfaz conectada a la red interna eth0
iptables -A INPUT -s 192.168.2.0/24 -i eth0 -j ACCEPT
22
## Enmascaramiento de la red local
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth1 -j MASQUERADE
##Activamos el bit de FORWARDING
echo 1 > /proc/sys/net/ipv4/ip forward
8.6.
Implementación NAT mediante un servidor Proxy
Para implementar el NAT mediante un servidor proxy, utilizaremos Squid un programa de software libre que implementa un servidor proxy y un dominio para caché de
páginas web. Instalación del proxy:
sudo apt-get install squid
Configuración del proxy:
La configuración del proxy se lleva a cabo editando el archivo de configuración squid.conf
ubicado en /etc/squid/squid.conf
1. Nombrar el proxy: para esto ubicamos la lı́nea visibles eos
2. Elegimos el puerto: por defecto el puerto de escucha del servidor proxy es 3128.
3. Modificar el tamañ del caché: el caché del squid está activado por defecto lo que
permite que las páginas se carguen más rápido. El tamaño por defecto es de 100
MB (ubicado en /var/spool/squid). Para modificarlo, encuentra la lı́nea cache dir
ufs /var/spool/squid.
4. Definir los derechos de acceso: Crearemos tres listas de acceso:
a) acl all src 0.0.0.0/0.0.0.0
b) acl localhost src 127.0.0.0/255.255.255.255
c) acl mired src 192.168.2.0/255.255.255.0
Permitimos el acceso a localhost, mired y denegamos el acceso a la lista all.
a) http acces allow localhost
b) http acces allow miredt
c) http acces deny all
5. Autorizar los puertos no estándar: Por defecto, Squid sólo autoriza el tráfico
HTTP en algunos puertos (80, etc.) Esto puede ocasionar problemas a algunas
páginas web que utilizan otros puertos. Para evitar que lo bloquee, encuentra la
23
siguiente lı́nea y comentamos:
http access deny !Safe ports
6. Para filtrar el contenido de páginas web, es decir, bloquear aquellas páginas que
no queremos que los clientes visiten, debemos crear una lista de acceso
acl nopermitidos url regex /etc/squid/prohibidas”
http access allow mired !nopermitidos
Creamos un archivo en /etc/squid llamado prohibidas el cual contendrá una lista
con todas las palabras que queremos filtren las págnias que serán bloqueadas.
Luego reiniciamos nuestro servidor squid y todo quedará configurado. Para configuraciones más avanzadas de bloqueo de páginas y contenido se puede instalar y configurar
un módulo de squid llamado Squidguard.
Los clientes los tenemos que configurar para que utilicen el servidor proxy y de esta
manera puedan compartir Internet. En el caso de aquellos que utilcen Mozilla Firefox,
entrar en Preferencias - Avanzadas - Configuración - Manual Proxy configuration, y
colocar la dirección ip correspondiente, en nuestro caso serı́a 192.168.2.1.
24
Bibliografı́a
[1] Jordi I. Griera, José M. Barceló, Ordinas Llorenc, Cerdá Alabern, Enric P. Olivé,
Jaume Abella, Guiomar Corral, Estructura de redes de computadoras, UOC.
[2] Robert L. Zielger, Firewalls Linux, Pentice Hall.
[3] Xabier Pello, IPTABLES Manual Práctico.
[4] Configuración de un router Linux empleando NAT, http://www.merlos.org/
documentos/linux/13-configuracion-de-un-router-linux-empleando-nat.
html
[5] Juan Pablo Sarubbi, Seguridad Informática Técnicas de defensa comunes
bajo variantes del sistema operativo Unix
[6] PROXY, http://dns.bdat.net/blog/index.php?option=com_content&view=
article&id=397:proxy-transparente&catid=21:squid
[7] Proxy, http://es.wikipedia.org/wiki/Proxy
[8] DMZ (Zona desmiltarizada),
dmz-cloisonnement.php3
http://es.kioskea.net/contents/protect/
[9] Servidores Proxy, http://es.kioskea.net/contents/lan/proxy.php3
[10] Seguridad, http://club.telepolis.com/websecure/preliminares.htm
[11] Qué es un firewall, http://www.desarrolloweb.com/articulos/513.php
[12] Iptables, http://cfievalladolid2.net/tecno/linux/iptables.htm
[13] Firewall
Original,http://es.tldp.org/Manuales-LuCAS/GARL2/garl2/
x-087-2-firewall.original.html
[14] A Brief History of Netfilter, http://book.opensourceproject.org.cn/
enterprise/cluster/linuxcluster/opensource/11021/bbl0017.html
[15] TCP/IP, http://es.kioskea.net/contents/internet/tcpip.php3
25
Descargar