Sei sulla pagina 1di 18

Administracin avanzada Linux para Gobierno de Aysn

Implementacin de
Iptables en
GNU/Linux

Tutor virtual Juan Martnez Garca

Administracin avanzada Linux para Gobierno de Aysn

IPTABLES.
IPtables es una herramienta que viene junto con las distribuciones del kernel de
LINUX para las versiones 2.4 en adelante. IPTables es la evolucin de IPchains y
adems con nuevas funciones que permite generar un firewall a nivel de filtrado de
paquetes de una manera especifica, es decir, esta herramienta es solo eso un
medio para la construccin de un firewall; la parte fundamental de este trabajo es
la de proteger la integridad del sistema mediante la construccin ordenada y
adecuada de las reglas de filtrado de paquetes.
Adems en este captulo generaremos las polticas de seguridad, as como los
mecanismos que utilizaremos para evitar vulnerabilidades del sistema.
Un firewall controla el acceso entre dos redes, usualmente el primer lugar
donde se instala un firewall es entre la red local e Internet. Este firewall previene
que el resto del mundo sea capaz de acceder a la red privada y a los datos de
esta red. Sin embargo es importante que se piense en el firewall como una simple
pieza del equipo de seguridad y no como un programa de software que realiza
todo para proteger la red, ya que como mencionamos forma parte de los
mecanismos de seguridad.
El firewall de filtrado de paquetes es una aproximacin comn y una pieza
de seguridad de la red y del control de acceso desde el exterior. Este firewall
funciona en la capa de Red, toma decisiones de filtrado basadas en la fuente u
origen, las direcciones destino y los puertos en paquetes individuales de IP
(protocolo de Internet).
La comunicacin en una red se explica como un modelo de capas donde la
comunicacin se realiza entre capas adyacentes sobre un equipo individual y entre
capas paralelas sobre equipos que se comunican. El modelo OSI (Open Systems
Interconection) de comunicaciones est basado en una propuesta desarrollada por
la organizacin de estndares internacional (ISO), por lo que tambin se le conoce
como modelo OSI-ISO. Su funcin es la de definir la forma en que se comunican
los sistemas abiertos de comunicaciones, es decir, los sistemas que se comunican
con otros sistemas.

Tutor virtual Juan Martnez Garca

Administracin avanzada Linux para Gobierno de Aysn

las capas del modelo OSI

Analizando algunas de las capas mas especficamente tenemos que la capa de


aplicacin representa la comunicacin entre dos programas o aplicaciones, la capa de
transporte representa como se realiza la comunicacin entre los dos programas; los
programas se identifican por los nmeros llamados puertos de servicio, la capa de red
representa como se realiza el transporte de dicha comunicacin entre los dos equipos
terminales. Los equipos o las tarjetas de interfaz de red individuales se identifican por
los nmeros llamados direcciones IP.
La capa de fsica es en la que se pueden identificar el emisor y receptor de paquetes
para establecer comunicacin entre cada equipo individual a lo largo de la trayectoria.
En una red Ethernet , estas interfaces de red del equipo se identifican por nmeros
llamados direcciones Ethernet en las que aparece la direccin MAC (direccin fsica
Tutor virtual Juan Martnez Garca

Administracin avanzada Linux para Gobierno de Aysn

de la tarjeta de red que viene impresa en ella misma) del hardware.


Los servicios basados en red son programas que se ejecutan en una mquina a los
que se puede acceder a otros equipos de la red.
Los puertos de servicio son los nombres numricos para los diferentes servicios de la
red, son ranuras virtuales que se utilizan para trazar una conexin entre dos
mquinas y van desde 0-65535.
Los programas de servidor (daemons) escuchan las conexiones entrantes a un puerto
de servicios asignados a ellos. Los valores de 1-1023 son asignados a puertos
privilegiados asignados por la IANA (Internet Assigned Numbers Authority). Sus
propietarios son programas que ejecutan privilegios del nivel de sistema (root), la idea
es incrementar la confianza en que el programa cliente este realmente conectado al
servicio anunciado que se desea.
Por su parte los puertos del 1024-65535 son no privilegiados y son asignados
dinmicamente a la conexin de un cliente, ya que los pares de nmeros de puerto
cliente y servidor junto con sus respectivas direcciones IP identifican unvocamente la
conexin.
La seccin de 1024-49151 se usan para servicios particulares como socks o
servidores Xwindow. Un paquete hace referencia a un mensaje de red (IP) del
protocolo de Internet, TCP/IP es el nombre que se asigna a un mensaje que se enva
sobre la red ethernet. Un paquete estructuralmente contiene:
Encabezado de informacin.
Cuerpo de mensaje que contiene los datos que se transfieren.
El mecanismo del firewall IPtables trabaja sobre la capa de red as como en la capa
de transporte de datos. Esto es en la capa de red maneja paquetes IP, direcciones IP
y mensajes ICMP, mientras que en la capa de transporte utiliza los puertos de servicio
de los protocolos TCP y UDP.

FIREWALL IPTABLES.
Tutor virtual Juan Martnez Garca

Administracin avanzada Linux para Gobierno de Aysn

IPtables sustituye a IPchains en la versin 2.4 del kernel de LINUX, este es parte del
proyecto Netfilter que se utiliza para establecer reglas de control para el filtrado de
paquetes. IPtables es capaz de realizar una conexin por localizacin, es decir
habilita el estado de inspeccin de los paquetes icmp, udp y tcp. Por ejemplo, revisa
el estado del paquete icmp y permite el paso de ste si y solo si la maquina a la que
desea ingresar le envi un eco (echo) de solicitud para establecer conexin y siempre
cuando la mquina destino responda a esa peticin con un eco (echo) de respuesta,
esta accin slo la permite Iptables.
La mayora de los administradores podra tener un bloque de solicitudes Firewall en
Linux Utilizando Iptables pero a ciegas aceptan eco de respuesta con la suposicin de
que debera ser respondido por sus propias solicitudes de conexin, esto no siempre
es verdad, una solicitud no hecha con eco (echo) de respuesta puede ser signo de un
Smurf, es decir una amplificacin de ataque de una tribe flood Network
(inundacin de una familia numerosa en la red); bsicamente es una comunicacin
entre dueo del comando y un demonio o puerta tracera, esto es una tcnica de
ataque masivo a servidores utilizando para ello a vctimas inocentes que no estn
bien protegidas. Concretamente el ataque se basa en el envo de paquetes de
difusin a las computadoras de una subred (que llegan a todos las computadoras),
estos paquetes llevan falseada la direccin de origen apuntando en realidad a un
servidor que se desea atacar (tcnica conocida como spoofing). Todas las
computadoras de la subred responden a los paquetes falsos dirigindolos a la vctima,
la cual se ve sobrecargada instantneamente por el enorme efecto multiplicador
debido a la difusin. La diferencia entre el ataque Smurf y el ataque Fraggle estriba en
el tipo de paquete enviado (un echo UDP al puerto 7 en el caso de Fraggle y un ping
en el caso de smurf). El ataque smurf fue el utilizado durante los famosos asaltos a
buscadores y sitios de comercio electrnico.
Por otro lado IPtables simplifica el comportamiento del filtrado de paquetes
negociando la construccin de cadenas (INPUT, OUTPUT y FORWARD). En mltiples
host los paquetes viajan a travs de interfaces negociables, solo como forward o
reenvo de cadenas en lugar de todo un rbol de cadenas, es decir cuando se hacia
un reenvo se recorra todo el rbol de cadenas para llegar a un destino, como se
hacia antes; ahora los paquetes se habilitan en curso.

IPtables separa el filtrado de paquetes de las direcciones que provienen estos y el


Tutor virtual Juan Martnez Garca

Administracin avanzada Linux para Gobierno de Aysn

traslado de direcciones, es decir mensajes que son redireccionados mediante el NAT


(Network Addres Translation). El redireccionamiento en turno es tratado como un tipo
particular de destino con la instruccin nat, con lo que es ms fcil definir las reglas
base y aadir NAT.
Las reglas de filtrado de paquetes se basan en: la tarjeta de interfaz de red y en la
direccin IP del servidor, las direcciones IP origen y destino del nivel de
red, los puertos de servicio UDP y TCP de la capa de transporte, los indicadores
Firewall en Linux Utilizando Iptables de conexin TCP, los tipos de mensaje ICMP del
nivel de red y en s el paquete es de entrada o salida.
Este tipo de filtrado pertenece a un nivel de capa de red y transporte de
datos, y no es posible permitir realizar la autentificacin y control de acceso
preciso ya que estos servicios de seguridad pueden proporcionarse en niveles de
capas ms altos.

ELEMENTOS BSICOS.
En IPtables se utilizan script, stos generalmente comienzan cargando los mdulos
necesarios (los imprescindibles y los auxiliares, como el de ftp masquerading),
establecen algn bit como por ejemplo el de forwarding, luego borra todas las reglas
actuales (flush), establece las polticas por defecto para la aceptacin, reenvo y
salida, y finalmente va aplicando todas las reglas de firewall, que varan dependiendo
de las necesidades de cada red.
En IPtables se construyen reglas a partir de instrucciones, la sintaxis es:
iptables F :Realiza el borrado (flush) de las reglas existentes.
iptables L :Realiza el listado de reglas que se estn aplicando.
iptables A : Apendiza a las reglas es el comando bsico para generar una
nueva regla.
iptables D :Borrar especficamente una de las reglas.

CONSTRUCCIN DE REGLAS.
Tutor virtual Juan Martnez Garca

Administracin avanzada Linux para Gobierno de Aysn

La estructura de las reglas en IPtables se logra de manera relativamente simple, se


comienza colocando el comando Iptables, despus la orden A que apendiza la regla,
posteriormente se establece la tabla a la que se anexar la regla y la interfaz, as
como la direccin origen si se conoce especficamente, el tipo de puerto, el puerto
destino y dierctiva de aceptar, denegar o rechazar.
iptables: Es el comando iptables (ya que se har el llamado desde un
shell script)
-A: append, opcin para aadir una regla INPUT: estado del paquete (al
entrar es input, OUTPUT estado de salida, FORWARD estado de reenvi).
-i eth0: es la interfaz de red eth0, eth1 o eth2
-s 0.0.0.0/0: direccin de acceso (cualquiera en este caso por ejemplo)
-p TCP: tipo de puerto puede ser UDP o ICMP
--dport: puerto de destino
-j ACCEPT: destino del paquete es decir si se acepta es ACCEPT, o bien
podra ser DROP, LOG, REJECT.

ESTADO DE BANDERAS.
El estado de las banderas nos indican las fases de los paquetes, es decir, si el
paquete va a ser recibido de una direccin especifica es decir tiene activo el bit - s o
va dirigida a una direccin definida se activa el bit d, el tipo de puerto de origen o
destino y adems la interfaz por la que se trasladara el paquete. A continuacin
mostramos estas banderas:
-s: Source address, esta bandera se utiliza para establecer la direccin
origen.
-d: Destino, establece hacia que direccin destino se enva.
-p: Tipo de protocolo para los mensajes (TCP,UDP,ICMP).
Tutor virtual Juan Martnez Garca

Administracin avanzada Linux para Gobierno de Aysn

--sport: Establece el puerto de origen


--dport: Establece el puerto de destino
-i = in-interface : Es la interfaz por la que se entra (eth0,eth1, ppp0,)
-o = --out-interface: Es la interfaz por la que se sale (eth0,eth1, ppp0,)
La manera en la que se utilizan las banderas es:
-i se usa con reglas INPUT y FORWARD
-o se usa con reglas FORWARD y OUTPUT

POLTICAS DE SEGURIDAD.
Las polticas de seguridad que se establecen en el Firewall y aplican para:
Denegacin para todos los paquetes entrantes. Es decir no se permite el ingreso
de los paquetes que intenten conectarse, solo se permite el acceso a los paquetes en
los que exista una coincidencia con las reglas establecidas, es decir, si no hay
concomitancia con las reglas establecidas se desecha el paquete y se ejecuta la
poltica establecida por defecto de DENEGACION.
El orden en que se definen las reglas, es el orden en que se agregarn a las tablas
del ncleo y por tanto el orden de comparacin de cada regla con cada paquete
corresponde a la manera conforme los paquetes se reciban y entonces stos se
analizan.
No se brinda servicio FTP externo y se controlar el uso interno de este servicio ya
que ser activado slo para algunos equipos.
Se brinda servicio SSH solo para usuarios con cuentas en el servidor que se
encuentra en la zona desmilitarizada y solo a ciertas mquinas con un IP
seleccionado. Con lo anterior brindaremos un primer filtrado para usuarios comunes y,
para los ms privilegiados se permite el acceso desde su mquina.
Se protege a servidores ubicndolos en la DMZ y se definen los permisos de acceso
en el firewall para llegar a ellos.
Tutor virtual Juan Martnez Garca

Administracin avanzada Linux para Gobierno de Aysn

Se protege a una red local (Intranet) y se definen los accesos que sean abiertos entre
las mquinas de la subred y el exterior, accesos bien definidos para conexiones con
mquinas externas y slo para que stas sean realizadas por los administradores del
sistema va una direccin IP.
Las conexiones entre la red local y el servidor Web son restringidas para no permitir
intrusiones.
El servidor Web pertenece a una zona desmilitarizada (DMZ), es decir tiene una
interfaz de red extra, no comparte la misma interfaz de red que la red local.
Se debe permitir el acceso a Internet o a la red local, sin embargo no se brinda
servicio para descarga de programas.
Se denegarn paquetes que pretendan venir de direcciones reservadas, stas son de
clase A,B,C,D y E.
Los servicios se activarn conforme stos se requieran, es decir en principio todos los
servicios sern bloqueados y se irn activando conforme se requieran.

SCRIPT SHELL DEL FIREWALL.


La herramienta IPtables forma parte del sistema operativo LINUX y la funcin que
desempea es la de aplicar reglas para el filtrado de paquetes. Una vez que los
paquetes comienzan a entrar o a salir, no importando de que mquina viene el
paquete llega al kernel y el kernel decide que hacer con este paquete; esto es si el
paquete es para la propia mquina o para otra lo que hace es consultar las reglas del
firewall y procede segn las reglas del firewall. Dicho de otra manera en la siguiente
figura se muestra el camino que un paquete recorre en el kernel.

Tutor virtual Juan Martnez Garca

Administracin avanzada Linux para Gobierno de Aysn

Muestra el camino que recorre un paquete en el kernel tanto si el


paquete es para la propia mquina o es redirigido a otra mquina sigue un
proceso local.

IMPLEMENTANDO LAS CADENAS.


Las cadenas dentro del firewall tienen la funcin principal de organizar el flujo de los
paquetes as como de definir el orden de ejecucin. La jerarquizacin de estas
cadenas tiene suma importancia, ya que de ello depende el que un paquete acceda o
no al sistema esto es; si en un primer intento de pasar un paquete se accede a la red
y despus de esta regla encontramos una que bloquee de alguna manera al paquete
la jerarqua debera ser la opuesta, ya que si de primera instancia el paquete se
encuentra con la cadena que corta el paso ya no pasa por la cadena en la que de
alguna manera pudiera pasar sin que esto deba suceder.
Las cadenas definen un destino o una accin estas cadenas son:
ACCEPT
DROP
REJECT
LOG
PREROUTING
Tutor virtual Juan Martnez Garca

10

Administracin avanzada Linux para Gobierno de Aysn

POSTROUTING
MASQUERADE
Las cadenas adems tambin pueden generar otras cadenas o inclusive recursin
con la generacin de cadenas de usuario. En el firewall construido para el sistema no
se generaron cadenas de usuario. La siguiente figura muestra la forma de operar del
firewall a la llegada de un paquete.

Muestra a grandes rasgos el algoritmo del encadenamiento de un paquete al ingresar y


ser revisado por el kernel cuando existen cadenas de usuario y las predefinidas.

La implementacin de cadenas se realiza con las instrucciones y sintaxis ya


mencionadas y de manera general como sigue a continuacin:
Iptables I | -A <cadena> -i <interfaz> -p <tcp|udp> -sport|--dport [!]<puerto>|<rango-rango> -d [!] <ip> -s [!]
<ip> -m <modulo> --from <IP_SNAT> --to <IP_DNAT> -j <destino>
Donde:

Tutor virtual Juan Martnez Garca

11

Administracin avanzada Linux para Gobierno de Aysn

-I, --insert <nombre_de_cadena> {regla}, insertamos una regla al principio


de una cadena.
-A, --append <nombre_de_cadena> {regla}, insertamos una regla al final de
la cadena.
-i, ifaz eth0 hace referencia a la interfaz de conexin.
-p, hace referencia al protocolo de Internet paquetes tcp o udp.
--sport|--dport, hace referencia a si es direccin de origen o direccin
destino. [!] <puerto>|<rango-rango>, indica si lleva la [!] antecediendo un
puerto o un rango de puertos es la negacin a dichos rangos o puerto. De
otra manera solo indica el rango de puertos o puerto de origen o destino.
-d [!] <ip>, establece la direccion a la que se va a enviar de la misma manera
si es antecedido por [!] indica la negacin del ip, de otra manera solo indica
la direccion destino.
-s [!] <ip>, establece la direccion a la que viene es decir el origen si es
antecedido por [!] indica la negacin del ip, de otra manera solo indica la
direccion origen.
-m <modulo>, indica a que modulo pertenece estado, limite etc.
--from <IP_SNAT>, indica el origen del paquete dentro de la red.
--to <IP_DNAT>, hacia donde se dirige dentro de la red.
-j <destino>, establece que es lo que se va a hacer con el paquete
denegar,rechazar, o aceptar.

Tutor virtual Juan Martnez Garca

12

Administracin avanzada Linux para Gobierno de Aysn

TIPOS DE FILTRADOS.
Para realizar el filtrado de paquetes, se definen reglas basadas en:
Direcciones
Puertos (TCP,UDP,ICMP)
Interfaz
Las reglas de filtrado incluyen estos aspectos con adems de contener estados de
conexin que permiten saber si la conexin fue requerida por las mquinas que estn
detrs de la red o solo es un intento de conexin. De esta manera los filtrados se
realizan:
INPUT, es dirigido hacia el firewall.
OUTPUT, es desde el firewall.
FORWARD, es lo que pasa a travs del Firewall.
La estructura es la siguiente:
iptables I | -A INPUT | OUTPUT | FORWARD

IMPLEMENTACIN DEL FIREWALL CON IPTABLES.


Y en el firewall queda implementado de la siguiente manera, definimos primero los
bloques que se cargan, luego las definiciones para variables que se establecen y
posteriormente comenzamos con la definicin de las reglas; que como ya se
menciono el orden es lo ms importante para realizar un correcto filtrado de paquetes:
## instalamos los mdulos #
modprobe ip_tables
modprobe ip_nat_ftp
modprobe ip_conntrack_ftp

Tutor virtual Juan Martnez Garca

13

Administracin avanzada Linux para Gobierno de Aysn

## declaramos variables PATH #


IPTABLES=iptables
EXT=eth0
INT=eth1
INT2=eth2
# INTX depende de las tarjetas de red de nuestro servidor#
##declaramos variables para direcciones IP no validas
CLASE_A= 10.0.0.0/8
# o directamente colocar rangos de IP que pueden tener cdigos maliciosos #
## Se define las polticas para las cadenas #
/sbin/iptables P INPUT DROP
/sbin/iptables F INPUT
/sbin/iptables P OUTPUT ACCEPT
/sbin/iptables F OUTPUT
/sbin/iptables P FORWARD ACCEPT
/sbin/iptables F FORWARD
/sbin/iptables t nat -F
/sbin/iptables t nat P PREROUTING DROP
/sbin/iptables t nat P POSTROUTING DROP
## comenzamos con las reglas del firewall #
# Para cerrar rango de puertos al exterior #
iptables -A INPUT -i $EXT -s 0.0.0.0/0 -p tcp --dport 1:1024 -j DROP
# Rechazamos paquetes que vengan de redes privadas #
## CLASE A
## Se bloquea INTPUT eth0 clase A #
/sbin/iptables -A INPUT -i $EXT -s $CLASE_A -j DROP
## Se bloquea FORWARD eth0 clase A
/sbin/iptables -A FORWARD -i $EXT -s $CLASE_A -j DROP
## Se bloquea OUTPUT eth0 clase A
/sbin/iptables -A OUTPUT -o $EXT -s $CLASE_A -j DROP
Como se muestra en este fragmento del firewall, se debe bloquear para los tres
casos tanto para la entrada, reenvi o salida de paquetes con direcciones
falseadas.

Tutor virtual Juan Martnez Garca

14

Administracin avanzada Linux para Gobierno de Aysn

TABLAS NAT.
Las tablas NAT o Network Addres Translation surgen a partir de la necesidad de
tener escasez de direcciones IP, o porque se desea ocultar eldireccionamiento, para
multiplexar direcciones o simplemente para ofrecer mayor flexibilidad a la red. Y los
podemos clasificar como:
NAT de IP
NAT de Puertos PAT
Adems existen diversas variedades como son: Port Forwarding, Dinamic Nat, Smart
Nat, intelligent Nat, Dinamic Nat, Hide Nat, Static Nat, Masquerading y otras ms.
Pero de ellas no hablaremos, nicamente nos enfocaremos al NAT para direcciones
IP.
La forma de funcionar del NAT como Source es la de un paso intermedio entre dos
equipos, esto es, que de una mquina origen pasa por una tercera mquina esta es
la que redirecciona el paquete para que el paquete llegue a la mquina destino. Y
para la implementacin del firewall este paso fue necesario ya que la conexin se
establece por principio de cuentas con el Firewall y posteriormente con la red o con el
servidor que se encuentra en la DMZ. Por lo que se debe realizar un SNAT de
direccin origen para que el firewall establezca la conectividad entre el servidor de la
DMZ y la subred. En la siguiente figura se muestra como funciona el firewall en la
subred, en la que podemos observar la ruta que un paquete recorre dentro de la
subred; esto es de una mquina de la subred desea enviar un correo lo que se hace
es solicitar al firewall la conexin.

Tutor virtual Juan Martnez Garca

15

Administracin avanzada Linux para Gobierno de Aysn

ste revisa el encabezado del paquete ve de que tipo es y de donde proviene si la


direccin no se encuentra restringida establece la conexin con server. El server
responde a la peticin del cliente pero responde al firewall y este reenva la
informacin a la mquina cliente. Una vez estableciendo la comunicacin y estando
en la cuenta de usuario se enva el correo y se establece una conexin remota a
travs del firewall. Quedando una estructura como sigue a continuacin:
Dentro del Script del Firewall tenemos la redireccin SNAT como:
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.2 -j MASQUERADE && echo
"MASQUERADE para el eth2 establecida"
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.10.2 -j MASQUERADE && echo
"MASQUERADE para el eth2 establecida"
De igual manera encontramos el DNAT o Destination NAT, que surge a partir del
funcionamiento bsico encontrando diversas formas de implementarlo.
Dentro del Firewall la Implementacin es simple, se desea que todas las conexiones
externas dirigidas a los servicios de Correo y Web sean direccionados a servidor sin
pasar por la subred, de esta manera en caso de que en algn momento la mquina
sea blanco u objetivo de ataque solo puedan pasar a la Zona Desmilitarizada sin
afectar en ningn momento a la red interna. La siguiente figura muestra un panorama
del funcionamiento del firewall para conexiones del exterior y peticin de servicios.

Tutor virtual Juan Martnez Garca

16

Administracin avanzada Linux para Gobierno de Aysn

Este funcionamiento evita el que los usuarios externos tengan contacto directo a la
subred. Todos los datos y la informacin valiosa se mantienen dentro de la subred y a
esta informacin solo tiene acceso el personal autorizado y para la informacin que
los usuarios manejan se utilizan servidores especializados y que se encuentran en el
DMZ (Zona Desmilitarizada) donde cada servidor cumple una funcin determinada.
Y en el firewall la implementacin queda definida para los accesos desde fuera en los
puertos 80, 443, y 25.
# Direccionamiento para los servicios web.
/sbin/iptables -t nat -A PREROUTING -i $EXT -p tcp --dport 80 -j DNAT --to
192.168.10.2:80
# se redirecciona las accesos al httpd 443
/sbin/iptables -t nat -A PREROUTING -i $EXT -p tcp dport 443 -j DNAT --to
192.168.10.2:443
De igual manera sucede con el puerto 25 para el filtrado de este puerto se hace la
siguiente:
# se redireccionan los accesos al puerto 25 de correos /sbin/iptables -t nat -A
PREROUTING -i $EXT -p tcp --dport 25 -j DNAT --to 192.168.10.2:25
Tutor virtual Juan Martnez Garca

17

Administracin avanzada Linux para Gobierno de Aysn

Diagrama de flujo de un firewall

Tutor virtual Juan Martnez Garca

18

Potrebbero piacerti anche