4.4Iptables
-
Upload
lymorillom -
Category
Documents
-
view
5 -
download
3
description
Transcript of 4.4Iptables
Firewall
Con la gran cantidad de computadoras accediendo a Internet desde las casas y los centros de trabajo; ¿Que nos protege de que alguien entre en nuestra computadora o en nuestra red?
La respuesta es el Firewall y sus servicios.
Firewall
Un firewall es un sistema dedicado que esta situado entre Internet y la red interna (2 redes).
Esta configurado de manera tal que cada petición IP:puerto es “revisada”.
Toma las decisiones en base a reglas pre-escritas
Firewall-Iptables
Netfilter es un framework disponible en el núcleo Linux que permite interceptar y manipular paquetes de red. Dicho framework permite realizar el manejo de paquetes en diferentes estados del procesamiento.
El componente más popular construido sobre Netfilter es iptables, una herramienta de cortafuegos que permite filtrar paquetes, NAT, mantener registros de log
Funcionamiento Iptables
iptables permite definir reglas acerca de qué hacer con los paquetes de red. Las reglas se agrupan en cadenas: cada cadena es una lista ordenada de reglas. Las cadenas se agrupan en tablas: cada tabla está asociada con un tipo diferente de procesamiento de paquetes.
Cada regla especifica qué paquetes la cumplen (match) y un destino que indica qué hacer con el paquete si éste cumple la regla. Cada paquete de red que llega a una computadora o que se envía desde una computadora recorre por lo menos una cadena y cada regla de esa cadena se comprueba con el paquete.
Tablas
filter table (Tabla de filtros) — Esta tabla es la responsable del filtrado (es decir, de bloquear o permitir que un paquete continúe su camino).
INPUT chain (Cadena de ENTRADA) — Todos los paquetes destinados a este sistema atraviesan esta cadena
OUTPUT chain (Cadena de SALIDA) — Todos los paquetes creados por este sistema atraviesan esta cadena
FORWARD chain (Cadena de REDIRECCIÓN) — Todos los paquetes que meramente pasan por este sistema para ser encaminados a su destino recorren esta cadena
Tablas
nat table (Tabla de traducción de direcciones de red) —configura las reglas de reescritura de direcciones o de puertos de los paquetes. El primer paquete en cualquier conexión pasa a través de esta tabla; los veredictos determinan como van a reescribirse todos los paquetes de esa conexión.
PREROUTING chain (Cadena de PRERUTEO) — Los paquetes entrantes pasan a través de esta cadena antes de que se consulte la tabla de ruteo local, principalmente para DNAT (destination-NAT o traducción de direcciones de red de destino)
Tablas
POSTROUTING chain (Cadena de POSRUTEO) — Los paquetes salientes pasan por esta cadena después de haberse tomado la decisión del ruteo, principalmente para SNAT (source-NAT o traducción de direcciones de redvde origen)
OUTPUT chain (Cadena de SALIDA) — Permite hacer un DNAT limitado en paquetes generados localmente
Tablas
mangle table (Tabla de destrozo) — Esta tabla es la responsable de ajustar las opciones de los paquetes, como por ejemplo la calidad de servicio. Todos los paquetes pasan por esta tabla. Debido a que está diseñada para efectos avanzados, contiene todas las cadenas predefinidas posibles
Iptables (Esquema del framework)
Puntos de filtrado (Cadenas)
Tablas
filter nat mangle
INPUT x x
OUTPUT x x x
FORWARD x x
PREROUTING x x
POSTROUTING x x
Iptables (sintaxis)
iptables [-t tabla] comando [comparación (match)] [objetivo/salto (target/jump)]
comando-A Añadir una regla
-D Borrar una regla
-I Insert
-R Replace
-L –n Listar las reglas
-F Borrar todas las reglas
-P Establecer política
Iptables (sintaxis)
[comparaciones]
-i interface de llegada
-o interface de salida
-p Protocolo de nivel 4
-s IP origen
-d IP destino
--sport puerto origen
--dport puerto destino
-j Que hacer con el paquete
Iptables (sintaxis)
targetACCEPT: Acepta el paqueteDROP: Se desecha el paqueteREJECT: Idem que DROP pero se genera un mensaje de error.DNAT: Dirección destino del paquete debe ser modificadaSNAT: Dirección origen del paquete debe ser cambiada.
Iptables (políticas)
Es lo que se hace por defecto con el paquete si no se encuentra ninguna regla que coincida con el.
Acciones posibles:ACCEPT (acción por defecto)DROP (mas adecuada, pero mas difícil)
Iptables (políticas)
¿Como vemos las políticas activas?
etch:~# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Iptables (políticas)
¿Como cambiamos la política por defecto?
etch:~# iptables –t table -P CHAIN DROP
table:
filter, nat, mangle
CHAIN:
INPUT, FORWARD, OUTPUT,
PREROUTING, POSTROUTING
Iptables (políticas)
Cuando se usa la política DROP, se debe tener en cuenta que también estamos denegando las conexiones que se inician en la propia máquina, así como aquellas que utilizan la interfaz loopback (127.0.0.1).
Iptables (construir reglas ejemplo)
Definir la política a utilizar.Tener claro los puertos a abrir.Desde y hacia donde se permitirán las
conexiones entrantes y salientes.
Supongamos que vamos colocar un servidor Web en Internet y que ese servidor sea administrable remotamente mediante SSH.
Iptables (construir reglas ejemplo)
Conexiones entrantes:
iptables –A INPUT –p tcp --dport 22 –j ACCEPT
iptables –A INPUT –p tcp --dport 80 –j ACCEPT
iptables –A INPUT –j DROP
Conexiones salientes:
iptables –A OUTPUT –p tcp --sport 22 –j ACCEPT
iptables –A OUTPUT –p tcp --sport 80 –j ACCEPT
iptables –A OUTPUT –j DROP
Iptables (ejemplos de reglas)
iptables -t filter -A INPUT -s 10.0.0.2 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -s 10.0.0.1 -p tcp --dport 22 -j DROP
iptables -A INPUT -m multiport -p tcp --dport 22,80,443 -j ACCEPT
iptables -A FORWARD -i eth1 -s ! 10.0.0.1 -j DROP
iptables -A OUTPUT -o eth0 -d 10.0.0.0/24 -j DROP
Iptables
Guardando las reglas:
touch firewall_reglas
iptables-save >> firewall_reglas
Editar /etc/network/interfaces y añadir
up iptables-restore < firewall_reglas
update-rc.d firewall defaults 00 99
Iptables (-j LOG)
iptables -A INPUT -i eth0 -p tcp --dport 22 -j LOG
iptables -A INPUT -i eth0 -p tcp --dport 22 -j LOG --log-prefix "Conexion al puerto 22“
Con la acción LOG podremos registrar las conexiones en el syslog del sistema.
Además podremos agregarle un prefijo.
Iptables (nat)
SNAT y DNAT: Permiten realizar transformaciones de dirección (origen y destino) de los paquetes.
Iptables (nat)
iptables -t nat -A POSTROUTING -d 1.1.1.1 -p tcp --dport 80 -j SNAT --to 2.2.2.2
iptables -t nat -A PREROUTING -d 3.3.3.3 -j DNAT --to 4.4.4.4
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3128
Ejemplos Real
El FIREWALL tiene 2 interfaces de red: eth0 red externa, eth1 red interna1.Todo lo que venga de la red local al firewall ACEPTAR.
2.Todo lo que venga de la IP de mi casa al puerto tcp 22 ACEPTAR
Ejemplos Real
3. A un partner le dejamos usar el ftp4. Todo lo que venga de la red local y vaya al exterior
ENMASCARAR.5. No permitir ping al FIREWALL
6. Todo lo que venga al puerto tcp 1 al 1024 DENEGAR
7. Todo lo que venga del exterior al puerto tcp 10000 DENEGAR
Iptables (nat)
## 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
Iptables (nat)
###FILTRANDO…
# El localhost se deja (Ej: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
# A un partner se le deja usar el FTP
iptables –A INPUT –s 80.37.45.194 –p tcp –dport 20:21 –j ACCEPT
Iptables (nat)
# Enmascaramiento de la red local y activación del BIT DE FORWARDING (imprescindible!!!!!)
iptables -t nat -A POSTROUTING –s 192.168.10.0/24 -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
# Filtrar los paquetes ICMP
Iptables -A INPUT –p icmp –j DROP
Iptables (nat)
# Se cierra el rango de puerto bien conocidoiptables –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
# Se cierra el puerto de gestión: webminiptables –A INPUT –s 0.0.0.0/0 –p tcp –dport 10000 –j DROP