<IPTables>
Ing. Juan Bez Rojas http://caminandoconlinux.com http://twitter.com/juan_baez juan.baez.rojas gmail.com juan.baez.rojas bestpractices.com.p! 1
Que es un cortafuegos?
Un cortafuegos (firewall) es un equipo protegido y fiable que funciona como punto regulador entre un grupo de redes y la internet El ncleo de Linux proporciona varias funciones integradas que le permiten funcionar como un cortafuegos !" La implementaci#n de red incluye c#digo (netfilter) para procesar los paquetes ! a voluntad gracias a la utilidad iptables
Que es un cortafuegos?
Que es Netfilter?
Netfilter es un framewor& disponible en el ncleo Linux que permite interceptar y manipular paquetes de red" 'ic(o framewor& permite reali)ar el mane*o de paquetes en diferentes estados del procesamiento" Netfilter es tambi+n el nombre que recibe el proyecto que se encarga de ofrecer (erramientas libres para cortafuegos basados en Linux"
Que es Iptables?
iptables es el nombre de la (erramienta de espacio de usuario mediante la cual el administrador puede definir polticas de filtrado del trfico que circula por la red" El nombre iptables se utili)a frecuentemente de forma err#nea para referirse a toda la infraestructura ofrecida por el proyecto Netfilter" iptables es un software disponible en pr-cticamente todas las distribuciones de Linux actuales"
Cadenas integradas
FORWARD/ 0lu*o a trav+s de un ordenador pasarela1 procedente de una interfa) y yendo (acia otra INPUT/ 2usto antes del proceso local OUTPUT/ 2usto despu+s de ser generado por proceso local PO TROUTIN!/ 2usto antes de salir por la interfa) de red PR"ROUTIN!/ 2usto al llegar desde una interfa) y despu+s de la limpie)a y control
.
Tablas
filter# Usado para establecer pol4ticas para el tipo de trafico permitido (acia1 a trav+s y desde el ordenador" 5 menos que (agamos referencia expl4citamente a otra tabla1 iptables funcionara por defecto con las cadenas de esta tabla $angle# 6e usa para la alteraci#n de paquetes1 como quitarles sus opciones ! nat# Usada en con*unci#n con el rastreo de conexiones de 7581 bas-ndose normalmente en las direcciones de origen y destino
3
Recorrido de un paquete
RED
#R-R)$%I". mangle&nat
#)/%R)$%I". mangle& nat
RUTEO
()R*+R, mangle& 'ilter
I"#$% mangle&'ilter
)$%#$% mangle& 'ilter&nat
LOCAL
9
Objetivos
A%%"PT/ !ermite al paquete pasar a la siguiente fase de procesamiento DROP/ 'e*a de procesar el paquete" 7o lo cote*a con otra regla1 cadena o tabla" 6i queremos proporcionar respuesta al remitente podemos usar R"&"%T 'O!/ Env4a la informaci#n del paquete al demonio syslog DNAT/ se emplea principalmente en los casos donde se tiene una ! pblica y se quiere redirigir los accesos al firewall (acia algn otro (ost (en una ;)ona desmilitari)ada;1 '<=1 por e*emplo)" 'ic(o de otro modo1 cambiamos la direcci#n de destino del paquete y lo re>enrutamos a otro (ost" NAT/ 6e cambia la direcci#n ! de origen1 es la situaci#n m-s utili)ada cuando estamos utili)ando una direcci#n ! privada en una red local y establecemos una conexi#n con un equipo de nternet" Un equipo de la red (normalmente la puerta de enlace) se encarga de cambiar la direcci#n ! privada origen por la direcci#n ! pblica1 para que el equipo de nternet pueda contestar" (A )U"RAD" se usa exactamente para lo mismo que 67581 pero requiere m-s de traba*o del procesador para permitir traba*ar con ! dinamicas R"DIR"%T sirve para redirigir paquetes y flu*os (acia la m-quina" ?sto quiere decir que podemos redirigir todos los paquetes destinados a los puertos @88! (acia un cac(+ @88! como squid1 o (acia nuestro (ost
:
Co
paraciones
*p+ **protocol emplea para comprobar la presencia de los siguientes protocolos/ 8B!1 U'!1 B<! *s+ **src+ **source se basa en la direcci#n ! de origen de los paquetes *d+ **dst+ **destination se basa en saber a d#nde se diri*en los paquetes *i+ **in*interface reconocer a trav+s de qu+ interfa) proviene un paquete entrante" *o+ **out*interface se emplea con los paquetes que est-n a punto de abandonar la interfa) de salida **sport+ **source*port se emplea para comparar paquetes bas-ndose en su puerto de origen **dport+ **destination*port compara paquetes 8B! bas-ndose en el puerto de destino **$ac*source Bomo ya se (a dic(o1 esta comparaci#n se emplea para buscar paquetes bas-ndose en su direcci#n <5B de origen
1A
Co
andos
*A+ **append aCade la regla al final de la cadena" La regla siempre se pondr- la ltima en el con*unto de reglas y l#gicamente se comprobar- la ltima *D+ **delete borra una regla de la cadena" Esto puede (acerse de dos maneras/ bien introduciendo la regla completa a comparar (como en el e*emplo anterior)1 bien especificando el nmero de regla que deseas eliminar *R+ **replace sustituye la entrada existente en la l4nea especificada" 0unciona de la misma forma que el comando >>delete *I+ **insert inserta una regla en la posici#n de la cadena que especifiquemos *'+ **list lista todas las entradas de la cadena especificada *F+ **flus, elimina todas las reglas de una cadena *N+ **ne-*c,ain cree una nueva cadena con el nombre especificado *.+ **delete*c,ain borra de la tabla la cadena especificada *P+ **polic/ establece la pol4tica u ob*etivo por defecto en una cadena
11
!ilter
iptables 0*t tabla1 0co$ando1 0cadena10co$paraci2n 1 0ob3eti4o1
iptables -A INPUT -p tcp -i eth0 --dport 80 -j DROP iptables -A INPUT -i eth0 -p icmp --icmp-type 8 -j DROP iptables -A FORWARD -i eth0 -p icmp --icmp-type 8 -j DROP iptables -A INPUT -p tcp -i eth0 --dport iptables -A INPUT -p $dp -i eth0 --dport ! -j A""#PT ! -j A""#PT
iptables -A FORWARD -s 0%0 -i eth0 -d &' (&)8(&(!8 -o eth& -p T"P --sport &0 *+)!!,! --dport 80 -j A""#PT iptables -A OUTPUT -p $dp -o eth0 --dport !, --sport &0 *+)!!,! -j A""#PT iptables -A INPUT -p $dp -i eth0 --sport !, --dport &0 *+)!!,! -j A""#PT
12
N"T
iptables 0*t tabla1 0co$ando1 0cadena10co$paraci2n 1 0ob3eti4o1
iptables -A PR#ROUTIN- -i eth0 -p tcp .dport 80 -j DNAT .to &' (&)8(,( +80 iptables -t /at -A PO0TROUTIN- -s &' (&)8(&(0% * -j 0NAT -o eth0 --to-so$rce '1(&!8( !,( ' iptables -t /at -A PO0TROUTIN- -o eth0 -j 2A03U#RAD# iptables -t /at -A PO0TROUTIN- -o ppp0 -j 2A03U#RAD# iptables -t /at -A PO0TROUTIN- -o ppp0 -j 0NAT --to-so$rce '1(&!8( !,( '
1$
#angle
iptables [-t tabla] [comando] [cadena][comparacin ] [objetivo]
iptables -t ma/4le -A PR#ROUTIN- -s &' (&)8(0(& -i eth0 .dport &'!0 -j TO0 .set-tos 05&0 iptables -t ma/4le -A FORWARD -p tcp -j T"P200 .clampmss-to-pmt$ iptables -t ma/4le -A FORWARD -d 0(0(0(0%0 -i eth0 -p tcp .dport & ,* -j TT6 .ttl-set &
1%
<$IPTables>
!DEEU78561 5BED8 2F61 0D56E6 BELEGDE6
1,