Iptables
Cortafuegos en Linux con iptables
Andrés J. Díaz
¿Para qué un cortafuegos doméstico?
Lo que puede hacer
Evitar en la medida de lo posible ataques DoS Controlar el acceso a la máquina Detectar posibles usos fraudulentos Monitorizar el tráfico de nuestro equipo Controlar el acceso a servicios privilegiados
Lo que no hace
No evitavirus/gusanos/troyanos/*anos No detecta intrusos (para eso IDS) No monitoriza el tráfico de la red (salvo promiscuos)
Los peligros en la Red (I)
En el mundo de Fresita todo era felicidad:
Los clientes enviaban peticiones a los servidores Los servidores contestaban a los clientes Los SO no tenían fallos explotables La comunicaciones eran seguras
Pero...
Los peligros en la red (II)
Apareció eltemible ¡Capitán Piratilla!:
El piratilla se introduce en la comunicación Falsea direcciones Aprovecha vulnerabilidades Quiere hundir nuestra máquina :-(
¿Dónde actúa el firewall?
Firewall:
Entre la capa de transporte y la capa de red
Historia
Kernel 1.1 Kernel 2.0 Kernel 2.2 Kernel 2.4 Kernel 2.6
ipfw de BSD adaptado - Alan Cox (1994) Trabajaba en el espacio de kernel (ring0)ipfwadm - Jos Vos (1996) Ya en el espacio de usuario
ipchains - Paul "Rusty" Russel et al (1998)
iptables - Paul "Rusty" Russel (1999)
iptables mejorado - Paul "Rusty" Russel (2003)
Los dos iptables
OJO: Dos iptables
En genérico:
iptables = cortafuegos y filtrado para Linux iptables = herramienta (ejecutable)
iptables es:
el sistema de filtrado para kernel 2.4 y 2.6 dentrodel proyecto netfilter se maneja con la herramienta iptables
Netfilter e iptables (I)
Proyecto Netfilter:
creado por Paul "Rusty" Russel soporte firewall para Linux aparece en el kernel 2.4 iptables es parte de netfilter es ¡LIBRE! (GPL)
Futuro:
REJECT en IPv6 HOPLIMIT en IPv6 ...
Netfilter e iptables (y II)
Netfilter Framework
QoS, IPv6 ...
Nos centraremos en la parteiptables Se están añadiendo nuevos elementos
¿Cómo funciona?
Decisión de entrada Proceso local
Si el destino es esta máquina: INPUT Si el destino es otra máquina: FORWARD (NAT)
El servidor, cliente, demonio, aplicación...
Reglas de cortafuegos (I)
Una regla es:
una cadena de entrada una cadena de salida una cadena de reenvio (sólo NAT) una cadena definida por el usuarioEvaluación
Si un paquete concuerda con la regla se manda a la "cadena de salida" Si un paquete no concuerda, se examina la siguiente regla
Reglas de cortafuegos (II)
Reglas internas (o listas de reglas):
INPUT: Todo lo que quiera entrar en nuestra máquina OUTPUT: Todo lo que quiera salir de nuestra máquina FORWARD: Todo lo que se quiera redirigir a otra máquina PREROUTING: Lo que se hará antesde encaminar el paquete POSTROUTING: Lo que se hará inmediatamente después de encaminar el paquete
Pero:
Podemos crear nuestras listas de reglas Podemos combinarlas con las reglas internas Podemos añadir y borrar cadenas de las reglas
Reglas de cortafuegos (III)
Objetivos (cadenas de salida)
ACCEPT: El paquete es "legal" y sale de INPUT DROP: El paquete se descarta (nos locomememos) LOG: El paquete será registrado (NO TIENE PORQUE DESCARTARSE) REJECT: Se envía un ICMP de rechazo
Obviamente:
Podemos usar nuestras propias reglas como objetivos
Reglas de cortafuegos (y IV)
En general:
iptables -A regla opciones -j objetivo
Ejemplo tonto:
iptables --append INPUT --jump DROP iptables -A INPUT -j DROP
¿Qué hace?
Añade una nueva regla a la lista INPUT Lo quequiera entrar en la máquina se manda "DROP" (al carajo)
Configurando el kernel (I)
make menuconfig
Device Drivers / Networking Support / Networking options
Configurando el kernel (II)
IPv4 IPv6
IP Netfilter configuration IP6 Netfilter configuration
Configurando el kernel (y III)
¿Que debemos activar?
IP tables support (SIEMPRE) limit match support Multiple port match...
Regístrate para leer el documento completo.