You are on page 1of 30

Firewalls y VPNs bajo Linux

Firewalls bajo Linux

• Definición de Firewall
• ¿Qué son las Iptables?
• Zona Práctica 1. Prevenir antes de curar
• Zona Práctica 2. Firewall de una LAN con salida a Internet
• Zona Práctica 3. Firewall de una LAN con DMZ. Señuelos…
• Zona Práctica 4. Firewall de una LAN con salida a internet y VPNS.
• Políticas de Firewall. Partiendo de denegación de Servicios (DROP)
• Técnicas de Ataque mas comunes.
• Hablemos de VPNS bajo Linux, ¿Qué son?
• Ejemplo práctico de VPN.
Definición de Firewall

Un firewall es un dispositivo que filtra el tráfico entre redes, como mínimo


dos. El firewall puede ser un dispositivo físico o un software sobre un
sistema operativo.
Tipos de Firewall

1.- Cortafuegos de capa de red o filtros de paquetes.- Funciona al nivel de la


red de la pila de protocolos (TCP/IP) (nivel 3) como filtro de paquetes IP. A este
nivel se pueden realizar filtros según los distintos campos de los paquetes ip:
origen ip, destino ip... A menudo en este tipo de cortafuegos se permiten filtrados
según campos de nivel de transporte (nivel 4), como el puerto origen y destino, o
a nivel de enlace de datos (nivel 2), como por ejemplo la dirección mac.

2.- Cortafuegos de capa de aplicación.- Trabaja en el nivel de aplicación (nivel


7) de manera que los filtrados se pueden adaptar a características propias de los
protocolos de este nivel. Por ejemplo, si se trata de tráfico HTTP se pueden
realizar filtrados según la URL a la que se está queriendo acceder. Un
cortafuegos a nivel 7 de tráfico HTTP es normalmente denominado Proxy y
permite el acceso de los computadores de la organización a internet de una forma
controlada.
¿Qué son las Iptables?

Iptables es el nombre de la herramienta de usuario por la cual el administrador


puede crear reglas de NAT y de filtrado de paquetes. El nombre de iptables
usualmente es usado para referirse a la estructura completa, incluyendo
netfilter, el seguimiento de la conexión y el NAT. Iptables hoy en día es parte
estandar de la mayoría de las distribuciones Linux.
¿Qué es Netfilter?
Netfilter es un conjunto de rutinas presentes en el kernel del Sistema Operativo
GNU/linux que gestionan el trafico de datos, tanto entrante como saliente, que
accede al Sistema Operativo o aplicaciones
Comandos utilizados con Iptables

Esta parte del comando especifica cual es la tabla en la que queremos añadir la regla. Existen 3 tipos de tablas
válidas : nat, filter y mangle. Nat se refiere a las conexiones que serán modificadas por el firewall, como por
-t [tabla] ejemplo, enmascarar conexiones, realizar redirecciones de puertos, etc. Filter es la tabla donde se añaden
las relacionadas con el filtrado. Mangle tambien modifica paquetes pero, a diferencia de Nat, es mucho mas
potente. Con Mangle podemos modificar cualquier aspecto del paquete (flags, TTL, etc).

Hay 4 opciones básicas con las que se puede jugar en esta apartado del comando. Estas opciones básicas son
las siguientes :

• A es para añadir (Append) una regla. Reglas válidas son INPUT, FORWARD y OUTPUT.
-[AIRDLFZNXP] [regla] • L es para listar las reglas.
• F es para borrar todas las reglas o en el caso de INPUT, FORWARD o OUTPUT seán dados como
argumento se borraran las reglas asociadas solo a esa clase.
• P establece la politica por defecto del firewall. Por defecto es aceptar todas las conexiones.
• X elimina una cadena que esté vacia.
• Z Pone a cero las variables de una cadena.

Aqui es donde se especificarán las características del tipo de paquete que casará con esta regla. Para establecer
reglas sencillas (reglas stateless), podemos operar con las siguientes opciones : -s (ip/red fuente), -d (ip/red
destino), --sport (puerto fuente), --dport (puerto destino), y -p (protocolo). Un ejemplo de comando de la
sintaxis de un ocmando iptables sencillo podría ser este (la parte en que se define el criterio de la regla está
[criterio]
en negrita) :

iptables -A FORWARD -p [protocolo] -s [ip/red fuente] --sport [puerto fuente] -d [ip/red destino] --
dport [puerto destino] -j DROP

Aqui establecemos que es lo que hay que hacer con el paquete. Las posibles opciones son : ACCEPT, REJECT,
DROP, REDIRECT, LOG (existén más, pero estas son las básicas).

ACCEPT aceptará el paquete.


-j [action]
REJECT o DROP lo desecharán, la direncia entre ellos reside en que DROP descartará el paquete
silenciosamente y REJECT emitirá un paquete ICMP Port Unreachable, indicando que está cerrado.
REDIRECT redirigirá el paquete a donde se indique en el criterio del comando y por último...
LOG lo logeará para su posterior análisis.
Zona práctica 1. Prevenir antes de Curar

Como podemos
ver, comenzamos
aplicando las
reglas, en un
principio,
comenzamos
aceptando todo tipo
de entradas,
salidas, etc…, si
nos fijamos ahora
mismo en la ultima
linea estamos
aceptando la
comunicación hacia
nuestra tarjeta de
red.
Con esta configuración realizamos ping a nuestra propia tarjeta de red, y
comprobamos que hay respuesta.
Cambiamos ACCEPT por drop en la linea /sbin
Ahora, hacemos ping a nuestra tarjeta de red para comprobar si las iptables
estan haciendo efecto.
Y podemos comprobar que funciona correctamente...

Tambien , podemos comprobar las reglas que tiene nuestro firewall


ejecutadas por medio del comando iptables –L -n
Con este ejemplo práctico hemos visto una forma básica de proteger a nuestro
equipo.
Vayamos complicando la cosa….
Firewall de una LAN con Salida a Internet

Vamos a configurar el firewall


para una LAN con acceso a
Internet.
Contamos que el Router es la
eth0 y el firewall la eth1.
#!/bin/sh
## SCRIPT de IPTABLES - ejemplo del manual de iptables
## Ejemplo de script para firewall entre red-local e internet
##
echo -n Aplicando Reglas de Firewall...
## FLUSH de reglas
iptables -F
iptables -X Aplicamos Flush de Reglas
iptables -Z
iptables -t nat -F
## Establecemos politica por defecto
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT Políticas por defecto
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
## Empezamos a filtrar
## Nota: eth0 es el interfaz conectado al router y eth1 a la LAN
# Denegamos respuesta de nuestra máquina
/sbin/iptables -A INPUT -i lo -j DROP
# Al firewall tenemos acceso desde la red local
iptables -A INPUT -s 192.168.10.0/24 -i eth1 -j ACCEPT
# Ahora hacemos enmascaramiento de la red local
# y activamos el BIT DE FORWARDING (imprescindible!!!!!)
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE
# Con esto permitimos hacer forward de paquetes en el firewall, o sea
# que otras máquinas puedan salir a traves del firewall.
echo 1 > /proc/sys/net/ipv4/ip_forward
## Y ahora cerramos los accesos indeseados del exterior:
# Nota: 0.0.0.0/0 significa: cualquier red
# Cerramos el rango de direcciones del primer puerto disponible.
iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 1:1024 -j DROP
iptables -A INPUT -s 0.0.0.0/0 -p udp -dport 1:1024 -j DROP
# Cerramos un puerto de gestión: webmin
iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 10000 -j DROP
echo " OK . Verifique que lo que se aplica con: iptables -L -n"
# Fin del script
Zona Práctica 3. Firewall de una LAN con DMZ. Señuelos…

Primero definamos que es un DMZ:

Una DMZ (del inglés Demilitarized zone) es una red o parte de una
red, separada de otros sistemas por un cortafuegos, que permite que sólo
entren o salgan ciertos tipos de tráfico de red.
El objetivo principal, es que todo el trafico externo se comunique solamente
con la DMZ. La DMZ no se puede comunicar con la red interna, previniendo
posibles ataques en caso de algun intruso gane control de la DMZ.
En un ejemplo típico, una empresa protegerá sus redes internas frente a
Internet mediante un cortafuegos, pero dispondrá de una DMZ
independiente a la cuál puede acceder de forma limitada el público general.
Los servidores Web públicos podrían situarse en una DMZ de este estilo.
Estructura de Red con DMZ

Router

Eth0

Eth1

Eth2

DMZ

192.168.1.3
Este seria nuestro fichero de Firewall con DMZ:

#!/bin/sh
## SCRIPT de IPTABLES - ejemplo del manual de iptables
echo -n Aplicando Reglas de Firewall...
## FLUSH de reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
## Establecemos politica por defecto
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
## Empezamos a filtrar
## Nota: eth0 es el interfaz conectado al router y eth1 a la LAN
# Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos
# a una maquina interna
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.3.2:80
# Los accesos de un ip determinada HTTPS se redirigen e esa
# maquina
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to 192.168.3.2:443
# El localhost se deja.
/sbin/iptables -A INPUT -i lo -j ACCEPT
# Al firewall tenemos acceso desde la red local
iptables -A INPUT -s 192.168.10.0/24 -i eth1 -j ACCEPT
# Ahora hacemos enmascaramiento de la red local y de la DMZ
# para que puedan salir haca fuera
# y activamos el BIT DE FORWARDING (imprescindible!!!!!)
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -o eth0 -j MASQUERADE
# Con esto permitimos hacer forward de paquetes en el firewall, o sea
# que otras máquinas puedan salir a traves del firewall.
echo 1 > /proc/sys/net/ipv4/ip_forward
## Permitimos el paso de la DMZ a una BBDD de la LAN:
iptables -A FORWARD -s 192.168.3.2 -d 192.168.10.5 -p tcp --dport 5432 -j ACCEPT
iptables -A FORWARD -s 192.168.10.5 -d 192.168.3.2 -p tcp --sport 5432 -j ACCEPT
## permitimos abrir el Terminal server de la DMZ desde la LAN
iptables -A FORWARD -s 192.168.10.0/24 -d 192.168.3.2 -p tcp --sport 1024:65535 --dport 3389 -j ACCEPT
# … hay que hacerlo en uno y otro sentido …
iptables -A FORWARD -s 192.168.3.2 -d 192.168.10.0/24 -p tcp --sport 3389 --dport 1024:65535 -j ACCEPT
# … por que luego:
# Cerramos el acceso de la DMZ a la LAN
iptables -A FORWARD -s 192.168.3.0/24 -d 192.168.10.0/24 -j DROP
## Cerramos el acceso de la DMZ al propio firewall
iptables -A INPUT -s 192.168.3.0/24 -i eth2 -j DROP
## Y ahora cerramos los accesos indeseados del exterior:
# Nota: 0.0.0.0/0 significa: cualquier red
# Cerramos el rango de puerto 1024
iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 1:1024 -j DROP
iptables -A INPUT -s 0.0.0.0/0 -p udp -dport 1:1024 -j DROP
# Cerramos un puerto de gestión: webmin
iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 10000 -j DROP
echo " OK . Verifique que lo que se aplica con: iptables -L -n"
# Fin del script
Ricemos el Rizo. Firewall de una LAN con salida a internet y VPNS

ETH1: 192.168.10.1

192.168.0.1

ETH0:192.168.0.2

LAN 1. 192.168.10.0/24

ETH2:192.168.3.1
Servidor de Correo:
TUNNEL 192.168.3.2
INTERNET
DMZ.
192.168.3.0/24

LAN 2. 192.168.20.0/24

192.168.20.1

TUNNEL

LAN 1. 192.168.30.0/24

192.168.30.1
Nuestro Firewall quedaría tal que asi:

#!/bin/sh

echo -n Aplicando Reglas de Firewall...


## FLUSH de reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
## Establecemos politica por defecto
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
## Empezamos a filtrar
## Nota: eth0 es el interfaz conectado al router y eth1 a la LAN
# Todo lo que venga por el exterior y vaya al puerto 25 lo redirigimos
# a la maquina de la DMZ
iptables -t nat -A PREROUTING -i eth0 \ -p tcp --dport 25 -j DNAT --to 192.168.3.2:25
# Todo lo que venga por el interfaz del router(eth0) y vaya al 110
# siempre que sea una delegacion se acepta y redirije
iptables -t nat -A PREROUTING -s 192.168.20.0/24 -i eth0 \ -p tcp --dport 110 -j DNAT --to 192.168.3.2:110
iptables -t nat -A PREROUTING -s 192.168.30.0/24 -i eth0 \ -p tcp --dport 110 -j DNAT --to 192.168.3.2:110
# Todo lo que venga por el interfaz del router(eth0) y vaya al 110
# siempre que sea una delegacion se acepta y redirije
iptables -t nat -A PREROUTING -s 192.168.20.0/24 -i eth0 \ -p tcp --dport 143 -j DNAT --to 192.168.3.2:143
iptables -t nat -A PREROUTING -s 192.168.30.0/24 -i eth0 \ -p tcp --dport 143 -j DNAT --to 192.168.3.2:143
# El localhost se deja (por ejemplo conexiones locales a mysql)
iptables -A INPUT -i lo -j ACCEPT
# Al firewall tenemos acceso desde la red local
iptables -A INPUT -s 192.168.10.0/24 -i eth1 -j ACCEPT
# Ahora hacemos enmascaramiento de la red local y de la DMZ
# para que puedan salir haca fuera
# y activamos el BIT DE FORWARDING (imprescindible!!!!!)
# Cuidado con este enmascaramiento.
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -o eth0 -j MASQUERADE
# Con esto permitimos hacer forward de paquetes en el firewall, o sea
# que otras máquinas puedan salir a traves del firewall.
echo 1 > /proc/sys/net/ipv4/ip_forward
# Para que desde la red local se salga hacia fuera hay que ENMASCARAR
# pero que pasa con las delegaciones tambien estan fuera Y NO HAY QUE
# ENMASCARAR, debemos meter una regla FORWARD explicita para que no enmascare
# porque si no una petición de la LAN a otra delegacion no se meteria
# en el tunel.
iptables -A FORWARD -s 192.168.10.0/24 -d 192.168.20.0/24 -j ACCEPT
iptables -A FORWARD -s 192.168.20.0/24 -d 192.168.10.0/24 -j ACCEPT
iptables -A FORWARD -s 192.168.10.0/24 -d 192.168.30.0/24 -j ACCEPT
iptables -A FORWARD -s 192.168.30.0/24 -d 192.168.10.0/24 -j ACCEPT

# Abrimos el acceso para que se pueda aceder a la DMZ desde la LAN


# a puertos de correo
# En principio lo que va de LAN -> DMZ se acepta
iptables -A FORWARD -s 192.168.10.0/24 -d 192.168.3.0/24 -j ACCEPT
# Luedo desde la DMZ a la LAN solo se acepta 25,110,143
iptables -A FORWARD -s 192.168.3.0/24 -p tcp --sport 25 \ -d 192.168.10.0/24 -j ACCEPT
iptables -A FORWARD -s 192.168.3.0/24 -p tcp --sport 143 \ -d 192.168.10.0/24 -j ACCEPT
iptables -A FORWARD -s 192.168.3.0/24 -p tcp --sport 143 \ -d 192.168.10.0/24 -j ACCEPT
# Cerramos el acceso de la DMZ a la LAN
iptables -A FORWARD -s 192.168.3.0/24 -d 192.168.10.0/24 -j DROP
## Cerramos el acceso de la DMZ al propio firewall
iptables -A INPUT -s 192.168.3.0/24 -i eth2 -j DROP
## Y ahora cerramos los accesos indeseados del exterior:
# Nota: 0.0.0.0/0 significa: cualquier red
# Cerramos el rango de puerto bien conocido
iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 1:1024 -j DROP
iptables -A INPUT -s 0.0.0.0/0 -p udp -dport 1:1024 -j DROP
# Cerramos un puerto de gestión: webmin
iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 10000 -j DROP
echo " OK . Verifique que lo que se aplica con: iptables -L -n"
# Fin del script
Políticas de Firewall. Partiendo de denegación de Servicios (DROP)

Cuando decidimos realizar un firewall podemos tomar dos caminos:


1.- Comenzamos aceptando todos los servicios (ACCEPT).
2.- O comenzamos denegando todos los Servicios (DROP).

Hasta ahora hemos visto siempre aceptando servicios, y modificando el


firewall con reglas conforme nos va haciendo falta.
En esté caso, lo que hacemos es denegar todos los servicios e ir aceptando
los que realmente nos interese.
Normalmente cuando se está aplicando un firewall a un servidor, los usuarios
siguen trabajando, pues no podemos dejarles sin ningún servicio, y por ello el
utilizar una politica de aceptación por defecto.
En el caso de que estemos montando un firewall desde 0 donde no existan
usuarios ni trafico de red, y con suficiente libertad para cortar, hacer pruebas
etc… utilizaremos una politica DROP e ir abriendo conforme nos haga falta.
Técnicas de Ataque mas comunes

DDOS : Un ataque de denegación del servicio, también llamado ataque DoS (Denial of Service), es un ataque a
un sistema de ordenadores o red que causa una pérdida en el servicio a los usuarios. Normalmente provoca la
pérdida de la conectividad de la red por el consumo del ancho de banda de la red de la víctima o sobrecarga de los
recursos computacionales del sistema de la víctima.
Se genera mediante la saturación de los puertos con flujo de información, haciendo que el servidor se sobrecargue y
no pueda seguir prestando servicios, por eso se le dice "denegación", pues hace que el servidor no de abasto a la
cantidad de usuarios

Fuerza Bruta :se denomina ataque de fuerza bruta a la forma de recuperar una clave probando todas las
combinaciones posibles de caracteres hasta encontrar aquella que permite el acceso.

Spoofing, en términos de seguridad informática hace referencia al uso de técnicas de suplantación de identidad
generalmente con usos maliciosos o de investigación.
Existen diferentes tipos de spoofing dependiendo de la tecnología a la que nos refiramos, los cuales se describirán más
adelante, como el IP spoofing (quizás el más conocido), ARP spoofing, DNS spoofing, Web spoofing o e-mail spoofing,
aunque en general se puede englobar dentro de spoofing cualquier tecnología de red susceptible de sufrir suplantaciones de
identidad.
Hablemos de VPNS bajo Linux, ¿Qué son?

VPN es el acrónimo de Virtual Private Network, que en castellano significa Red


privada virtual (RPV), es una tecnología de red que permite una extensión de la red
local sobre una red pública o no controlada, como por ejemplo Internet.

-Seguridad: provee encriptación y Encapsulación de datos viajen codificados y


a través de un túnel.
-Costos: ahorran grandes sumas de dinero en líneas dedicadas
-Mejor administración: cada usuario que se conecta asignado por el
administrador, lo que facilita algunas impresiones remotamente, aunque
también es posible dinámicamente si así se requiere.
-Facilidad para los usuarios con poca experiencia para corporativas
transfiriendo sus datos de forma segura.
TIPOS DE VPN:
Las formas en que pueden implementar las VPNs pueden ser basadas en HARDWARE o
a través de SOFTWARE, pero lo mas importante es el protocolo que se utilice para la
implementación.
Las VPNs basadas en HARDWARE utilizan básicamente equipos dedicados como por
ejemplo los routers, son seguros y fáciles de usar, ofreciendo gran rendimiento ya que
todos los procesos están dedicados al funcionamiento de la red a diferencia de un sistema
operativo el cual utiliza muchos recursos del procesador para brindar otros servicios, en
síntesis, los equipos dedicados son de fácil implementación y buen rendimiento, solo que
las desventajas que tienen son su alto costo y que poseen sistemas operativos propios y a
veces también protocolos que son PROPIETARIOS.

Existen diferentes tecnologías para armar VPNs:


-DLSW: Data Link Switching(SNA over IP)
-IPX for Novell Netware over IP
-GRE: Generic Routing Encapsulation
-ATMP: Ascend Tunnel Management Protocol
-IPSEC: Internet Protocol Security Tunnel Mode
-PPTP: Point to Point Tunneling Protocol
-L2TP: Layer To Tunneling Protocol
entre los mas usados y con mejor rendimiento estarían Ipsec y PPTP, aunque a este
ultimo se le conocen fallas de seguridad.
A continuación se detallan su funcionamiento:
IPSEC (Internet Protocol Secure):
Es un protocolo de seguridad creado para establecer comunicaciones que
proporcionen
confidencialidad e integridad de los paquetes que se transmiten a través de Internet.

PPTP (Point to Point Tunneling Protocol):


Este es uno de los protocolos mas populares y fue originalmente diseñado para
permitir el transporte (de modo encapsulado) de protocolos diferentes al TCP/IP
a través de Internet.

Básicamente, PPTP lo que hace es encapsular los paquetes del protocolo punto
a punto PPP(Point to Point Protocol) que a su vez ya vienen encriptados en un
paso previo para poder enviarlos a traves de la red.
DIAGRAMAS:

Hay varias posibilidades de conexiones VPN, esto será definido según los requerimientos
de la organización, por eso es aconsejable hacer un buen relevamiento a fin de obtener
datos como por ejemplo si lo que se desea enlazar son dos o mas redes, o si solo se
conectaran usuarios remotos.

Las posibilidades son:

DE CLIENTE A SERVIDOR(Client to Server):


Un usuario remoto que solo necesita servicios o aplicaciones que corren en el mismo
servidor VPN.

DE CLIENTE A RED INTERNA (Client to LAN):


Un usuario remoto que utilizara servicios o aplicaciones que se encuentran en uno o mas
equipos dentro de la red interna.

DE RED INTERNA A RED INTERNA (LAN to LAN):


Esta forma supone la posibilidad de unir dos intranets a través de dos enrutadores, el
servidor VPN en una de las intranets y el cliente VPN en la otra.
Aquí entran en juego el mantenimiento de tablas de ruteo y enmascaramiento.
El software vpn que está mas en alza es el ssh explorer, que con una interfaz gráfica
amigable, podemos configurar una VPN completa.

Mostramos unos pantallazos de la instalación del ssl Explorer:

Como veis, es una


instalación bastante
básica.
MUCHAS
GRACIAS

You might also like