Upload
phungdung
View
227
Download
0
Embed Size (px)
Citation preview
FIREWALL
IPTABLES
Centro Asociado de Melilla
1. Seguridad de alto nivel
2
Hay dos elementos imprescindibles
que han de combinarse, que son los
cortafuegos y los proxys.
Una estructura típica que mantienen
un gran número de empresas es la
que se muestra en la primera
Figura, donde se reflejan estos dos
mecanismos, que sirven como
barrera ante posibles intrusos.
La configuración de una red doméstica,
como la que habitualmente tenemos en
casa, es mucho más simple, como se
muestra en la segunda Figura, donde
el router ejerce de cortafuegos.
2. Cortafuegos: qué son y para qué sirven
3
Un cortafuegos es un sistema que audita y evita los intentos de conexión no
deseados tanto desde los equipos hacia la red como desde la red hacia los
equipos.
Un cortafuegos puede ser tanto un dispositivo hardware como software, es
decir, podemos tener una máquina diseñada específicamente para esta función o
utilizar una aplicación que se instala en uno de los equipos conectados a la red.
La siguiente figura muestra la estructura de una red básica donde se ha
instalado un equipo que actúa como cortafuegos, ocupándose de filtrar todo
aquello que sale y entra a la red de área local.
Para que un Firewall entre redes funcione como tal debe tener al menos dos
tarjetas de red.
2. Cortafuegos: qué son y para qué sirven
4
Además del filtrado de paquetes, el uso del cortafuegos nos ofrece
una serie de servicios adicionales muy útiles par proteger el buen uso de
nuestra red y nuestros servidores, como muestra la siguiente Tabla.
3. Tipos de cortafuegos
5
3.1. Según su ubicación
Existen dos criterios de clasificación principales de los cortafuegos, uno basado en
la tecnología implementada y otro en su ubicación dentro del sistema.
La ubicación de los cortafuegos va intrínsecamente relacionada con el sistema
que se quiere proteger. Podemos distinguir entre dos tipos de cortafuegos en
función de donde se localicen:
Los cortafuegos de sistema o personales restringen la comunicación no autorizada
con un equipo, actuando como un sistema de defensa perimetral, mientras que los
cortafuegos de subredes protegen toda una subred en conjunto (actuando como
único punto de entrada).
Cortafuegos de sistema o
personales.
Cortafuegos de subredes
3. Tipos de cortafuegos
6
3.1. Según su ubicación
Cortafuegos personales
Los cortafuegos personales surgen como respuesta a la necesidad de proteger
los equipos pertenecientes a redes privadas particulares, por ejemplo, las que
se instalan en nuestros domicilios para permitirnos conectarnos a Internet.
Este tipo de cortafuegos se instala en el equipo del usuario y proporciona cinco
funciones principales:
1. Permite supervisar todas las conexiones con el exterior, incluyendo los accesos a
servicios de Internet.
2. Permiten monitorizar los programas locales que tratan de acceder a Internet para
que el usuario pueda decidir si permite que lo hagan o no.
3. Proporciona mecanismos para bloquear los posibles intentos de intrusión al
equipo u otros ataques realizados desde Internet.
4. Realiza un registro de todas las conexiones realizadas desde el equipo.
5. Algunos de ellos incorporan filtros antispam, así como detección de virus u otros
códigos que pueden ser perjudiciales para el equipo.
3. Tipos de cortafuegos
7
3.1. Según su ubicación
Cortafuegos de subredes
Los cortafuegos de subredes tienen como objetivo aplicar una política de
seguridad a un grupo de sistemas desde un único punto. Para ello lo primero que
debe hacerse es agrupar los sistemas en zonas de seguridad, de modo que se
aplique las mismas reglas a los equipos que forman parte de cada zona, y puedan
aplicarse distintas reglas a distintas zonas.
En el caso de los cortafuegos de subredes sus principales funciones son:
1. Autorización de servicios (entrantes y salientes).
2. Control de acceso a los servicios basándose en la identidad del usuario o equipo.
3. Registro y monitorización de accesos a la red.
El uso de los cortafuegos de subred permite establecer una protección global,
lo que nos permite relajarnos en la protección individual de cada equipo,
estableciendo un único punto de implantación de la política de seguridad. Esto
facilita su administración y, dado que los ataques se producen sobre un único
sitio, hace más sencilla su vigilancia.
3. Tipos de cortafuegos
8
3.2. Según su tecnología
Según la tecnología que utilizan se distinguen cuatro tipos de cortafuegos:
Cortafuegos a nivel de paquete de datos:
Este tipo de cortafuegos trabaja a nivel de red de la pila de protocolos OSI y
para determinar que paquetes IP debe dejar pasar mira tanto las direcciones
origen y destino de los mismo como los puertos que se utilizan.
Cortafuegos a nivel de circuito:
Actúa en el nivel de sesión, además de tener en cuenta las direcciones IP y los
puertos, también mira la información relativa a la sesión y los números de
secuencia de los paquetes enviados.
Cortafuegos a nivel de aplicación:
Estos cortafuegos analizan todos los paquetes de datos de un determinado
servicio en su conjunto, no como paquetes independientes, por lo que son
exclusivos para un servicio.
Cortafuegos transparentes:
Actúan a nivel de enlace, determinando que paquetes pasan o no en función del
resultado de evaluar una serie de reglas. Son indetectables para los atacantes ya
que no tienen una dirección IP.
4. Filtrado de Paquetes
9
4.1. Parámetros utilizados para filtrar paquetes
Un router que permita el filtrado de paquetes podrá ser configurado de una
de las tres siguientes maneras para manejar los paquetes que salen y
entran a través de sus interfaces:
1. Bloquear todas las conexiones externas, excepto las conexiones
SMTP para permitir que el equipo reciba correo electrónico.
2. Bloquear las conexiones de sistemas considerados no seguros.
3. Permitir conexiones de correo electrónico, FTP, etc, pero bloquear
otros servicios (como TFTP) que se consideren peligrosos.
Para poder llevar a cabo cualquiera de estas tres acciones es necesario
tener configuradas una serie de reglas, que se irán consultando, en
orden, para determinar qué paquetes pasan o no.
4. Filtrado de Paquetes
10
4.1. Parámetros utilizados para filtrar paquetes
4. Filtrado de Paquetes
11
4.2. Reglas de filtrado
Las reglas de filtrado nos permitirán establecer políticas de seguridad para nuestro
sistema, evitando los accesos no autorizados sin crear inconvenientes a los accesos
que sí queramos permitir.
Estas reglas se suelen expresar como una tabla de condiciones y acciones que se
consulta hasta que se encuentra con la regla que permita tomar una decisión, lo
cuál hace especialmente importante que las reglas se establezcan en orden de
prioridad de actuación y que los administradores las revisen periódicamente.
Un ejemplo de una tabla teórica es el que puedes ver en la siguiente Tabla, donde
se muestra una serie de reglas definidas en función de las direcciones IP origen y
destino y de los puertos origen y destino, donde se indica si se permitirán los
paquetes provenientes de esas direcciones.
4. Filtrado de Paquetes
12
4.2. Reglas de filtrado
Las reglas pueden agruparse en tres tipos:
1. Autoprotección del cortafuegos: no se permitirá ningún datagrama
dirigido directamente al firewall.
2. Reglas de salida: pueden ser permisivas o restrictivas.
• Si son permisivas se prohíben las excepciones y el resto se autoriza
• Si son restrictivas se prohíbe todo excepto las excepciones permitidas.
3. Reglas de entrada: está todo prohibido excepto aquellas excepciones
que específicamente hayan sido autorizadas.
4. Filtrado de Paquetes
13
El ejemplo más claro de reglas de filtrado podemos verlo en el sistema de redes
Netfilter de Linux, que se gestiona a través de una utilidad que se denomina iptables,
la cual se maneja desde el terminal. La estructura básica de este comando es la
siguiente:
# iptables –table [COMMAND] chain rule-specification [options]
table es una de las siguientes opiones:
• filter (para filtrar paquetes)
• nat (para implementar NAT)
• mangle (para enmascarar direcciones IP)
COMMAND indica qué accción se va a realizar:
• -A para añadir una orden
• -D para borrar
• Etcétera
chain indica una regla ya definida en alguna de las tablas
rule-specification hace referencia a la regla que vayamos a definir
options permite depurar la regla
4. Filtrado de Paquetes
4.2. Reglas de filtrado
4. Filtrado de Paquetes
15
4.3. Reglas de filtrado (iptables)
El filtrado de paquetes en GNU/Linux se hace desde el propio núcleo y utiliza las
siguientes tablas o listas de reglas:
Filtrador de paquetes (filter): la tabla por defecto más básica, utilizada para
efectuar el filtrado de paquetes de: entrada, reenvío y salida.
Traducción de direcciones de red (nat): la tabla que utiliza el
enmascaramiento para que otras máquinas se conecten a una serie de
servicios a través de la IP del cortafuegos. Para ello modifica la cabecera de
los paquetes.
lteración de paquetes (mangle): manipula el estado de un paquete.
Para cada paquete, en función del procesamiento que vaya a sufrir, se consultala cadena que corresponda a su situación dentro de iptables.
Dentro de cada cadena las reglas se inspeccionan secuencialmente [orden dereglas importante]
Si el paquete encaja con las condiciones de una regla, se ejecuta la accióncorrespondiente y se abandona la cadena.
Si el paquete no encaja con ninguna regla, se le aplica la política por defecto quese haya asignado a esa cadena. Es decir,
4. Filtrado de Paquetes
16
4.3. Reglas de filtrado (iptables)
Los paquetes recibidos o enviados siempre deben cumplir
las reglas de una tabla.
Cuando un paquete cumple una regla particular en una de
las tablas se le asigna un objetivo.
Los objetivos de iptables son los siguientes:
Iptables-tablas
• TABLAS. Se corresponden con los distintos tipos de procesamiento quese pueden aplicar sobre los paquetes.
Tablas disponibles:
FILTERControla decisiones de filtrado de
paquetes (aceptar/denegar)
Cadenas: INPUT, OUTPUT, FORWARD.
NAT
Controla traducción de direcciones (NAT:network address translation)
Cadenas: PREROUTING, OUTPUT, POSTROUTING
MANGLEControla los procesos de modificación del contenido y las opciones de los paquetes.
Cadenas: PREROUTING, OUTPUT .INPUT, FORWARD, POSTROUTING
Iptables-cadenas
• CADENAS: Contienen las listas de reglas a aplicar sobre lospaquetes
Cadenas predeterminadas:
INPUT
Reglas a aplicar sobre los paquetes destinados a la propia máquina, (justo antes de pasarlos a las aplicaciones) Usada para
controlar las entradas al propio equipo/cortafuegos
OUTPUT
Reglas a aplicar sobre los paquetes originados en la propia máquina, (justo
después de recibirlas desde las aplicaciones) Usada para controlar las salidas del propio equipo/cortafuegos
FORWARD
Reglas a aplicar sobre los paquetes que atraviesan la máquina con destino a otras (paquetes en tránsito reenviados). Usadas en Cortafuegos de borde (protección red
interna)
Iptables-opciones de comandos
-A Añade la regla iptables al final de la cadena especificada. Este es elcomando utilizado para simplemente añadir una regla cuando el ordende las reglas en la cadena no importa.
-C Verifica una regla en particular antes de añadirla en la cadenaespecificada por el usuario. Este comando puede ser de ayuda paraconstruir reglas iptables complejas pidiéndole que introduzca parámetrosy opciones adicionales.
-D Borra una regla de una cadena en particular por número (como el 5para la quinta regla de una cadena). Puede también teclear la reglaentera e iptables borrará la regla en la cadena que corresponda.
-E Renombra una cadena definida por el usuario. Esto no afecta laestructura de la tabla.
-F Libera la cadena seleccionada, que borra cada regla de la cadena. Sino se especifica ninguna cadena, este comando libera cada regla decada cadena.
Iptables-opciones de comandos
-h Proporciona una lista de estructuras de comandos, así como tambiénun resumen rápido de parámetros de comandos y opciones.
-I Inserta una regla en una cadena en un punto especificado por un valorentero definido por el usuario. Si no se especifica ningún número,iptables colocará el comando en el tope de la cadena.
-L Lista todas las reglas de la cadena especificada tras el comando. Paraver una lista de todas las reglas en todas las cadenas en la tabla pordefecto filter, no especifique ninguna cadena o tabla.
-N Crea una nueva cadena con un nombre especificado por el usuario.
-P Configura la política por defecto para una cadena en particular, de talforma que, cuando los paquetes atraviesen la cadena completa sincumplir ninguna regla, serán enviados a un objetivo en particular, comopuedan ser ACCEPT o DROP.
Parámetros principales
-p protocolo del paquete. Puede tomar los valores tcp, udp, icmp o all (ip).
-s origen del paquete. Puede ser un nombre de máquina, una IP, una redcompleta especificada como dirección/máscara, etc.
-d destino del paquete. Puede ser un nombre de máquina, una IP, una redcompleta especificada como dirección/máscara, etc.
--sport puerto origen, se puede especificar el puerto de origen delpaquete, o un rango de puertos puertoinicio-puertofinal siendo los valorespor defecto para estos 0 y 65535 (=2e16 -1)
--dport análogo a sport para el puerto destino.
-i interfaz por el que el paquete es recibido, para paquetes en la cadenade entrada
-o interfaz de salida del paquete en el caso de las cadena de salida o deredireccionamiento (forward).
4. Filtrado de Paquetes
22
4.3. Reglas de filtrado (Ejemplo iptables)
#Regla que acepta conexiones al puerto 80
iptables -A INPUT -i eth0 -s 0.0.0.0/0 -p tcp --dport www -j ACCEPT
iptables: commando iptables (no hay que olvidar que las reglas son un shell script)
-A : append, opción para añadir la regla
INPUT : estado del paquete (al entrar es input).
-i eth0 : interfaz de red eth0
-s 0.0.0.0/0 : dirección de acceso (cualquiera en este caso)
-p tcp : tipo de protocolo
--dport : puerto de destino (nombre o número)
-j ACCEPT : destino del paquete
Ordenes básicas:
iptables –F : flush de reglas (Borrado de todas las reglas anteriores)
iptables –L : listado de reglas que se están aplicando
4. Filtrado de Paquetes
23
4.3. Reglas de filtrado (Ejemplo iptables)
Guía rápida de flags:
-s : source address. (dir. Origen) Ej: -s 192.168.1.0/24
-d : destino. Ej: -d 84.56.73.3
-p : tipo de protocolo(tcp,udp,icmp). Ej: -p tcp
--sport : puerto de origen Ej: --sport :80
--dport : puerto de destino Ej: --dfport :80
-i = –in-interface : el interfaz por el que se entra (eth0,eth1, ppp0,…)
-o = --out-interface: el interfaz por el que se sale (eth0,eth1, ppp0,…)
Notas:
-i se usa con reglas INPUT y FORWARD
-o se usa con reglas FORWARD y OUTPUT
--sport y –dport en algunas versiones se han de usar sólo con
protoco tcp o udp
4. Filtrado de Paquetes
24
4.3. Reglas de filtrado (Ejemplo iptables)
Todo lo que viene de la red 203.175.34.0/24 por el interfaz eth0 se deja pasar:
Iptables -A INPUT –i eth0 -s 203.175.34.0/24 -d 0.0.0.0/0 -j ACCEPT
Permitir el puerto 80:
iptables -A INPUT -i eth0 -p tcp --sport 80 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT –i eth0 -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 19720 -j DROP
Denegar las entradas al puerto 19720
1. Queremos que sólo la máquina B pueda
“hablar” con C y sólo usando el protocolo TCP.
2. Los paquetes que no cumplan esas
condiciones serán rechazados
iptables -F
iptables -P FORWARD DROP
iptables -t filter -A FORWARD -p tcp -s 192.168.1.2 -d 192.168.2.1 -j ACCEPT
iptables -t filter -A FORWARD -p tcp -s 192.168.2.1 -d 192.168.1.2 -j ACCEPT
4. Filtrado de Paquetes
4.3. Reglas de filtrado (Ejemplo iptables)
¿Cómo se lee la tercera línea ?
Ejemplo1 de script: En vez de escribir los comandos uno tras otro, podríamos
crear un script de shell
#!/bin/sh
# sólo la máquina B 192.168.1.2 pueda hablar con C 192.168.2.1
# Primero borramos todas las reglas previas que puedan existir
iptables -F
iptables -X
iptables -Z
iptables -t nat –F
# Se establecen políticas duras por defecto. solo pasa lo que se autoriza
iptables -P FORWARD DROP
iptables -t filter -A FORWARD -p tcp -s 192.168.1.2 -d 192.168.2.1 -j ACCEPT
iptables -t filter -A FORWARD -p tcp -s 192.168.2.1 -d 192.168.1.2 -j ACCEPT
echo " OK . Verifique que lo que se aplica con: iptables -L –n”
Resultado Ejemplo1
Impide hacer ping a la máquina
C desde las máquinas A y B
iptables -t filter -A FORWARD -p icmp -s 0.0.0.0/0 -d 192.168.2.1 -j DROP
4. Filtrado de Paquetes
4.3. Reglas de filtrado (Ejemplo iptables)
Ejemplo2: LAN con equipo A:192.168.1.1, B:192.168.1.2, C:192.168.2.1.
Impedir hacer ping a la máquina A
#!/bin/sh
# Impedir hacer ping a la máquina A:192.168.1.1
# Primero borramos todas las reglas previas que puedan existir
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
# Se establecen políticas duras por defecto.
iptables -P FORWARD DROP
iptables -t filter -A FORWARD -p icmp -s 0.0.0.0/0 -d 192.168.1.1 -j DROP
echo " OK . Verifique que lo que se aplica con: iptables -L -n
Resultado Ejemplo 2
ping
#!/bin/sh
# LAN 192.168.3.0/24 (eth0 es la interfaz de Internet y eth1 la de la LAN)
# Primero borramos todas las reglas previas que puedan existir
iptables -F
iptables -X
iptables -Z
iptables -t nat –F
# 1. Se permite todo el tráfico al localhost (loopback)
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# 2. Cerramos los puertos bien conocidos para los protocolos tcp y udp
iptables -A INPUT -p tcp --dport 1:1024 -j DROP
iptables -A INPUT -p udp --dport 1:1024 -j DROP
# 3. Cerramos el puerto del gestión de webmin
iptables -A INPUT -p tcp --dport 10000 -j DROP
Ejercicio 1
# 4. Permitimos el acceso al firewall desde la red local
iptables -A INPUT -s 192.168.3.0/24 -i eth1 -j ACCEPT
iptables -A OUTPUT -d 192.168.3.0/24 -o eth1 -j ACCEPT
# 5. Todo lo que venga del exterior (eth0) y vaya al puerto 80, lo redirigimos a
la máquina 192.168.3.12
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 80 -j DNAT --to
192.168.3.12
# 6. Todo lo que venga del exterior y vaya al puerto 22, lo redirigimos a la
máquina 192.168.3.27
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 22 -j DNAT --to
192.168.3.27
echo " OK . Verifique que lo que se aplica con: iptables -L -n"
….Ejercicio 1
Resultado Ejercicio 1
#!/bin/sh
# LAN 192.168.10.0/24 (eth0 es la interfaz de Internet y eth1 la de la LAN, eth2 otro.)
#Las reglas deben aplicarse en el servidor
# Primero borramos todas las reglas previas que puedan existir
iptables -F
iptables -X
iptables -Z
iptables -t nat –F
# 1. Autorizamos el acceso al firewall desde la red local.
iptables -A INPUT -s 192.168.10.0/24 -i eth1 -j ACCEPT
Ejercicio 2
# 2. Abrimos los puertos necesarios para el correo electrónico
iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 110 -j ACCEPT
# 3. Abrimos los puertos que se dirigen al servidor web (80 y 443).
iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --dport 443 -j ACCEPT
# 4. Aceptamos los puertos que desde la red local se dirigen a DMZ para consultar el DNS
iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --dport 53 -j ACCEPT
iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p udp --dport 53 -j ACCEPT
# 5. Se deniega el tránsito hacia los demás puertos desde la red local a todo
iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -j DROP
echo " OK . Verifique que lo que se aplica con: iptables -L -n"
…Ejercicio 2
Resultado Ejercicio 2
Ejercicio 3 iptables
Dispones de un servidor linux con dos tarjetas de red (eth0 y eth1).
La tarjeta eth0 está conectada a un router que tiene acceso a Internet. La tarjeta
eth1 está conectada a una red local.
Se pretende que dicho servidor haga de cortafuegos entre Internet y la red de
área local.
Se va a suponer que se utiliza como política por defecto aceptar todas las
conexiones.
Realiza las siguientes tareas:
1.- Limpia las posibles reglas anteriores:
# iptables -F
2.- Acepta todos los paquetes de entrada, salida y reenvío
# iptables -P INPUT ACCEPT
# ___________ ___ __________ _____________
# ___________ ___ __________ _____________
3.- Acepta todos los paquetes de entrada y salida de la interfaz de loopback:
# iptables -A INPUT -i lo -j ACCEPT
# iptables -A OUTPUT -o lo -j ACCEPT
4.- Permite TODO a la interfaz de red interna (192.168.27.0/24)
# iptables -A INPUT -s 192.168.27.0/255.255.255.0 -j ACCEPT
5.- Acepta paquetes desde todas las conexiones establecidas.
# iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
6.- Deja a la máquina de la red local con dirección IP 192.168.27.199 conectar
vía SSH (puerto 22):
# iptables -A ________ -s ____________ -p tcp --dport _____ -j ___________
7.- Si tenemos un servidor web funcionando, dejamos abierto el puerto 80:
# iptables -A ___________ -p _______ ___________ ______ -j ___________
8.- Impide el acceso a Webmin (puerto 10000) a toda la red:
# iptables -A INPUT -p ______ _________ __________ -j ________
9 Cierra el resto de puertos por debajo de 1024:
# iptables -A INPUT -i eth0 -p tcp --dport 1:1024 ____ _________