Está en la página 1de 27

UNIVERSIDAD TCNICA DE MANAB

FACULTAD DE CIENCIAS INFORMTICAS


ESCUELA DE INGENIERA EN SISTEMAS INFORMTICOS
"Forma Ingenieros en Sistemas Informticos de excelencia para servir a la sociedad con eficiencia y transparencia
contribuyendo al buen vivir"

APLICACIN Y MANEJO DE
SISTEMAS OPERATIVOS
DEBER #1

IPTABLES

Integrante:
CASTRO LEN WILLIAM

Docente:
Ing. Parraga Valle Jos Eduardo

6to A
PERIODO MAYO - SEPTIEMBRE 2016
Contenido
1. IPTABLES.............................................................................................................. 3
1.1. INTRODUCCIN.............................................................................................. 3
1.2. REGLAS DE IPTABLES..................................................................................... 3
1.3. FUNCIONAMIENTO DE IPTABLES....................................................................4
1.4. EL COMANDO IPTABLES.................................................................................6
1.5. TRABAJANDO CON IPTABLES..........................................................................8
1.6. Un caso real: Una Home-LAN...........................................................................11
1.7. Anexo: Script de iptables para una Home-Lan.....................................................14
1.8. POLITICAS.................................................................................................... 23
Equipamiento lgico necesario...................................................................................23
Instalacin a travs de yum.................................................................................... 23
1.9. PROCEDIMIENTOS........................................................................................ 23
Reglas de destino.................................................................................................. 23
2. Polticas por defecto........................................................................................ 24
Limpieza de reglas especficas................................................................................24
2.1. Reglas especficas........................................Error! Marcador no definido.
Ejemplos de reglas................................................Error! Marcador no definido.
Eliminar reglas......................................................Error! Marcador no definido.
Mostrar la lista de cadenas y reglas.........................Error! Marcador no definido.
Iniciar, detener y reiniciar el servicio iptables..........Error! Marcador no definido.
Agregar el servicio iptables al arranque del sistema.. Error! Marcador no definido.
2.2. Bibliografa...................................................................................................... 25
1. IPTABLES

1.1. INTRODUCCIN

Iptables es un firewall que permite filtrar paquetes, realizar traduccin de


direcciones de red (NAT) para IPv4 o mantener registros del Log. Iptables est
vinculado al kernel de Linux. Se trata de una herramienta muy compleja, y
tremendamente configurable.
Iptables permite definir reglas para controlar el trfico de red. Requiere
privilegios de administrador del sistema para operar, por ello, el nico modo de
ejecutarlo es en modo superusuario.
1.2. REGLAS DE IPTABLES

Las reglas se agrupan en cadenas, las cuales a su vez estn agrupadas en tablas. A
continuacin, se expone informacin ms detallada acerca de las mismas.

Cadenas
Una cadena es una lista ordenada de reglas. Cuando recogemos un paquete se
enva a una cadena y se compara, en orden, con cada una de las reglas de la
cadena. La regla define qu caractersticas debe tener el paquete para que la
regla se active, tales como tipo de protocolo, direccin IP origen/destino o
nmero de puerto. Tras la comparacin, la regla puede haber sido activada o
no. En caso de que no se haya activado la regla el proceso contina con la
siguiente regla. Si el paquete, por el contrario, coincide con la regla, las
especificaciones indicadas en la regla para tratar el paquete se siguen. Por lo
general, cualquier otro procesamiento de la cadena normalmente se aborta.
Tablas
En Iptables se definen tres tablas principales: Filter, Nat y Mangle.
Tabla Filter. Esta tabla es la encargada de filtrar los paquetes. Se comparan los
paquetes con las condiciones indicadas en las reglas y en funcin del resultado
se realiza una accin como aceptar el paquete o descartarlo. La tabla Filter est
compuesta por cadenas predefinidas:

INPUT. Todos los paquetes entrantes y dirigidos al propio


sistema debern atravesar esta cadena.
OUTPUT. Todos los paquetes que salen y han sido
originados en el propio sistema debern atravesar esta
cadena.
FORWARD. Todos los paquetes que pasan por el
sistema para su encaminamiento hacia su destino
debern atravesar esta cadena.

Tabla Nat. Esta tabla es la encargada de configurar el protocolo NAT (Network


Address Translation) sobre los paquetes. Se usa para la traduccin de los
campos: direccin IP origen y direccin IP destino del paquete. Dependiendo
del campo que se desee modificar se emplea una de las siguientes cadenas:

PREROUTING. Esta cadena se usa principalmente para la


traduccin de direcciones de red de destino (DNAT,
Destination Network Address Translation).
POSTROUTING. Esta cadena se usa para la traduccin
de direcciones de red de origen (SNAT, Source Network
Address Translation).
OUTPUT. Permite hacer NAT a los paquetes que salen
desde el host.

Tabla Mangle. Esta tabla es la encargada de modificar el


contenido de los paquetes. La tabla Mangle est formada
por las cadenas predefinidas: PREROUTING, INPUT,
FORWARD, OUTPUT y POSTROUTING.

1.3. FUNCIONAMIENTO DE IPTABLES

Un paquete entra por una interfaz de red como puede ser una tarjeta de red o
mdem. El paquete se dirige al firewall. ste empieza a procesarlo. El paquete
atraviesa las tablas de Iptables con sus correspondientes cadenas. El paquete,
ir pasando secuencialmente por cada una de las reglas de la cadena hasta
coincidir con el patrn de alguna de ellas. Cuando esto ocurra, el paquete se
tratar segn indique la accin de la regla. Si tras recorrer toda la lista, el
paquete no coincide con ninguna de las reglas, se ejecutar la accin por
defecto asociada a esa cadena.

En la figura siguiente se detalla de forma grfica las diferentes rutas posibles


que puede seguir un paquete durante su procesado a travs del firewall.
Figura 1: Procesado de paquetes en Iptables
1.4. EL COMANDO IPTABLES

El objetivo de este apartado es explicar el uso del comando iptables para


crear y gestionar las reglas de nuestro cortafuego. A pesar de la descripcin
que vamos a ofrecer, si se desea un conocimiento exhaustivo de todas las
opciones de la herramienta Iptables recomendamos consultar el manual de
Iptables.

En primer lugar, veremos cmo gestionar las cadenas. La utilizacin del


comando iptables presenta siempre la siguiente estructura:
iptables [<-t tabla>] comando <match><objetivos/saltos>
Las tablas son siempre una de las tres definidas anteriormente: Filter, Nat, o
Mangle. En caso de no indicar ninguna en concreto, por defecto, nos referimos
a la tabla Filter.
Para aadir y manipular cadenas utilizaremos los comandos siguientes:
iptables N: crea una nueva cadena vaca, es decir, sin reglas.
iptables X: elimina una cadena que est vaca.
iptables F: vaca una cadena, es decir, elimina todas las reglas de una cadena.
iptables P: cambia la poltica por defecto de una cadena.
iptables L: lista las reglas de una cadena.
iptables Z: pone a cero las contadores de una regla (nmero de paquetes, de
bytes, etc.).
Con los comandos siguientes conseguimos gestionar las reglas de esas
cadenas:
iptables A: aade al final de una cadena una nueva regla. iptables I: inserta al
comienzo de una cadena una nueva regla. iptables R: reemplaza una regla de
una cadena.
iptables D: elimina una regla de una cadena.
Por ltimo, vamos a explicar cmo podemos establecer las condiciones y
acciones sobre cada regla, es decir, cmo establecer las condiciones de
comparacin entre paquetes y reglas:
s: indica la direccin de origen sobre el que se evala la condicin de la regla.
d: indica la direccin de destino sobre el que se evala la condicin de la
regla.
i: indica la interfaz de entrada sobre la cual se evala la condicin de la regla.
o: indica la interfaz de salida sobre la cual se evala la condicin de la regla.
p: indica el protocolo del datagrama que concordar con esta regla. Los
protocolos vlidos son TCP, UDP, ICMP, o un nmero, en caso de conocer el
nmero del protocolo IP.

Cada protocolo lleva asociados sus propios campos: Campos de TCP:


--sport: indica el puerto origen que debe contener el segmento para que se
active la regla. Se pueden especificar los puertos en la forma de un rango,
especificando los extremos inferior y superior usando los dos puntos (:) como
delimitador.
--dport: indica el puerto destino que debe contener el segmento para que se
active la regla. Se pueden especificar los puertos en la forma de un rango,
especificando los extremos inferior y superior usando los dos puntos (:) como
delimitador.
--tcp -flags: especifica mediante una mscara los bits indicadores de TCP del
datagrama. La mscara est compuesta por flags separados por comas entre
s. Los flags son: SYN, ACK, FIN, RST, URG, PSH, ALL o NONE.

Campos UDP:
--sport: indica el puerto origen que debe contener el datagrama para que se
active la regla.
--dport: indica el puerto destino que debe contener el datagrama para que se
active la regla.

Campos ICMP:
--icmp-type: especifica el tipo de mensaje ICMP. Se puede especificar mediante
su nmero asociado o por los siguientes identificadores: echo- request, echo-
reply, source-quench, time-exceeded, destination- unreachable, network-
unreachable, host-unreachable, protocol- unreachable y port-unreachable.

Campos MAC:
--mac -source: especifica la direccin MAC. Este campo slo tiene sentido en la
cadena INPUT y FORWARD.
f: esta opcin se usa cuando se fracciona un datagrama porque supera el MTU
de la Red. Permite especificar acciones sobre el segundo y restantes fragmentos
del datagrama.
! : invierte el valor lgico de la condicin de la regla.
Existen ms posibilidades de filtrado, estn son las que ms hemos utilizado
durante el desarrollo del proyecto para la deteccin de comportamientos de la Red.

1.5. TRABAJANDO CON IPTABLES


A continuacin se muestran algunas de las rdenes ms habituales durante
el uso de la herramienta Iptables.
Para listar todas las reglas que hay en Iptables, introducimos en la
terminal el siguiente comando:

sudo iptables L n

Figura 3: Listar reglas en Iptables

Para insertar una regla en Iptables, introducimos en la terminal el


siguiente comando:
sudo iptables A INPUT p TCP j LOG --log-prefix reglaTCP

Figura 4: Insertar una regla en Iptables

Para borrar una regla de Iptables, introducimos en la terminal el


siguiente comando:
sudo iptables D INPUT p TCP j LOG --log-prefix reglaTCP

Figura 5: Borrar una


regla en Iptables

Listamos de nuevo las reglas de Iptables y comprobamos que la


regla ha sido eliminada correctamente.

Figura 6: Listar
reglas en Iptables

Para borrar todas las reglas de Iptables, introducimos en la


terminal el siguiente comando:

sudo iptables F

Figura 32: Borrar todas las reglas en Iptables


Por otra parte, cabe destacar que Iptables ofrece una amplia gama de
mdulos para mejorar el alcance de las reglas. Algunos de estos mdulos
estn disponibles por defecto.
A continuacin, detallamos un breve anlisis del mdulo String y del
mdulo Recent, ya que han sido los ms usados en nuestras reglas.

Mdulo String
El mdulo String busca en el contenido del paquete una determinada
cadena de caracteres. Existen dos parmetros --from y --to que se
utilizan para indicar el comienzo y el final donde se desea buscar los
datos. En caso de omitir dichos parmetro la bsqueda se realiza en el
paquete entero.

El parmetro --algo indica el tipo de algoritmo usado en la bsqueda de la


cadena. Existen dos tipos de algoritmos: bm (Boyer-Moore) y kmp (Knuth-
Pratt- Morris).

Ejemplo de uso del mdulo String:

-m string --string cadenaBuscar --from 48 to 60 --algo bm

Mdulo Recent

El mdulo Recent permite monitorizar y limitar las conexiones recientes.


El funcionamiento de este mdulo es muy sencillo. Aade direcciones IP a
una lista, las cuales sern posteriormente comparadas con las direcciones
IP de los nuevos intentos de conexin.

-m recent --name nombreListaAtacantes --rcheck --seconds


numSegundos
-m recent --name nombreListaAtacantes --set

El parmetro --name indica el nombre de la lista donde se almacenarn


las direcciones IP. El parmetro --seconds establece el intervalo de tiempo
en segundos. El parmetro --set inserta la direccin IP origen en la lista de
direcciones IP.
1.6. Un caso real: Una Home-LAN.

El manejo de iptables es sencillo, aunque explicarlo mediante la simple


narracin puede hacerlo parecer ms complicado. La mejor manera de
entenderlo es a travs de su aplicacin a un caso real. Para ello,
supongamos que vamos a configurar un cortafuegos de filtrado de
paquetes para la red de la figura siguiente.

En principio, las tres maquinas de la red son simples estaciones de trabajo,


que tal vez exportan algn directorio por SMB dentro de la propia red local. Por
lo que debemos de preocuparnos principalmente de que tengan salida a
Internet los principales servicios, clientes HTTP, FTP, etc. Por contra, en
canyizares adems de actuar de cortafuegos, queremos que corran servicios
exportados tanto a la LAN como a Internet, por ejemplo un servidor HTTP, un
servidor FTP y un servidor SSH para poder conectarnos remotamente a la
mquina.
Adems, deberemos resolver el problema del servicio DNS para la red local. La
opcin ms sencilla, es configurar las mquinas de la red para que utilicen el
mismo servidor DNS que la mquina cortafuegos (canyizares), es decir, los
DNS del ISP (en este caso ONO). La otra alternativa, es ejecutar un servidor
DNS en el cortafuego y configurar las mquinas de la red local para que lo
utilicen. Naturalmente, el servicio DNS que correr en canyizares, ser slo un
servicio de cach. Esta segunda configuracin, es ms compleja, aunque
ofrece ventajas respecto a la primera porque reduce el de peticiones trfico
DNS hacia Internet, ya que se resuelven localmente salvo cuando no estn en
cach, por esta misma causa, el tiempo medio de servicio en la resolucin de
un nombre de maquina desciende ligeramente.
Supondremos que la red interna es confiable, es decir, que de existir alguna
amenaza, sta vendr desde Internet, no desde dentro. Tenemos que tener en
cuenta que la IP proporcionada por ONO es dinmica, esto puede traernos pequeos
quebraderos de cabeza en el caso que deseemos (como es nuestro caso, ya que
corremos servicios en el cortafuegos) filtrar utilizando nuestra direccin IP pblica.
Hay diversas soluciones, pero dado que mi ISP ofrece cierta estabilidad en la
duracin17 de las IP (algunas me han durado meses). La solucin ms sencilla, es
obtener la IP mediante la ejecucin de:

EXT_IP=`ifconfig $EXT_IF | grep inet | cut -d : -f 2 | cut -d \ -f 1`

O de algn mtodo equivalente como:

EXT_IP="`ifconfig $EXT_IF | grep 'inet addr' | awk '{print $2}' | sed -e 's/.*://'`"

Resuelto estros problemas, slo queda estructurar el script en funcin de nuestras


necesidades.
Por ejemplo, para permitir accesos al servidor HTTP, FTP o SSH de canyizares
desde cualquier lugar, bastara con:

#Servicio FTP
iptables -t filter
-A INPUT -p TCP -s 0/0 --dport 21 -j allowed

#Servicio SSH
iptables -t filter -A INPUT -p TCP -s 0/0 --dport 22 -j allowed

#Servicio HTTP
iptables -t filter -A INPUT -p TCP -s 0/0 --dport 80 -j allowed

Si el servidor HTTP se ejecutase en gustavo en lugar de en canyizares, deberamos


emplear DNAT.

#Servicio HTTP dentro de la LAN. Se exporta al exterior


iptables -t nat -A PREROUTING i $EXT_IF -p tcp --dport 80 -j \
DNAT --to-destination 192.168.0.2
Tras ver la sintaxis de iptables y comprender como es su funcionamiento, el
configurar un cortafuego a medida es una cuestin relativamente sencilla. A media
que nos volvemos paranoicos o necesitamos una mayor seguridad y a la vez el
poder exportar ms servicios, es cuando las cosas se van complicando.

El script de configuracin de un cortafuego para la red local de la figura anterior, se


presenta como el primer anexo del documento. El cortafuegos presentado, es
elativamente seguro y bastante sencillo y aun as son cerca de 300 lneas de cdigo.

Si no se desea una seguridad o perfilado extremo, actualmente existen herramientas


grficas que permiten generar scripts generales de configuracin, a pesar de que
puede que no excesivamente eficientes, pueden servir de base para retocarlo
despus a mano y evitar teclear demasiado.
1.7. Anexo: Script de iptables para una Home-Lan

#!/bin/bash

# Script de configuracin del Firewall $IPTABLES para Kernels 2.4.x

#---------------------------------------------------------------------------

#---------------------------------------------------------------------------

#Colores para la informacin que ofreceremos por pantalla.


rojo="${esc}[31m"
verde="${esc}[32m"

azul="${esc}[34m"
echo "${rojo}"

echo "---------------------------------------------"
echo "${azul}

echo "---- Script de configuracin de iptables ----"


echo "${rojo}"

echo "---------------------------------------------"

#---------------------------------------------------------------------------

#---------------------------------------------------------------------------

# Configuracin de algunas variables.

echo "${azul}"
echo -n " ---- Configurando Variables ---- "

KERNEL=`uname -a|cut -f3 -d " "`

LAN_IP_RANGE="192.168.0.0/24" #IP's permitidas en la LAN 192.168.0.[0...255]

LAN_IP="192.168.0.1" #IP de la interfaz de la LAN.


ANYIP="0/0" #Cualquier IP.
LAN_BCAST_ADRESS="192.168.0.255" # Direccin bradcast.
LO_IF="lo" #Interfaz de loopback

LO_IP="127.0.0.1" # LocalHost IP 127.0.0.1

EXT_IF="eth0" # Interfaz de red Externa (Conexin a Internet)


INT_IF="eth1" # Interfaz de red Interna (Conexin a la LAN)
IPTABLES="/usr/sbin/iptables" #"whereis iptables" si se desconoce el PATH.
IPPRIVADACLASE_A="10.0.0.0/8"

IPPRIVADACLASE_B="172.16.0.0/12"
IPPRIVADACLASE_C="192.168.0.0/16"
CLASE_D_MULTICAST="224.0.0.0/4"
CLASE_E_RESERVADAS="240.0.0.0/5"

EXT_IP="`ifconfig $EXT_IF|grep 'inet addr'|awk '{print $2}'|sed -e's/.*://'`"

echo "${verde}"

echo " [.] Versin del Kernel : $KERNEL"

echo " [.] Localizacin iptables : $IPTABLES"


echo " [.] Interfaz externa : $EXT_IF"

echo " [.] Direccin IP externa : $EXT_IP"

echo " [.] Interfaz LAN : $INT_IF"


echo " [.] Direccin IP LAN : $LAN_IP"
echo "Hecho!"

#---------------------------------------------------------------------------

#---------------------------------------------------------------------------

# Cargamos los mdulos de iptables que necesitamos

echo "${azul}"
echo -n " ---- Cargando mdulos requeridos de NetFiler ----"

/sbin/depmod -a

/sbin/modprobe ip_tables
/sbin/modprobe ip_conntrack

/sbin/modprobe iptable_filter

/sbin/modprobe iptable_mangle

/sbin/modprobe iptable_nat

/sbin/modprobe ipt_LOG

/sbin/modprobe ipt_limit

/sbin/modprobe ipt_state

/sbin/modprobe ipt_MASQUERADE

#/sbin/modprobe ipt_owner

#/sbin/modprobe ipt_REJECT

#/sbin/modprobe ip_conntrack_ftp

#/sbin/modprobe ip_conntrack_irc
echo "${verde}"

#echo "lsmod"

echo "Hecho!"
#---------------------------------------------------------------------------

#---------------------------------------------------------------------------

echo "{azul}
echo -n "---- Estableciendo parametros del Kernel en /proc/sys/net/ipv4 ----"

# Activamos la opcin de FORWARDING. La opcin es CRTICA si el firewall

# tiene ms de una interfaz de red y queremos que encamine trfico entre


ellas.

echo "1" > /proc/sys/net/ipv4/ip_forward

# Habilitamos el la opcin de verificacin de direccin

for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
echo "1" > $f

done

# Activamos la opcin de sync cookies. Con ello, nos protejemos ante el

# ataque DOS de bomba SYNC

echo "1" > /proc/sys/net/ipv4/tcp_syncookies

# Activamos la opcin de proteccin de mansajes ICMP, con ello evitamos

# ataques DOS de bomba ICMP

echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

# IMPORTANTE: SLO PARA USUARIOS CON IP DINMICA. (La mayora)

# Si tu ISP proporciona IP's dinmicas en tu conexin SLIP, PPP, o DHCP,

# debes ejecutar la lnea siguientes.

echo "1" > /proc/sys/net/ipv4/ip_dynaddr

# DESHABILITAMOS la aceptacin de paquetes cuyas ruta haya sido

# prefijada en el origen (source routed packets).

for f in /proc/sys/net/ipv4/conf/*/accept_source_route; do
echo "0" > $f

done

# DESHABILITAMOS la aceptacin de paquetes ICMP del tipo

# Redirect Acceptance

for f in /proc/sys/net/ipv4/conf/*/accept_redirects; do
echo "0" > $f

done
# DESHABILITAMOS la posibilidad de enviar paquetes ICMP del tipo

# Redirect Acceptance.

for f in /proc/sys/net/ipv4/conf/*/send_redirects; do
echo "0" > $f

done

#DESHABILITAMOS la posibilidad de enviar mensajes de redireccin

for f in /proc/sys/net/ipv4/conf/*/send_redirects; do
echo "0" > $f

done

echo "${verde}"

echo -n " [.] Parmetros del Kernel establecidos. "


echo "Hecho!"

#---------------------------------------------------------------------------

#------------------------------ INICIALIZACIN -----------------------------

# Inicializamos el mdulo Netfilter

echo "${azul}"
echo -n "... Inicializando NetFilter ... "

# Eliminamos las reglas de TODAS las cadenas de cada tabla

$IPTABLES -t filter --flush

$IPTABLES -t nat --flush

$IPTABLES -t mangle --flush

# Con las TODAS las cadenas vacas, dejamos slo las cadenas por defecto
$IPTABLES -t filter --delete-chain

$IPTABLES -t nat --delete-chain

$IPTABLES -t mangle --delete-chain

# Fijamos las polticas por defecto para el filtrado.

$IPTABLES -t filter --policy INPUT DROP


$IPTABLES -t filter --policy OUTPUT DROP

$IPTABLES -t filter --policy FORWARD DROP

echo "${verde}"

echo -n " [.] Tablas y cadenas vaciadas. Establecidas polticas por defecto"
echo "Hecho!"

#---------------------------------------------------------------------------

#------------------ Construccin de las reglas de filtrado -----------------

echo "${azul}"
echo -n ".... Comienza la insercin de reglas de cortafuefos .... "

# Comenzamos la insercin de reglas en la tabla filter.

# Creamos cadenas para los paquetes no validos

$IPTABLES -N bad_tcp_packets

$IPTABLES -N bad_tcp_input_packets

# Creamos cadenas separados para los protocolos ICMP, TCP y UDP

$IPTABLES -t filter -N allowed

$IPTABLES -t filter -N icmp_packets

$IPTABLES -t filter -N tcp_packets

$IPTABLES -t filter -N udpincoming_packets

# --- Cadenas bad_tcp_packets y bad_tcp_input_packets

# Los paquetes TCP entrantes no presentarn situaciones extraas

# en sus BITS (evitaremos ataques DOS)

$IPTABLES -t filter -A bad_tcp_input_packets -p tcp --tcp-flags \


ALL NONE -j DROP

$IPTABLES -t filter -A bad_tcp_input_packets -p tcp --tcp-flags \

SYN,FIN SYN,FIN -j DROP

$IPTABLES -t filter -A bad_tcp_input_packets -p tcp --tcp-flags \

SYN,RST SYN,RST -j DROP

$IPTABLES -t filter -A bad_tcp_input_packets -p tcp --tcp-flags \

FIN,RST FIN,RST -j DROP

$IPTABLES -t filter -A bad_tcp_input_packets -p tcp --tcp-flags \


ACK,FIN FIN -j DROP

$IPTABLES -t filter -A bad_tcp_input_packets -p tcp --tcp-flags \


ACK,PSH PSH -j DROP
$IPTABLES -t filter -A bad_tcp_input_packets -p tcp --tcp-flags \
ACK,URG URG -j DROP

$IPTABLES -t filter -A bad_tcp_packets -p tcp ! --syn -m state --state \

NEW -j LOG --log-prefix "filter bad_tcp_packets Posible ataque SYN:"

$IPTABLES -t filter -A bad_tcp_packets -p tcp ! --syn -m state --state \

NEW -j DROP

# --- Cadena allowed

$IPTABLES -t filter -A allowed -p tcp --syn -j ACCEPT


$IPTABLES -t filter -A allowed -p tcp -m state --state ESTABLISHED, \

RELATED -j ACCEPT

$IPTABLES -t filter -A allowed -p tcp -j DROP

# --- Cadena icmp_packets

#Permitimos la salida y entrada de PINGs


$IPTABLES -t filter -A icmp_packets -p icmp -s $ANYIP --icmp-type 8 \
-j ACCEPT

$IPTABLES -t filter -A icmp_packets -p icmp -s $ANYIP --icmp-type 11 \

-j ACCEPT

# --- Cadena tcp_packets

#Servicio FTP

$IPTABLES -t filter -A tcp_packets -p tcp -s $ANYIP --dport 21 -j allowed


#Servicio SSH

$IPTABLES -t filter -A tcp_packets -p tcp -s $ANYIP --dport 22 -j allowed


#Servicio HTTP
$IPTABLES -t filter -A tcp_packets -p tcp -s $ANYIP --dport 80 -j allowed

#Servicio IDENTD

$IPTABLES -t filter -A tcp_packets -p tcp -s $ANYIP --dport 113 -j allowed

# --- Cadena udpincoming_packets

#Servicio DNS cach para la red local.


$IPTABLES -t filter -A udpincoming_packets -p udp -s $LAN_IP_RANGE \
--source-port 53 -j ACCEPT

# --- Cadena INPUT.

# Todo paquete entrante, deber ser bueno.

$IPTABLES -t filter -A INPUT -p tcp -j bad_tcp_packets


# Rechazamos paquetes entrantes por la interfaz de red Externa con IPs de

# origen extraas (anti spoofing)

$IPTABLES -t filter -A INPUT -i $EXT_IF -s $EXT_IP -j DROP


$IPTABLES -t filter -A INPUT -i $EXT_IF -s $IPPRIVADACLASE_A -j DROP

$IPTABLES -t filter -A INPUT -i $EXT_IF -s $IPPRIVADACLASE_B -j DROP

$IPTABLES -t filter -A INPUT -i $EXT_IF -s $IPPRIVADACLASE_C -j DROP

$IPTABLES -t filter -A INPUT -i $EXT_IF -s $CLASE_D_MULTICAST -j DROP

$IPTABLES -t filter -A INPUT -i $EXT_IF -s $CLASE_E_RESERVADAS -j DROP

# Los paquetes que provienen de Internet deben ser alguno de los definidos

$IPTABLES -t filter -A INPUT -p icmp -i $EXT_IF -j icmp_packets


$IPTABLES -t filter -A INPUT -p tcp -i $EXT_IF -j tcp_packets

$IPTABLES -t filter -A INPUT -p udp -i $EXT_IF -j udpincoming_packets

# Reglas especiales

#Mensajes a la direccin de broadcast desde la LAN hacia la LAN

$IPTABLES -t filter -A INPUT -p ALL -i $INT_IF -d $LAN_BCAST_ADRESS -j ACCEPT


#Permitimos conexin de Loopback.

$IPTABLES -t filter -A INPUT -p ALL -i $LO_IF -s $LO_IP -j ACCEPT


$IPTABLES -t filter -A INPUT -p ALL -i $LO_IF -s $INT_IP -j ACCEPT

$IPTABLES -t filter -A INPUT -p ALL -i $LO_IF -s $EXT_IP -j ACCEPT

#Peticiones de la red local

$IPTABLES -t filter -A INPUT -p ALL -i $INT_IF -s $LAN_IP_RANGE -j ACCEPT


$IPTABLES -t filter -A INPUT -p ALL -d $EXT_IP -m state --state ESTABLISHED, \

RELATED -j ACCEPT

#Registramos un mximo de 3 paquetes por minuto que no casen con las

#reglas anteriores

$IPTABLES -A INPUT -m limit --limit 3/minute --limit-burst 3 -j \


LOG --log-level DEBUG --log-prefix "filter INPUT paquete perdido: "
# --- Cadena FORWARD.

# Solo encaminamos paquetes vlidos

$IPTABLES -t filter -A FORWARD -p tcp -j bad_tcp_packets


# Aceptamos ecaminar los paquetes porcedentes de la LAN

$IPTABLES -t filter -A FORWARD -i $INT_IF -j ACCEPT


$IPTABLES -t filter -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

#Registramos un mximo de 3 paquetes por minuto que no casen con las

#reglas anteriores

$IPTABLES -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j \


LOG --log-level DEBUG --log-prefix "filter FORWARD paquete perdido: "

# --- Cadena OUTPUT.

# Solo permitimos paquetes vlidos

$IPTABLES -t filter -A OUTPUT -p tcp -j bad_tcp_packets


# Permitimos paquetes salientes con origen en el host

$IPTABLES -t filter -A OUTPUT -p ALL -s $LO_IP -j ACCEPT


$IPTABLES -t filter -A OUTPUT -p ALL -s $INT_IP -j ACCEPT

$IPTABLES -t filter -A OUTPUT -p ALL -s $EXT_IP -j ACCEPT

#Registramos un mximo de 3 paquetes por minuto que no caden con las

#reglas anteriores

$IPTABLES -A OUTPUT -m limit --limit 3/minute --limit-burst 3 -j \


LOG --log-level DEBUG --log-prefix "filter OUTPUT paquete perdido: "

echo "${verde}"

echo -n " [.] Poltica de filtrado establecida"


echo "Hecho!"

#---------------------------------------------------------------------------

#------------------- Construccin de las reglas de NAT ---------------------

# Habilitamos NAT, TODO el trfico interno es enmascarado cuando sale al

# exterior

echo "${azul}"
echo -n ".... Configuracin de NAT .... "

#REM: Utilizamos MASQUERADE porque la IP es dinmica

$IPTABLES -t nat -A POSTROUTING -s $LAN_IP_RANGE -o $EXT_IF -j MASQUERADE

echo "${verde}"
echo -n " [.] Poltica de enmascaramiento establecida"
echo "Hecho!"
1.8. POLITICAS

Establecer algunas polticas bsicas desde el comienzo puede servir como una
base para la construccin de reglas ms detalladas definidas por el
usuario. Iptables utiliza polticas (-P) para crear reglas por defecto. Los
administradores orientados a la seguridad usualmente eligen descartar todos
los paquetes como una poltica y solamente permiten paquetes especficos
basados en el caso. Las reglas siguientes bloquean todo los paquetes
entrantes y salientes en una puerta de enlace de red.

iptablesPINPUTDROP
iptablesPOUTPUTDROP

Adicionalmente, se recomienda que cualquier paquete redirigido el trfico de


la red que se debe enrutar desde el cortafuegos a su nodo destino tambin
se niegue, para restringir a los clientes internos de una exposicin inadvertida a
la Internet. Para hacer esto, utilice la regla siguiente:

iptablesPFORWARDDROP

Despus de configurar las cadenas de polticas, puede crear las nuevas reglas
para su red y requerimientos de seguridad particulares. Las secciones
siguientes resaltan algunas reglas que puede implementar en el curso de la
construccin de su cortafuegos iptables.

Equipamiento lgico necesario.

Instalacin a travs de yum.

Si utiliza CentOS 5 y 6, Red Hat Enterprise Linux 5 o 6, solo se necesita realizar lo siguiente
para instalar o actualizar el equipamiento lgico necesario:

yum -y install iptables

1.9. PROCEDIMIENTOS.
Cadenas.

Las cadenas pueden ser para trfico entrante (INPUT), trfico saliente (OUTPUT) o trfico
reenviado (FORWARD).
Reglas de destino.

Las reglas de destino pueden ser aceptar conexiones (ACCEPT), descartar conexiones (DROP),
rechazar conexiones (REJECT), encaminamiento posterior (POSTROUTING), encaminamiento
previo (PREROUTING), SNAT, NAT, entre otras.

2. Polticas por defecto.

Establecen cual es la accin a tomar por defecto ante cualquier tipo de conexin. La opcin
-P cambia una poltica para una cadena. En el siguiente ejemplo se descartan (DROP) todas
las conexiones que ingresen (INPUT), todas las conexiones que se reenven (FORWARD) y
todas las conexiones que salgan (OUTPUT), es decir, se descarta todo el trfico que entre
desde una red pblica y el que trate de salir desde la red local.

iptables -P INPUT DROP


iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

Limpieza de reglas especficas.

A fin de poder crear nuevas reglas, se deben borrar las existentes, para el trfico entrante,
trfico reenviado y trfico saliente as como el NAT.

iptables -F INPUT
iptables -F FORWARD
iptables -F OUTPUT
iptables -F -t nat
2.1. Bibliografa

Publicaciones:
Firewalls Linux: gua avanzada. Robert L. Ziegler. Ed. Prentice-Hall, D.L.
2000.
Networking Linux. A practical Guide to TCP/IP. Pat Eyler. 2001 by New
Riders Publishing. Iptables tutorial. Completo tutorial de Oskar
Andreasson, que nos explica y complementa con ejemplos el howto y faq
del netfilter: http://people.unix-fu.org/andreasson/index.html

Packet-filtering-HOWTO. Rusty Russells. GPL.


NAT-HOWTO. Rusty Russells. GPL.

Netfilter-hacking-HOWTO. Rusty Russells. GPL.

Direcciones de Internet con informacin de iptables:


Pagina Principal de Netfilter/Iptables.
http://netfilter.samba.org |
http://netfilter.filewatcher.org.

Excelente pgina con gran cantidad de informacin sobre iptables y


netfilter.

http://www.linuxguruz.org/iptables/.

Charla en el IRC de uninet sobre el netfilter.


http://6fevu.uninet.edu/text/laforge.html,
http://6fevu.uninet.edu/text/laforge1.html
http://6fevu.uninet.edu/text/laforge2.html,
http://6fevu.uninet.edu/text/laforge22.html
http://6fevu.uninet.edu/text/redes22.html.

Distintos tutoriales sobre iptables.


http://www.glug.es/sections.php?
op=viewarticle&artid=1
http://www.linux-mag.com/cgi-bin/printer.pl?
issue=2000-01&article=bestdefense
http://pinehead.com/articles.php?view=371.
UNIVERSIDAD POLITCNICA DE VALNCIA:
https://riunet.upv.es/handle/10251/16937?show=full
http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-sg-es-
4/s1-fireall-ipt-act.html

También podría gustarte