Anda di halaman 1dari 178

IPTABLES manual practico, tutorial de iptables con ejemplos

IPTABLES
Manual práctico

En este manual se muestran las habituales arquitecturas de redes con firewall y la forma de montar iptables para cada
caso, con distintas opciones para cada ejemplo.

Por Pello Xabier Altadill Izura


Ingeniero Informático por la UPV−EHU
pello@pello.info

(Actualizaciones y ejemplos en http://www.pello.info )

1. Qué es un firewall
2. Qué es iptables
3. Al grano: creando un firewall con iptables
3.1 Proteger la propia máquina
3.2 Firewall de una LAN con salida a internet
3.3 Firewall de una LAN con salida a internet con DMZ
3.4 Firewall puro y duro entre redes
3.5 Firewall con política por defecto DROP
4. Cómo depurar el funcionamiento del firewall
Enlaces, notas, autor

1. Qué es un firewall

Un firewall es un dispositivo que filtra el tráfico entre redes, como mínimo dos. El firewall puede ser un dispositivo
físico o un software sobre un sistema operativo. En general debemos verlo como una caja con DOS o mas interfaces de
red en la que se establecen una reglas de filtrado con las que se decide si una conexión determinada puede establecerse o
no. Incluso puede ir más allá y realizar modificaciones sobre las comunicaciones, como el NAT.

Esa sería la definición genérica, hoy en dia un firewall es un hardware especifico con un sistema operativo o una IOS que
filtra el tráfico TCP/UDP/ICMP/../IP y decide si un paquete pasa, se modifica, se convierte o se descarta. Para que un
firewall entre redes funcione como tal debe tener al menos dos tarjetas de red. Esta sería la tipología clásica de un
firewall:

Figura 1: esquema de firewall típico entre red local e internet

Esquema típico de firewall para proteger una red local conectada a internet a través de un router. El firewall debe
colocarse entre el router (con un único cable) y la red local (conectado al switch o al hub de la LAN)

Dependiendo de las necesidades de cada red, puede ponerse uno o más firewalls para establecer distintos perímetros de
seguridad en torno a un sistema. Es frecuente también que se necesite exponer algún servidor a internet (como es el caso

1
IPTABLES manual practico, tutorial de iptables con ejemplos

de un servidor web, un servidor de correo, etc..), y en esos casos obviamente en principio se debe aceptar cualquier
conexión a ellos. Lo que se recomienda en esa situación es situar ese servidor en lugar aparte de la red, el que
denominamos DMZ o zona desmilitarizada. El firewall tiene entonces tres entradas:

Figura 2: esquema de firewall entre red local e internet con zona DMZ para servidores expuestos

En la zona desmilitarizada se pueden poner tantos servidores como se necesiten. Con esta arquitectura, permitimos que el

servidor sea accesible desde internet de tal forma que si es atacado y se gana acceso a él, la red local sigue protegida por
el firewall. Esta estructura de DMZ puede hacerse también con un doble firewall (aunque como se ve se puede usar un
único dispositivo con al menos tres interfaces de red). Sería un esquema como este:

2
IPTABLES manual practico, tutorial de iptables con ejemplos

Figura 3: esquema de firewall entre red local e internet con zona DMZ para servidores expuestos creado con doble
firewall(perímetro)

Los firewalls se pueden usar en cualquier red. Es habitual tenerlos como protección de internet en las empresas, aunque
ahí también suelen tener una doble función: controlar los accesos externos hacia dentro y también los internos hacia el
exterior; esto último se hace con el firewall o frecuentemente con un proxy (que también utilizan reglas, aunque de más
alto nivel).
También, en empresas de hosting con muchos servidores alojados lo normal es encontrarnos uno o más firewalls ya sea
filtrando toda la instalación o parte de ella:

Figura 4: esquema de firewall entre redes, en la que solo se filtra y no se hace NAT

Sea el tipo de firewall que sea, generalmente no tendrá mas que un conjunto de reglas en las que se examina el origen y
destino de los paquetes del protocolo tcp/ip. En cuanto a protocolos es probable que sean capaces de filtrar muchos tipos
de ellos, no solo los tcp, también los udp, los icmp, los gre y otros protocolos vinculados a vpns. Este podría ser (en
pseudo−lenguaje) un el conjunto de reglas de un firewall del primer gráfico:

Politica por defecto ACEPTAR.


Todo lo que venga de la red local al firewall ACEPTAR
Todo lo que venga de la ip de mi casa al puerto tcp 22 ACEPTAR
Todo lo que venga de la ip de casa del jefe al puerto tcp 1723 ACEPTAR
Todo lo que venga de hora.rediris.es al puerto udo 123 ACEPTAR
Todo lo que venga de la red local y vaya al exterior ENMASCARAR
Todo lo que venga del exterior al puerto tcp 1 al 1024 DENEGAR

3
IPTABLES manual practico, tutorial de iptables con ejemplos

Todo lo que venga del exterior al puerto tcp 3389 DENEGAR


Todo lo que venga del exterior al puerto udp 1 al 1024 DENEGAR

En definitiva lo que se hace es:


− Habilita el acceso a puertos de administración a determinadas IPs privilegiadas
− Enmascara el trafico de la red local hacia el exterior (NAT, una petición de un pc de la LAN sale al exterior con la ip
pública), para poder salir a internet
− Deniega el acceso desde el exterior a puertos de administración y a todo lo que este entre 1 y 1024.

Hay dos maneras de implementar un firewall:


1) Política por defecto ACEPTAR: en principio todo lo que entra y sale por el firewall se acepta y solo se denegará
loque se diga explícitamente.
2) Política por defecto DENEGAR: todo esta denegado, y solo se permitirá pasar por el firewall aquellos que se
permitaexplícitamente.

Como es obvio imaginar, la primera política facilita mucho la gestión del firewall, ya que simplemente nos tenemos que
preocupar de proteger aquellos puertos o direcciones que sabemos que nos interesa; el resto no importa tanto y se deja
pasar. Por ejemplo, si queremos proteger una máquina linux, podemos hacer un netstat −ln (o netstat −an, o netstat −puta
| grep LISTEN), saber que puertos están abiertos, poner reglas para proteger esos puertos y ya está. ¿Para qué vamos a
proteger un puerto que realmente nunca se va a abrir?
El único problema que podemos tener es que no controlemos que es lo que esta abierto, o que en un momento dado se
instale un software nuevo que abra un puerto determinado, o que no sepamos que determinados paquetes ICMP son
peligrosos. Si la política por defecto es ACEPTAR y no se protege explícitamente, nos la estamos jugando un poco.

En cambio, si la política por defecto es DENEGAR, a no ser que lo permitamos explícitamente, el firewall se convierte
en un auténtico MURO infranqueable. El problema es que es mucho más difícil preparar un firewall así, y hay que tener
muy claro como funciona el sistema (sea iptables o el que sea) y que es lo que se tiene que abrir sin caer en la tentación
de empezar a meter reglas super−permisivas.
Esta configuración de firewall es la recomendada, aunque no es aconsejable usarla si no se domina mínimamente el
sistema. Uno de los objetos principales de este documento es mostrar la forma de crear este tipo de firewalls.

IMPORTANTE
El orden en el que se ponen las reglas de firewall es determinante. Normalmente cuando hay que decidir que se hace con
un paquete se va comparando con cada regla del firewall hasta que se encuentra una que le afecta (match), y se hace lo
que dicte esta regla (aceptar o denegar); después de eso NO SE MIRARÁN MÁS REGLAS para ese paquete. ¿Cuál es el
peligro? Si ponemos reglas muy permisivas entre las primeras del firewall, puede que las siguientes no se apliquen y no
sirvan de nada.

2. Qué es iptables

IPtables es un sistema de firewall vinculado al kernel de linux que se ha extendido enormemente a partir del kernel 2.4
de este sistema operativo. Al igual que el anterior sistema ipchains, un firewall de iptables no es como un servidor que lo
iniciamos o detenemos o que se pueda caer por un error de programación(esto es una pequeña mentira, ha tenido alguna
vulnerabilidad que permite DoS, pero nunca tendrá tanto peligro como las aplicaciones que escuchan en determinado
puerto TCP): iptables esta integrado con el kernel, es parte del sistema operativo. ¿Cómo se pone en marcha? Realmente
lo que se hace es aplicar reglas. Para ellos se ejecuta el comando iptables, con el que añadimos, borramos, o creamos
reglas. Por ello un firewall de iptables no es sino un simple script de shell en el que se van ejecutando las reglas de
firewall.

Notas: bueno, para los más geeks y tocapelotas. Vale, se puede implementar un script de inicio en /etc/rc.d/INIT.d (o
/etc/INIT.d ) con el que hagamos que iptables se "inicie o pare" como un servidor más. Lo podemos hacer nosotros o es

4
IPTABLES manual practico, tutorial de iptables con ejemplos

probable que venga en la distribución (como en redhat por ejemplo). También se pueden salvar las reglas aplicadas con
el comando iptables−save en un fichero y gestionar ese fichero con una aplicación o front−end desde la X o desde
webmin.

Vale, tenemos una máquina linux con soporte para iptables, tiene reglas aplicadas y empiezan a llegar/salir/pasar
paquetes. No nos liemos: olvidemos cuantas tarjetas de red hay, que direcciones ip tiene la máquina y olvidemos si el
paquete entra o sale. Las reglas de firewall están a nivel de kernel, y al kernel lo que le llega es un paquete (digamos, un
marrón ;) ) y tiene que decidir que hacer con él. El kernel lo que hace es, dependiendo si el paquete es para la propia
maquina o para otra maquina, consultar las reglas de firewall y decidir que hacer con el paquete según mande el firewall.
Este es el camino que seguiría un paquete en el kernel:

Figura 5: cuando un paquete u otra comunicación llega al kernel con iptables se sigue este camino

Como se ve en el gráfico, básicamente se mira si el paquete esta destinado a la propia maquina o si va a otra. Para los
paquetes (o datagramas, según el protocolo) que van a la propia maquina se aplican las reglas INPUT y OUTPUT, y para
filtrar paquetes que van a otras redes o maquinas se aplican simplemente reglas FORWARD.
INPUT,OUTPUT y FORWARD son los tres tipos de reglas de filtrado. Pero antes de aplicar esas reglas es posible
aplicar reglas de NAT: estas se usan para hacer redirecciones de puertos o cambios en las IPs de origen y destino.
Veremos ejemplos.
E incluso antes de las reglas de NAT se pueden meter reglas de tipo MANGLE, destinadas a modificar los paquetes; son
reglas poco conocidas y es probable que no las usen.
Por tanto tenemos tres tipos de reglas en iptables:
− MANGLE
− NAT: reglas PREROUTING, POSTROUTING
− FILTER: reglas INPUT, OUTPUT, FORWARD.

3. Al grano: creando un firewall con iptables

En este tutorial se ha intentado dar una breve introducción sobre lo que es un firewall, sus tipologías básicas y en
concreto se presenta el sistema iptables. Pero vamos al grano y empezamos a ver configuraciones de firewall con
iptables, empezando desde la más básica a las más complejas, en las que se establece la denegación como política por
defecto.

Nota: se recomienda encarecidamente ir practicando estas reglas en alguna maquina linux disponible, y especialmente
hacer uso de la herramienta iptraf para depurar y comprobar el funcionamiento de iptables. Con iptraf podemos
comprobar si las conexiones TCP/IP se llegan a establecer o no. Una conexión tcp/ip empieza con el
three−way−handshake:

5
IPTABLES manual practico, tutorial de iptables con ejemplos

− La maquina que desea conectarse a otra envia un paquete con flan SYN
− Si la otra maquina acepta, envia un SYN/ACK − Entonces la máquina
establece la conexión.

Si el firewall esta denegando la conexión, con iptraf veremos que la maquina origen solo manda paquetes con el flan S
(de SYN), y que del otro lado no sale nada. Saber usar iptraf nos ayudará mucho.

3.1 Proteger la propia máquina


Muy bien, tenemos una máquina linux pinchada en internet y queremos protegerla con su propio firewall. Lo único que
tenemos que hacer es crear un script de shell en el que se van aplicando las reglas. Los scripts de iptables pueden tener
este aspecto:
Saludo a la afición (echo)
Borrado de las reglas aplicadas actualmente (flush)
Aplicación de políticas por defecto para INPUT, OUPUT, FORWARD
Listado de reglas iptables.

Ojo con el orden de las reglas!

#!/bin/sh
## SCRIPT de IPTABLES − ejemplo del manual de iptables
## Ejemplo de script para proteger la propia máquina
## Pello Xabier Altadill Izura ##
www.pello.info − pello@pello.info
echo −n Aplicando Reglas de Firewall...

## 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

## Empezamos a filtrar

# El localhost se deja (por ejemplo conexiones locales a mysql)


/sbin/iptables −A INPUT −i lo −j ACCEPT

# A nuestra IP le dejamos todo iptables −A


INPUT −s 195.65.34.234 −j ACCEPT

# A un colega le dejamos entrar al mysql para que mantenga la BBDD


iptables −A INPUT −s 231.45.134.23 −p tcp −−dport 3306 −j ACCEPT

# A un diseñador le dejamos usar el FTP


iptables −A INPUT −s 80.37.45.194 −p tcp −dport 20:21 −j ACCEPT

6
IPTABLES manual practico, tutorial de iptables con ejemplos

# El puerto 80 de www debe estar abierto, es un servidor web.


iptables −A INPUT −p tcp −−dport 80 −j ACCEPT

# Y el resto, lo cerramos
iptables −A INPUT −p tcp −−dport 20:21 −j DROP iptables
−A INPUT −p tcp −−dport 3306 −j DROP iptables −A INPUT
−p tcp −−dport 22 −j DROP iptables −A INPUT −p tcp
−−dport 10000 −j DROP echo " OK . Verifique que lo que se
aplica con: iptables −L −n"

# Fin del script


Nota para freaks y geeks: siiii, que ya lo se, se puede mejorar este script usando variables, se puede poner el comando
con el path completo, pero limítense a hacer copy−paste. Para el resto de mortales, no olvidarse de ponerle flags de
ejecución: chmod +x firewall1.sh o chmod 750 firewall1.sh

En fin, ya se ve, un script de los más simple, con unas pocas reglas con las que cerramos puertos al público a los que no
tienen porque tener acceso, salvo el 80. Pero cualquiera con algo de ojo se habrá dado cuenta de que ni se filtra el UDP
ni el ICMP. Apostaría cualquier cosa a que el sistema tiene algún puerto udp abierto, y además peligroso como el SNMP.
Como he dicho anteriormente, en este tipo de firewall es recordable hacer un netstat para ver que puertos están en estado
de escucha (abiertos), y salve que un rootkit nos haya modificado los binarios, netstat nos dará la información precisa
que necesitamos. Hay gente que se decanta por hacerse un nmap así mismos. Cuidado: dependiendo de cómo lo
ejecutemos quizá no nos muestre todos los puertos, ya que suele mirar los bien conocidos.
Imaginemos que hemos dado un repaso a nuestro sistema, y ahora si que tenemos mejor identificados los puertos tcp y
udp abiertos. Pero por si acaso nos curamos en salud y al final del script cerraremos el rango de puertos del 1 al 1024, los
reservados tanto para tcp como udp.

#!/bin/sh
## SCRIPT de IPTABLES − ejemplo del manual de iptables
## Ejemplo de script para proteger la propia máquina
## Pello Xabier Altadill Izura ##
www.pello.info − pello@pello.info
echo −n Aplicando Reglas de Firewall...

## 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

## Empezamos a filtrar

# El localhost se deja (por ejemplo conexiones locales a mysql)


/sbin/iptables −A INPUT −i lo −j ACCEPT

# A nuestra IP le dejamos todo


iptables −A INPUT −s 195.65.34.234 −j ACCEPT

7
IPTABLES manual practico, tutorial de iptables con ejemplos

# A un colega le dejamos entrar al mysql para que mantenga la BBDD


iptables −A INPUT −s 231.45.134.23 −p tcp −−dport 3306 −j ACCEPT

# A un diseñador le dejamos usar el FTP


iptables −A INPUT −s 80.37.45.194 −p tcp −dport 20:21 −j ACCEPT

# El puerto 80 de www debe estar abierto, es un servidor web.


iptables −A INPUT −p tcp −−dport 80 −j ACCEPT

# Cerramos rango de los puertos privilegiados. Cuidado con este tipo de


# barreras, antes hay que abrir a los que si tienen acceso.
iptables −A INPUT −p tcp −−dport 1:1024
iptables −A INPUT −p udp −−dport 1:1024

# Cerramos otros puertos que estan abiertos iptables −A


INPUT −p tcp −−dport 3306 −j DROP iptables −A INPUT −p
tcp −−dport 10000 −j DROP iptables −A INPUT −p udp
−−dport 10000 −j DROP echo " OK . Verifique que lo que se
aplica con: iptables −L −n"

# Fin del script

¿Sencillo, no? Ahora basta con hacer copy−paste de estas reglas y aplicarlas y ajustarlas en su sistema (quizás uses
PostgreSQL). Si tiene miedo de perder el control de una máquina remota, pruebe el script en una máquina local y
asegúrese de que aplica lo que usted quiere. Funcionar va a funcionar seguro.

3.2 Firewall de una LAN con salida a internet


Ahora vamos a ver una configuración de firewall iptables para el típico caso de red local que necesita salida a internet.

Figura 6: esquema de firewall típico entre red local e internet

¿Qué es lo que hace falta? Obviamente, una regla que haga NAT hacia fuera (enmascaramiento en iptables), con lo que
se haría dos veces NAT en el firewall y en el router. Entre el router y el firewall lo normal es que haya una red privada
(192.168.1.1 y 192.168.1.2 por ejemplo), aunque dependiendo de las necesidades puede que los dos tengan IP pública. El
router se supone que hace un NAT completo hacia dentro (quizá salvo puerto 23), o sea que desde el exterior no se llega
al router si no que de forma transparente se "choca" contra el firewall. Lo normal en este tipo de firewalls es poner la
política por defecto de FORWARD en denegar (DROP), pero eso lo vemos más adelante. Veamos como sería este
firewall−gateway:

#!/bin/sh
## SCRIPT de IPTABLES − ejemplo del manual de iptables
## Ejemplo de script para firewall entre red−local e internet
##

8
IPTABLES manual practico, tutorial de iptables con ejemplos

## Pello Xabier Altadill Izura ##


www.pello.info − pello@pello.info
echo −n Aplicando Reglas de Firewall...

## 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

## Empezamos a filtrar
## Nota: eth0 es el interfaz conectado al router y eth1 a la LAN
# El localhost se deja (por ejemplo conexiones locales a mysql)
/sbin/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

# Ahora hacemos enmascaramiento de la red local


# y activamos el BIT DE FORWARDING (imprescindible!!!!!)
iptables −t nat −A POSTROUTING −s 192.168.10.0/24 −o eth0 −j MASQUERADE

# Con esto permitimos hacer forward de paquetes en el firewall, o sea


# que otras máquinas puedan salir a traves del firewall.
echo 1 > /proc/sys/net/ipv4/ip_forward

## Y ahora cerramos los accesos indeseados del exterior:


# Nota: 0.0.0.0/0 significa: cualquier red

# Cerramos el rango de puerto bien conocido


iptables −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

# Cerramos un puerto de gestión: webmin


iptables −A INPUT −s 0.0.0.0/0 −p tcp −dport 10000 −j DROP

echo " OK . Verifique que lo que se aplica con: iptables −L −n"

# Fin del script

Pero como somos muy malvados queremos que los empleados solamente puedan navegar por internet, denegando el
acceso a Kazaa o edonkey. Esta sería una configuración simple pero efectiva.

#!/bin/sh
## SCRIPT de IPTABLES − ejemplo del manual de iptables
## Ejemplo de script para firewall entre red−local e internet
## con filtro para que solo se pueda navegar.

9
IPTABLES manual practico, tutorial de iptables con ejemplos

## Pello Xabier Altadill Izura ##


www.pello.info − pello@pello.info
echo −n Aplicando Reglas de Firewall...

## 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

## Empezamos a filtrar
## Nota: eth0 es el interfaz conectado al router y eth1 a la LAN
# El localhost se deja (por ejemplo conexiones locales a mysql)
/sbin/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

## Ahora con regla FORWARD filtramos el acceso de la red local


## al exterior. Como se explica antes, a los paquetes que no van dirigidos al
## propio firewall se les aplican reglas de FORWARD

# Aceptamos que vayan a puertos 80


iptables −A FORWARD −s 192.168.10.0/24 −i eth1 −p tcp −−dport 80 −j ACCEPT
# Aceptamos que vayan a puertos https
iptables −A FORWARD −s 192.168.10.0/24 −i eth1 −p tcp −−dport 443 −j ACCEPT

# Aceptamos que consulten los DNS


iptables −A FORWARD −s 192.168.10.0/24 −i eth1 −p tcp −−dport 53 −j ACCEPT
iptables −A FORWARD −s 192.168.10.0/24 −i eth1 −p udp −−dport 53 −j ACCEPT

# Y denegamos el resto. Si se necesita alguno, ya avisaran


iptables −A FORWARD −s 192.168.10.0/24 −i eth1 −j DROP

# Ahora hacemos enmascaramiento de la red local


# y activamos el BIT DE FORWARDING (imprescindible!!!!!)
iptables −t nat −A POSTROUTING −s 192.168.10.0/24 −o eth0 −j MASQUERADE

# Con esto permitimos hacer forward de paquetes en el firewall, o sea


# que otras máquinas puedan salir a traves del firewall.
echo 1 > /proc/sys/net/ipv4/ip_forward

## Y ahora cerramos los accesos indeseados del exterior:


# Nota: 0.0.0.0/0 significa: cualquier red

# Cerramos el rango de puerto bien conocido


iptables −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

10
IPTABLES manual practico, tutorial de iptables con ejemplos

# Cerramos un puerto de gestión: webmin


iptables −A INPUT −s 0.0.0.0/0 −p tcp −dport 10000 −j DROP

echo " OK . Verifique que lo que se aplica con: iptables −L −n"

# Fin del script

Supongamos que este firewall tiene alguna función adicional: es un servidor proxy y además es un servidor de correo.
Darle funcionalidades de este tipo a un firewall no es recomendable, porque si no se protegen bien esos puertos o si no
está actualizado el software pueden entrar en el firewall a base de xploits comprometiendo TODA la red local. De todas
formas muchas empresas no se pueden permitir o no quieren tener una máquina para cada cosa, bastante les cuesta a
muchas poner un firewall. Por tanto: si se añaden servicios que deben estar abiertos al público en el propio firewall, nos
la estamos jugando, y se recomienda pasar el servicio a otra máquina y ponerla en la DMZ.
Supongamos también que la empresa tiene comerciales en ruta y que se conectan a internet desde su portátil y con una ip
dinámica. Supongamos también que el jefe de la empresa quiere acceder a la red local desde casa con una conexión
ADSL. Ahora en el firewall debieramos tener instalado un servidor SMTP, pop3, y un PPTPD.

#!/bin/sh
## SCRIPT de IPTABLES − ejemplo del manual de iptables
## Ejemplo de script para firewall entre red−local e internet
## con servicios abiertos de puerto 25, 110, y 1723
## Pello Xabier Altadill Izura ##
www.pello.info − pello@pello.info
echo −n Aplicando Reglas de Firewall...

## 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

## Empezamos a filtrar
## Nota: eth0 es el interfaz conectado al router y eth1 a la LAN
# El localhost se deja (por ejemplo 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

## Abrimos el acceso a puertos de correo

# Abrimos el puerto 25, hay que configurar bien el relay del servidor SMTP
iptables −A INPUT −s 0.0.0.0/0 −p tcp −−dport 25 −j ACCEPT
# Abrimos el pop3
iptables −A INPUT −s 0.0.0.0/0 −p tcp −−dport 110 −j ACCEPT

# Y abrimos el puerto pptpd para la ip del adsl de casa del jefe iptables
−A INPUT −s 211.45.176.24 −p tcp −−dport 1723 −j ACCEPT

11
IPTABLES manual practico, tutorial de iptables con ejemplos

## Ahora con regla FORWARD filtramos el acceso de la red local


## al exterior. Como se explica antes, a los paquetes que no van dirigidos al
## propio firewall se les aplican reglas de FORWARD

# Aceptamos que vayan a puertos 80


iptables −A FORWARD −s 192.168.10.0/24 −i eth1 −p tcp −−dport 80 −j ACCEPT
# Aceptamos que vayan a puertos https
iptables −A FORWARD −s 192.168.10.0/24 −i eth1 −p tcp −−dport 443 −j ACCEPT

# Aceptamos que consulten los DNS


iptables −A FORWARD −s 192.168.10.0/24 −i eth1 −p tcp −−dport 53 −j ACCEPT
iptables −A FORWARD −s 192.168.10.0/24 −i eth1 −p udp −−dport 53 −j ACCEPT # Y
denegamos el resto. Si se necesita alguno, ya avisaran iptables −A FORWARD −s
192.168.10.0/24 −i eth1 −j DROP

# Ahora hacemos enmascaramiento de la red local


# y activamos el BIT DE FORWARDING (imprescindible!!!!!)
iptables −t nat −A POSTROUTING −s 192.168.10.0/24 −o eth0 −j MASQUERADE

# Con esto permitimos hacer forward de paquetes en el firewall, o sea


# que otras máquinas puedan salir a traves del firewall.
echo 1 > /proc/sys/net/ipv4/ip_forward

## Y ahora cerramos los accesos indeseados del exterior:


# Nota: 0.0.0.0/0 significa: cualquier red

# Cerramos el rango de puerto bien conocido


iptables −A INPUT −s 0.0.0.0/0 −i eth0 −p tcp −dport 1:1024 −j DROP
iptables −A INPUT −s 0.0.0.0/0 −i eth0 −p udp −dport 1:1024 −j DROP

# Cerramos un puerto de gestión: webmin


iptables −A INPUT −s 0.0.0.0/0 −i eth0 −p tcp −−dport 10000 −j DROP

# Y cerramos el puerto del servicio PPTPD, solo abierto para el jefe.


iptables −A INPUT −s 0.0.0.0/0 −i eth0 −p tcp −−dport 1723 −j DROP
echo " OK . Verifique que lo que se aplica con: iptables −L −n"

# Fin del script

¡Más difícil todavía!


Ahora queremos compartir algún servicio pero de un servidor que tenemos dentro de la red local, por ejemplo el IIS de
un servidor windows2000, y además permitir la gestión remota por terminal server para esta máquina para una empresa
externa. En este caso lo que hay que hacer es un redirección de puerto. Antes de iptables esto se podía hacer fácilmente
con un servidor como rinet. Rinet lo que hace es simplemente abrir un puerto en el firewall y al conectarse a él te lleva
hasta el puerto de otra máquina, como una tubería. Con Iptables podemos hacer redirecciones con una ventaja: no
perdemos la información de IP origen, cosa que con rinet sí ocurría. En fin, veamos la configuración, con las nuevas
reglas de DNAT:

#!/bin/sh
## SCRIPT de IPTABLES − ejemplo del manual de iptables
## Ejemplo de script para firewall entre red−local e internet
## con servicios abiertos de puerto 25, 110, y 1723

12
IPTABLES manual practico, tutorial de iptables con ejemplos

## Pello Xabier Altadill Izura ##


www.pello.info − pello@pello.info
echo −n Aplicando Reglas de Firewall...

## 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

## Empezamos a filtrar

## REDIRECCIONES

# Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos


# a una maquina interna
iptables −t nat −A PREROUTING −i eth0 −p tcp −−dport 80 −j DNAT −−to 192.168.10.12:80

# Los accesos de un ip determinada a Terminal server se redirigen e esa


# maquina
iptables −t nat −A PREROUTING −s 221.23.124.181 −i eth0 −p tcp −−dport 3389 −j DNAT −−to 192.168.10.12:3389

## Nota: eth0 es el interfaz conectado al router y eth1 a la LAN


# El localhost se deja (por ejemplo 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

## Abrimos el acceso a puertos de correo

# Abrimos el puerto 25, hay que configurar bien el relay del servidor SMTP
iptables −A INPUT −s 0.0.0.0/0 −p tcp −−dport 25 −j ACCEPT
# Abrimos el pop3
iptables −A INPUT −s 0.0.0.0/0 −p tcp −−dport 110 −j ACCEPT

# Y abrimos el puerto pptpd para la ip del adsl de casa del jefe iptables
−A INPUT −s 211.45.176.24 −p tcp −−dport 1723 −j ACCEPT

## Ahora con regla FORWARD filtramos el acceso de la red local


## al exterior. Como se explica antes, a los paquetes que no van dirigidos al
## propio firewall se les aplican reglas de FORWARD

# Aceptamos que vayan a puertos 80


iptables −A FORWARD −s 192.168.10.0/24 −i eth1 −p tcp −−dport 80 −j ACCEPT
# Aceptamos que vayan a puertos https

13
IPTABLES manual practico, tutorial de iptables con ejemplos

iptables −A FORWARD −s 192.168.10.0/24 −i eth1 −p tcp −−dport 443 −j ACCEPT

# Aceptamos que consulten los DNS


iptables −A FORWARD −s 192.168.10.0/24 −i eth1 −p tcp −−dport 53 −j ACCEPT
iptables −A FORWARD −s 192.168.10.0/24 −i eth1 −p udp −−dport 53 −j ACCEPT

# Y denegamos el resto. Si se necesita alguno, ya avisaran


iptables −A FORWARD −s 192.168.10.0/24 −i eth1 −j DROP

# Ahora hacemos enmascaramiento de la red local


# y activamos el BIT DE FORWARDING (imprescindible!!!!!)
iptables −t nat −A POSTROUTING −s 192.168.10.0/24 −o eth0 −j MASQUERADE

# Con esto permitimos hacer forward de paquetes en el firewall, o sea


# que otras máquinas puedan salir a traves del firewall.
echo 1 > /proc/sys/net/ipv4/ip_forward

## Y ahora cerramos los accesos indeseados del exterior:


# Nota: 0.0.0.0/0 significa: cualquier red

# Cerramos el rango de puerto bien conocido


iptables −A INPUT −s 0.0.0.0/0 −i eth0 −p tcp −dport 1:1024 −j DROP
iptables −A INPUT −s 0.0.0.0/0 −i eth0 −p udp −dport 1:1024 −j DROP

# Cerramos un puerto de gestión: webmin


iptables −A INPUT −s 0.0.0.0/0 −i eth0 −p tcp −−dport 10000 −j DROP

# Y cerramos el puerto del servicio PPTPD, solo abierto para el jefe.


iptables −A INPUT −s 0.0.0.0/0 −i eth0 −p tcp −−dport 1723 −j DROP
echo " OK . Verifique que lo que se aplica con: iptables −L −n"

# Fin del script

Bueno ya tenemos montada la red, pero conviene insistir en que esta última configuración, con las redirecciones y los
servicios de correo funcionando en el firewall es bastante insegura. ¿Qué ocurre si hackean el servidor IIS de la red
local? Pues que el firewall no sirve de gran cosa, lo poco que podría hacer una vez se ha entrado en la red local es evitar
escaneos hacia el exterior desde la máquina atacada, aunque para ello el firewall debiera tener una buena configuración
con denegación por defecto. Si necesitamos ese servidor IIS, basta con comprar una tarjeta de red por 6 o dolares y crear
una DMZ.

3.3 Firewall de una LAN con salida a internet con DMZ

Bueno, esto se va complicando. Imaginemos que tenemos una red parecida a la anterior pero ahora hacemos las cosas
bien y colocamos ese servidor IIS en una DMZ:

14
IPTABLES manual practico, tutorial de iptables con ejemplos

Figura 7: esquema de firewall entre red local e internet con zona DMZ para servidores expuestos

En este tipo de firewall hay que permitir:


− Acceso de la red local a internet.
− Acceso público al puerto tcp/80 y tcp/443 del servidor de la DMZ
− Acceso del servidor de la DMZ a una BBDD de la LAN
− Obviamente bloquear el resto de acceso de la DMZ hacia la LAN.
¿Qué tipo de reglas son las que hay que usar para filtrar el tráfico entre la DMZ y la LAN? Solo pueden ser las
FORWARD, ya que estamos filtrando entre distintas redes, no son paquetes destinados al propio firewall. #!/bin/sh
## SCRIPT de IPTABLES − ejemplo del manual de iptables
## Ejemplo de script para firewall entre red−local e internet con DMZ
##
## Pello Xabier Altadill Izura ##
www.pello.info − pello@pello.info
echo −n Aplicando Reglas de Firewall...

## 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

## Empezamos a filtrar
## Nota: eth0 es el interfaz conectado al router y eth1 a la LAN
# Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos
# a una maquina interna
iptables −t nat −A PREROUTING −i eth0 −p tcp −−dport 80 −j DNAT −−to 192.168.3.2:80

# Los accesos de un ip determinada HTTPS se redirigen e esa


# maquina
iptables −t nat −A PREROUTING −i eth0 −p tcp −−dport 443 −j DNAT −−to 192.168.3.2:443

15
IPTABLES manual practico, tutorial de iptables con ejemplos

# El localhost se deja (por ejemplo conexiones locales a mysql)


/sbin/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

# Ahora hacemos enmascaramiento de la red local y de la DMZ


# para que puedan salir haca fuera
# y activamos el BIT DE FORWARDING (imprescindible!!!!!)
iptables −t nat −A POSTROUTING −s 192.168.10.0/24 −o eth0 −j MASQUERADE
iptables −t nat −A POSTROUTING −s 192.168.3.0/24 −o eth0 −j MASQUERADE

# Con esto permitimos hacer forward de paquetes en el firewall, o sea


# que otras máquinas puedan salir a traves del firewall. echo 1 >
/proc/sys/net/ipv4/ip_forward

## Permitimos el paso de la DMZ a una BBDD de la LAN: iptables −A FORWARD −s


192.168.3.2 −d 192.168.10.5 −p tcp −−dport 5432 −j ACCEPT iptables −A FORWARD −s
192.168.10.5 −d 192.168.3.2 −p tcp −−sport 5432 −j ACCEPT

## permitimos abrir el Terminal server de la DMZ desde la LAN


iptables −A FORWARD −s 192.168.10.0/24 −d 192.168.3.2 −p tcp −−sport 1024:65535 −−dport 3389 −j ACCEPT # …
hay que hacerlo en uno y otro sentido …
iptables −A FORWARD −s 192.168.3.2 −d 192.168.10.0/24 −p tcp −−sport 3389 −−dport 1024:65535 −j ACCEPT

# … por que luego:


# Cerramos el acceso de la DMZ a la LAN
iptables −A FORWARD −s 192.168.3.0/24 −d 192.168.10.0/24 −j DROP

## Cerramos el acceso de la DMZ al propio firewall


iptables −A INPUT −s 192.168.3.0/24 −i eth2 −j DROP

## Y ahora cerramos los accesos indeseados del exterior:


# Nota: 0.0.0.0/0 significa: cualquier red

# Cerramos el rango de puerto bien conocido


iptables −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

# Cerramos un puerto de gestión: webmin


iptables −A INPUT −s 0.0.0.0/0 −p tcp −dport 10000 −j DROP

echo " OK . Verifique que lo que se aplica con: iptables −L −n"

# Fin del script

Vamos a ver: si las máquinas de la DMZ tienen una ip pública hay que tener muchísimo cuidado de no permitir el
FORWARD por defecto. Si en la DMZ hay ip pública NO ES NECESARIO HACER REDIRECCIONES de puerto, sino
que basta con rutar los paquetes para llegar hasta la DMZ. Este tipo de necesidades surgen cuando por ejemplo tenemos
dos máquinas con servidor web (un apache y un IIS); ¿A cuál de las dos le redirigimos el puerto 80? No hay manera de
saberlo (No, con servidores virtuales tampoco, piénsalo), por eso se deben asignar IPs públicas o en su defecto usar
puertos distintos.

16
IPTABLES manual practico, tutorial de iptables con ejemplos

Por tanto hay que proteger convenientemente toda la DMZ. Tampoco haría falta enmascarar la salida hacia el exterior de
la DMZ, si tiene una ip pública ya tiene una pata puesta en internet; obviamente hay que decirle al router como llegar
hasta esa ip pública. Así podría ser esta red:

Figura 8: esquema de firewall entre red local e internet con zona DMZ para servidores expuestos usando IPs públicas
Y este podría ser un firewall adecuado:
#!/bin/sh
## SCRIPT de IPTABLES − ejemplo del manual de iptables
## Ejemplo de script para firewall entre red−local e internet con DMZ
## pero con IPs públicas.
## Pello Xabier Altadill Izura ##
www.pello.info − pello@pello.info
echo −n Aplicando Reglas de Firewall...

## 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

## Empezamos a filtrar
## Nota: eth0 es el interfaz conectado al router y eth1 a la LAN

# El localhost se deja (por ejemplo conexiones locales a mysql)


/sbin/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

# Ahora hacemos enmascaramiento de la red local y de la DMZ


# para que puedan salir haca fuera

17
IPTABLES manual practico, tutorial de iptables con ejemplos

# y activamos el BIT DE FORWARDING (imprescindible!!!!!)


iptables −t nat −A POSTROUTING −s 192.168.10.0/24 −o eth0 −j MASQUERADE

# Con esto permitimos hacer forward de paquetes en el firewall, o sea


# que otras máquinas puedan salir a traves del firewall. echo 1 >
/proc/sys/net/ipv4/ip_forward

## Permitimos el acceso desde el exterior a los puertos 80 y 443 de DMZ


iptables −A FORWARD −d 212.194.89.152 −p tcp −dport 80 −j ACCEPT
iptables −A FORWARD −d 212.194.89.152 −p tcp −dport 443 −j ACCEPT
iptables −A FORWARD −d 212.194.89.150/30 −j DROP

## Permitimos el paso de la DMZ a una BBDD de la LAN: iptables −A FORWARD −s


212.194.89.152 −d 192.168.10.5 −p tcp −−dport 5432 −j ACCEPT

# en el otro sentido lo mismo


iptables −A FORWARD −s 192.168.10.5 −d 212.194.89.152 −p tcp −−sport 5432 −j ACCEPT

## permitimos abrir el Terminal server de la DMZ desde la LAN


iptables −A FORWARD −s 192.168.10.0/24 −d 212.194.89.152 −p tcp −−sport 1024:65535 −−dport 3389 −j ACCEPT #
… hay que hacerlo en uno y otro sentido …
iptables −A FORWARD −s 212.194.89.152 −d 192.168.10.0/24 −p tcp −−sport 3389 −−dport 1024:65535 −j ACCEPT

# … por que luego:


# Cerramos el acceso de la DMZ a la LAN
iptables −A FORWARD −s 212.194.89.152 −d 192.168.10.0/24 −j DROP

## Cerramos el acceso de la DMZ al propio firewall


iptables −A INPUT −s 212.194.89.152 −i eth2 −j DROP

## Y ahora cerramos los accesos indeseados del exterior:


# Nota: 0.0.0.0/0 significa: cualquier red

# Cerramos el rango de puerto bien conocido


iptables −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

# Cerramos un puerto de gestión: webmin


iptables −A INPUT −s 0.0.0.0/0 −p tcp −dport 10000 −j DROP

echo " OK . Verifique que lo que se aplica con: iptables −L −n"

# Fin del script

ATENCIÓN
Merece la pena pararse a explicar esta parte del firewall:

## permitimos abrir el Terminal server de la DMZ desde la LAN


iptables −A FORWARD −s 192.168.10.0/24 −d 212.194.89.152 −p tcp −sport 1024:65535 −−dport 3389 −j ACCEPT

# … hay que hacerlo en uno y otro sentido …


iptables −A FORWARD −s 212.194.89.152 −d 192.168.10.0/24 −p tcp −−sport 3389 −−dport 1024:65535 −j ACCEPT

# … por que luego:

18
IPTABLES manual practico, tutorial de iptables con ejemplos

# Cerramos el acceso de la DMZ a la LAN iptables −A FORWARD −s


212.194.89.152 −d 192.168.10.0/24 −j DROP

Lo que nos lleva a dos cuestiones:


¿Por qué hay que explicitar la abertura en uno y otro sentido? Porque la tercera regla cierra todo lo que va de la DMZ a la
red local. Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegar hasta la DMZ y
que a su vez pueda volver a la LAN. Esto de tener que especificar la abertura en uno y otro sentido será el pan de cada
día en un iptables con política DROP por defecto: mejor protección pero más trabajo.

¿Por qué se explicita el puerto de origen/destino 1024:65535 en la primera y segunda regla? Imaginemos que un hacker
logra acceso a la máquina de la DMZ. Si no especificamos el puerto de destino en esas dos reglas, el hacker puede abrir
CUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo el tcp/3389, cosa fácil para un
hacker que sepa algo de C o que tenga el programa pertinente a mano. De todas formas el hacker tendría que saber que
existe ese tipo de reglas, si es listo probara con puertos de gestión o con puertos netbios. El problema es que se deja un
vínculo con la LAN bien para administrarlo remotamente o para establecer relaciones de confianza y ahí es donde reside
el peligro.

En las conexiones "legales" no se usa como puerto origen nada por debajo del 1024; cuando alguien se conecta a otro
puerto en su extremo abre un puerto por encima del 1024. Especificándolo en la regla de firewall protegeremos un poco
mejor la LAN, aunque los puertos por encima de 1024 estarán en peligro.

3.4 Firewall puro y duro entre redes

En este caso olvidémonos de redes locales y de NAT. Aquí solo tendremos reglas de filtrado INPUT y FORWARD.
Pongamos que tenemos el siguiente escenario:

19
IPTABLES manual practico, tutorial de iptables con ejemplos

Figura 9: esquema de firewall entre redes, en la que solo se filtra y no se hace NAT

En el firewall debemos indicar una serie de reglas para proteger los equipos que están al otro lado de este dispositivo,
todos ellos de la red 211.34.149.0/24
Cada uno de ellos da un servicio determinado, y puede estar gestionado desde distintas IPs, lo que significa que habrá
que dar acceso a determinados puertos de gestión (22, 3389, etc..). Este podría ser el aspecto del script del firewall:

#!/bin/sh
## SCRIPT de IPTABLES − ejemplo del manual de iptables
## Ejemplo de script para firewall entre redes.
## Pello Xabier Altadill Izura ##
www.pello.info − pello@pello.info
echo −n Aplicando Reglas de Firewall...

## 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

## Empezamos a filtrar
## Nota: eth0 es el interfaz conectado al router y eth1 a la LAN

# A nuestro firewall tenemos acceso total desde la nuestra IP


iptables −A INPUT −s 210.195.55.15 −j ACCEPT

# Para el resto no hay acceso al firewall


iptables −A INPUT −s 0.0.0.0/0 −j DROP

## Ahora podemos ir metiendo las reglas para cada servidor


## Como serán paquetes con destino a otras máquinas se aplica FORWARD

## Servidor WEB 211.34.149.2


# Acceso a puerto 80
iptables −A FORWARD −d 211.34.149.2 −p tcp −−dport 80 −j ACCEPT

# Acceso a nuestra ip para gestionarlo


iptables −A FORWARD −s 210.195.55.15 −d 211.34.149.2 −p tcp −−dport 22 −j ACCEPT

# El resto, cerrar
iptables −A FORWARD −d 211.34.149.2 −j DROP

## Servidor MAIL 211.34.149.3


# Acceso a puerto 25, 110 y 143
iptables −A FORWARD −d 211.34.149.3 −p tcp −−dport 25 −j ACCEPT
iptables −A FORWARD −d 211.34.149.3 −p tcp −−dport 110 −j ACCEPT
iptables −A FORWARD −d 211.34.149.3 −p tcp −−dport 143 −j ACCEPT

# Acceso a gestion SNMP


iptables −A FORWARD −s 210.195.55.15 −d 211.34.149.3 −p udp −−dport 169 −j ACCEPT

20
IPTABLES manual practico, tutorial de iptables con ejemplos

# Acceso a nuestra ip para gestionarlo


iptables −A FORWARD −s 210.195.55.15 −d 211.34.149.3 −p tcp −−dport 22 −j ACCEPT

# El resto, cerrar
iptables −A FORWARD −d 211.34.149.3 −j DROP

## Servidor IRC 211.34.149.4


# Acceso a puertos IRC
iptables −A FORWARD −d 211.34.149.4 −p tcp −−dport 6666:6668 −j ACCEPT

# Acceso a nuestra ip para gestionarlo


iptables −A FORWARD −s 210.195.55.15 −d 211.34.149.4 −p tcp −−dport 22 −j ACCEPT

# El resto, cerrar
iptables −A FORWARD −d 211.34.149.4 −j DROP

## Servidor NEWS 211.34.149.5


# Acceso a puerto news
iptables −A FORWARD −d 211.34.149.5 −p tcp −−dport news −j ACCEPT

# Acceso a nuestra ip para gestionarlo


iptables −A FORWARD −s 213.194.68.115 −d 211.34.149.5 −p tcp −−dport 22 −j ACCEPT

# El resto, cerrar
iptables −A FORWARD −d 211.34.149.5 −j DROP

## Servidor B2B 211.34.149.6


# Acceso a puerto 443
iptables −A FORWARD −d 211.34.149.6 −p tcp −−dport 443 −j ACCEPT

# Acceso a una ip para gestionarlo


iptables −A FORWARD −s 81.34.129.56 −d 211.34.149.6 −p tcp −−dport 3389 −j ACCEPT

# El resto, cerrar
iptables −A FORWARD −d 211.34.149.6 −j DROP

## Servidor CITRIX 211.34.149.7


# Acceso a puerto 1494
iptables −A FORWARD −d 211.34.149.7 −p tcp −−dport 1494 −j ACCEPT

# Acceso a una ip para gestionarlo


iptables −A FORWARD −s 195.55.234.2 −d 211.34.149.7 −p tcp −−dport 3389 −j ACCEPT

# acceso a otro puerto quiza de BBDD


iptables −A FORWARD −s 195.55.234.2 −d 211.34.149.7 −p tcp −−dport 1434 −j ACCEPT

# acceso a otro puerto quiza de BBDD


iptables −A FORWARD −s 195.55.234.2 −d 211.34.149.7 −p udp −−dport 1433 −j ACCEPT

# El resto, cerrar

21
IPTABLES manual practico, tutorial de iptables con ejemplos

iptables −A FORWARD −d 211.34.149.7 −j DROP echo " OK

. Verifique que lo que se aplica con: iptables −L −n"

# Fin del script

Con esta firewall y sobretodo gracias a las reglas de DROP que metemos tras especificar lo que dejamos abiertos,
protegeremos de manera eficaz todos lo puertos abiertos de las máquinas.

3.5 Firewall con política por defecto DROP

Aquí llega la sección para los auténticos administradores de pelo en pecho.


¿Qué supone el hecho de establecer como política por defecto la denegación?
" Se debe explicitar cada conexión permitida en los dos sentidos.
" Se debe conocer perfectamente qué debe estar abierto y qué no.
" Es muchos más difícil de mantener y si se hace conviene hacerlo desde el principio.
" No todo es más trabajo: también supone un firewall mucho más seguro.
En el ejemplo de la DMZ ya se presentaba esta situación en las reglas forward de una a otra red. Para ilustrar el DROP
por defecto, vamos a mostrar la configuración del ejemplo anterior de firewall entre redes pero con política por defecto
DROP.

#!/bin/sh
## SCRIPT de IPTABLES − ejemplo del manual de iptables
## Ejemplo de script para firewall entre redes con DROP por defecto
## Pello Xabier Altadill Izura ##
www.pello.info − pello@pello.info
echo −n Aplicando Reglas de Firewall...

## FLUSH de reglas
iptables −F iptables
−X iptables −Z
iptables −t nat −F

## Establecemos politica por defecto: DROP!!!


iptables −P INPUT DROP
iptables −P OUTPUT DROP
iptables −P FORWARD DROP

## Empezamos a filtrar
## Nota: eth0 es el interfaz conectado al router y eth1 a la LAN

# A nuestro firewall tenemos acceso total desde la nuestra IP


iptables −A INPUT −s 210.195.55.15 −j ACCEPT iptables
−A OUTPUT −d 210.195.55.15 −j ACCEPT

# Para el resto no hay acceso al firewall


# En principio esta de más, pero si rebajamos los permisos temporalmente
# nos cubre las espaldas
iptables −A INPUT −s 0.0.0.0/0 −j DROP

## Ahora podemos ir metiendo las reglas para cada servidor

22
IPTABLES manual practico, tutorial de iptables con ejemplos

## Como serán paquetes con destino a otras máquinas se aplica FORWARD

## Servidor WEB 211.34.149.2


# Acceso a puerto 80
iptables −A FORWARD −d 211.34.149.2 −p tcp −−dport 80 −j ACCEPT
iptables −A FORWARD −s 211.34.149.2 −p tcp −−sport 80 −j ACCEPT

# Acceso a nuestra ip para gestionarlo


iptables −A FORWARD −s 210.195.55.15 −d 211.34.149.2 −p tcp −−dport 22 −j ACCEPT

iptables −A FORWARD −s 211.34.149.2 −d 210.195.55.15 −p tcp −−sport 22 −j ACCEPT

## Servidor MAIL 211.34.149.3


# Acceso a puerto 25, 110 y 143
iptables −A FORWARD −d 211.34.149.3 −p tcp −−dport 25 −j ACCEPT
iptables −A FORWARD −s 211.34.149.3 −p tcp −−sport 25 −j ACCEPT

iptables −A FORWARD −d 211.34.149.3 −p tcp −−dport 110 −j ACCEPT


iptables −A FORWARD −s 211.34.149.3 −p tcp −−sport 110 −j ACCEPT iptables
−A FORWARD −d 211.34.149.3 −p tcp −−dport 143 −j ACCEPT iptables −A
FORWARD −s 211.34.149.3 −p tcp −−sport 143 −j ACCEPT

# Acceso a gestion SNMP


iptables −A FORWARD −s 210.195.55.15 −d 211.34.149.3 −p udp −−dport 169 −j ACCEPT

iptables −A FORWARD −s 211.34.149.3 −d 210.195.55.15 −p udp −−sport 169 −j ACCEPT

# Acceso a nuestra ip para gestionarlo


iptables −A FORWARD −s 210.195.55.15 −d 211.34.149.3 −p tcp −−dport 22 −j ACCEPT

iptables −A FORWARD −s 211.34.149.3 −d 210.195.55.15 −p tcp −−sport 22 −j ACCEPT

## Servidor IRC 211.34.149.4


# Acceso a puertos IRC
iptables −A FORWARD −d 211.34.149.4 −p tcp −−dport 6666:6668 −j ACCEPT
iptables −A FORWARD −s 211.34.149.4 −p tcp −−sport 6666:6668 −j ACCEPT

# Acceso a nuestra ip para gestionarlo


iptables −A FORWARD −s 210.195.55.15 −d 211.34.149.4 −p tcp −−dport 22 −j ACCEPT

iptables −A FORWARD −s 211.34.149.4 −d 210.195.55.15 −p tcp −−sport 22 −j ACCEPT

## Servidor NEWS 211.34.149.5


# Acceso a puerto news
iptables −A FORWARD −d 211.34.149.5 −p tcp −−dport news −j ACCEPT
iptables −A FORWARD −s 211.34.149.5 −p tcp −−sport news −j ACCEPT

# Acceso a nuestra ip para gestionarlo


iptables −A FORWARD −s 213.194.68.115 −d 211.34.149.5 −p tcp −−dport 22 −j ACCEPT

iptables −A FORWARD −s 211.34.149.5 −d 213.194.68.115 −p tcp −−sport 22 −j ACCEPT

# El resto, cerrar

23
IPTABLES manual practico, tutorial de iptables con ejemplos

iptables −A FORWARD −d 211.34.149.5 −j DROP

## Servidor B2B 211.34.149.6


# Acceso a puerto 443
iptables −A FORWARD −d 211.34.149.6 −p tcp −−dport 443 −j ACCEPT
iptables −A FORWARD −s 211.34.149.6 −p tcp −−sport 443 −j ACCEPT

# Acceso a una ip para gestionarlo


iptables −A FORWARD −s 81.34.129.56 −d 211.34.149.6 −p tcp −−dport 3389 −j ACCEPT

iptables −A FORWARD −s 211.34.149.6 −d 81.34.129.56 −p tcp −−sport 3389 −j ACCEPT

## Servidor CITRIX 211.34.149.7


# Acceso a puerto 1494
iptables −A FORWARD −d 211.34.149.7 −p tcp −−dport 1494 −j ACCEPT
iptables −A FORWARD −s 211.34.149.7 −p tcp −−sport 1494 −j ACCEPT #
Acceso a una ip para gestionarlo
iptables −A FORWARD −s 195.55.234.2 −d 211.34.149.7 −p tcp −−dport 3389 −j ACCEPT

iptables −A FORWARD −s 211.34.149.7 −d 195.55.234.2 −p tcp −−sport 3389 −j ACCEPT

# acceso a otro puerto quiza de BBDD


iptables −A FORWARD −s 195.55.234.2 −d 211.34.149.7 −p tcp −−dport 1434 −j ACCEPT

iptables −A FORWARD −s 211.34.149.7 −d 195.55.234.2 −p tcp −−sport 1434 −j ACCEPT

# acceso a otro puerto quiza de BBDD


iptables −A FORWARD −s 195.55.234.2 −d 211.34.149.7 −p udp −−dport 1433 −j ACCEPT

iptables −A FORWARD −s 211.34.149.7 −d 195.55.234.2 −p udp −−sport 1433 −j ACCEPT

echo " OK . Verifique que lo que se aplica con: iptables −L −n"

# Fin del script

Ya esta, hemos levantado un verdadero muro entre internet y el conjunto de servidores que esta
Tras el firewall. No se puede ni hacer un ping a las máquinas, salvo que se haya dado acceso total a una ip. Si
quisieramos dar acceso al ping, pondríamos algo así:

Es más llevadero aplicar el DROP por defecto cuando el firewall es para la propia máquina. El primer escenario de esta
manual trataba sobre este caso, ahora lo revisamos con la política por defecto drop.

#!/bin/sh
## SCRIPT de IPTABLES − ejemplo del manual de iptables
## Ejemplo de script para proteger la propia máquina
## con política por defecto DROP
## Pello Xabier Altadill Izura ##
www.pello.info − pello@pello.info
echo −n Aplicando Reglas de Firewall...

## FLUSH de reglas
iptables −F iptables

24
IPTABLES manual practico, tutorial de iptables con ejemplos

−X iptables −Z
iptables −t nat −F

## Establecemos politica por defecto


iptables −P INPUT DROP iptables
−P OUTPUT DROP iptables −P
FORWARD DROP

## Empezamos a filtrar

# El localhost se deja (por ejemplo conexiones locales a mysql)


iptables −A INPUT −i lo −j ACCEPT
iptables −A OUTPUT −o lo −j ACCEPT

# A nuestra IP le dejamos todo


iptables −A INPUT −s 195.65.34.234 −j ACCEPT
iptables −A OUTPUT −d 195.65.34.234 −j ACCEPT # A
un colega le dejamos entrar al mysql para que mantenga
la BBDD iptables −A INPUT −s 231.45.134.23 −p tcp
−−dport 3306 −j ACCEPT iptables −A OUTPUT −d
231.45.134.23 −p tcp −−sport 3306 −j ACCEPT

# A un diseñador le dejamos usar el FTP


iptables −A INPUT −s 80.37.45.194 −p tcp −−dport 20:21 −j ACCEPT
iptables −A OUTPUT −d 80.37.45.194 −p tcp −−sport 20:21 −j ACCEPT

# El puerto 80 de www debe estar abierto, es un servidor web.


iptables −A INPUT −p tcp −−dport 80 −j ACCEPT
iptables −A OUTPUT −p tcp −−sport 80 −j ACCEPT

# Aquí están las reglas de cerrar. Como hemos comentado en la configuración


# anterior conviene tener esto escrito por si en algún momento se relaja el
# firewall y s cambia a de DROP a ACCEPT por defecto
# Cerramos rango de los puertos privilegiados. Cuidado con este tipo de
# barreras, antes hay que abrir a los que si tienen acceso.
iptables −A INPUT −p tcp −−dport 1:1024
iptables −A INPUT −p udp −−dport 1:1024

# Cerramos otros puertos que estan abiertos iptables −A


INPUT −p tcp −−dport 3306 −j DROP iptables −A INPUT −p
tcp −−dport 10000 −j DROP iptables −A INPUT −p udp
−−dport 10000 −j DROP echo " OK . Verifique que lo que se
aplica con: iptables −L −n"

# Fin del script

4. Cómo depurar el funcionamiento del firewall

Programas útiles
IPTRAF. Sin duda alguna uno de los programas más prácticos para depurar el firewall es iptables, ya que con el
podemos observar si la conexiones se establecen o no; es un programa de consola que es aconsejable controlar ya que

25
IPTABLES manual practico, tutorial de iptables con ejemplos

muestra en tiempo real el tráfico que atraviesa nuestra máquina con todo lujo de detalles: origen/destino de ips y puertos,
tráfico total o tráfico total según el interfaz de red, etc… Si vemos muchas conexiones simultaneas y nos perdemos,
existe la posibilidad de aplicar filtros para captar solo aquello que nos interesa.

NMAP. La herramienta para escanear puertos por excelencia, rechace imitaciones. Es una herramienta de consola rápida,
efectiva y con multitud de opciones. Podemos usarla desde máquinas ajenas a nuestra red para comprobar si realmente el
firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que "visión" pueden tener los hackers
de nuestro sistema.

SHELL. En el propio script del firewall podemos añadir algunas opciones para descubrir fallos de sintaxis en las reglas.
Claro, imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el script. ¿Cuál es? Es
probable que el mensaje de error no aclare lo suficiente, por eso se puede añadir algo así al final de cada regla:

...
iptables −A INPUT −s 195.55.234.2 −j ACCEPT && echo " regla−21 ok"
iptables −A INPUT −s 213.62.89.145 −j ACCEPT && echo " regla−22 ok"
...

Si la regla se ejecuta bien mostrará el mensajito de ok.


Otra opción algo mas cutre sería ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxis incorrecta.
Cabe reseñar que puede fallar una regla, pero a partir de ella el resto se ejecutan con normalidad.

26
PFC ULPGC – Aplicaciones Criptográficas Java

___________________________________________________________________

2.Introducción a la seguridad

Las necesidades de seguridad de la información han ido evolucionando al igual que las
ciencias de la computación y las tecnologías de la información. De este modo, las herramientas de
seguridad empleadas también lo han hecho.
En sus comienzos, la seguridad consistía en el uso de medios físicos, tales como cajas fuertes
o armarios con cierre de seguridad. Poco después, aparecieron los medios administrativos, como lo
son los contratos de empleados para salvaguardar información confidencial de la empresa.
Con la llegada de la computación, hicieron falta nuevas herramientas de seguridad diseñadas
para proteger los datos y evitar la intrusión de los hackers. Estas herramientas se conocen con el
nombre de “seguridad informática”.
Finalmente, con la aparición de Internet, las redes locales y los sistemas distribuidos, surgió la
necesidad de disponer de seguridad durante la transmisión. Las herramientas que satisfacen estas
nuevas necesidades se engloban bajo la denominación “seguridad en redes”. A continuación se
puede observar la evolución en el tiempo tanto de la seguridad como de la informática.

Ilustración 2: Evolución en el tiempo de la seguridad y la informática

Para mayor información puede consultar los recursos bibliográficos utilizados; a los cuales
también se puede acceder desde http://jcef.sourceforge.net/doc/resources.pdf.

21
PFC ULPGC – Aplicaciones Criptográficas Java

1 Una arquitectura de seguridad

Para analizar de forma efectiva las necesidades de seguridad de una organización, evaluar y
elegir distintos productos y políticas de seguridad, el responsable de la seguridad necesita una forma
sistemática de definir los requisitos de seguridad y caracterizar los enfoques para satisfacer dichos
requisitos.
Uno de estos posibles enfoques interesantes se centra en los ataques a la seguridad, los
mecanismos y los servicios.
Un ataque a la seguridad es cualquier acción que comprometa la seguridad de la información
de una organización. Los ataques a la seguridad se detectan, eliminan, previenen y/o se reestablece
el sistema de su daño, siendo los encargados de estas funciones los mecanismos de seguridad.
Por el contrario, un servicio de seguridad es un servicio que mejora la seguridad de los
sistemas, contrarrestando los ataques a la seguridad, haciendo uso de uno o más mecanismos y
políticas de seguridad con el objetivo de proporcionar el servicio.
En resumen, los componentes de una arquitectura de seguridad junto con sus objetivos son:

Componentes Objetivo
Ataque a la seguridad Comprometer la seguridad de la información de un sistema
Servicio de seguridad Contrarrestar los ataques a la seguridad
Mecanismo de seguridad Ayudar a contrarrestar los ataques a la seguridad
Tabla 2: Componentes de una arquitectura de seguridad y sus objetivos

2 Ataques a la seguridad

Los ataques a la seguridad se pueden clasificar en ataques pasivos y activos. En la siguiente


tabla se muestran cada una de ellos junto con sus objetivos primarios y sus soluciones:

Ataques
Características
Pasivos Activos
¿Acceden a recursos? Sí Sí
¿Obtienen información? Sí Sí
Objetivo
¿Alteran el sistema? No Sí
¿Alteran recursos? No Sí
Tabla 3: Comparativa entre Ataques Pasivos y Activos (1/2)

22
PFC ULPGC – Aplicaciones Criptográficas Java

Ataques
Características
Pasivos Activos
¿Se pueden prevenir? Sí No
Solución ¿Se pueden detectar? No Sí
¿Se pueden recuperar? No Sí
Tabla 4: Comparativa entre Ataques Pasivos y Activos (2/2)

1 Ataques pasivos

De la misma forma, existen varios tipos de ataques pasivos. En la siguiente tabla se muestran
cada uno de ellos junto con sus objetivos básicos:

Ataques Pasivos Objetivos


Obtención de contenidos de mensajes Copiar información
Averiguar la naturaleza de la comunicación
Análisis del Tráfico
Desvelar la identidad de los comunicantes
Tabla 5: Ataques Pasivos y sus Objetivos

También es interesante descatar los otros nombres de estos tipos de ataques:

Ataques Pasivos Alias


Ataques pasivos Ataques de intercepción
Obtención de contenidos de mensajes Intercepción de datos
Análisis del Tráfico Intercepción de entidad
Tabla 6: Otros nombres de los ataques pasivos

23
PFC ULPGC – Aplicaciones Criptográficas Java

En las siguientes ilustraciones se pueden ver cada uno de los diagramas de los ataques pasivos
existentes:

Ilustración 3: Obtención del contenido de mensajes

Un ejemplo de ataque pasivo mediante obtención de contenidos de mensajes podría ser: “Un
usuario A envía un archivo a otro usuario B. El archivo contiene información confidencial que debe
protegerse, por ejemplo los registros de nóminas. Otro usuario C, que no está autorizado a leer el
archivo, observa la transmisión y captura una copia del archivo durante dicha transmisión”.

Ilustración 4: Análisis del tráfico

Para el caso de ataques basado en el análisis del tráfico, el ejemplo sería equivalente al
anterior, excepto que en lugar de analizar el contenido de los paquetes que se transmiten a través de
la red, se observan las cabeceras de cada uno de ellos.

24
PFC ULPGC – Aplicaciones Criptográficas Java

2 Ataques activos

Existen varios tipos de ataques activos, que junto con sus objetivos, se mencionan a
continuación:

Ataques Activos Objetivos


Suplantación de identidad Fingir ser otra entidad
Repetición Retransmitir mensajes
Modificación de mensajes Alterar, retrasar y/o reordenar mensajes
Interrupción del servicio Dejar fuera de servicio algún recurso del sistema
Tabla 7: Ataques Activos y sus objetivos

Igualmente es interesante destacar los otros nombres de estos tipos de ataques:

Ataques activos Alias


Suplantación de identidad Falsificación de identidad
Repetición Reactuación
Modificación de mensajes Alteración de mensajes
Interrupción del servicio Degradación fraudulenta del servicio
Tabla 8: Otros nombres de los ataques activos

A continuación, se pueden observar cada uno de los diagramas para cada uno de los ataques
activos existentes:

Ilustración 5: Suplantación de identidad

25
PFC ULPGC – Aplicaciones Criptográficas Java

Un ejemplo de ataque por suplantación de identidad podría ser: “Más allá de interceptar un
mensaje, un usuario podría construir un mensaje con las entradas deseadas, transmitiéndolo
posteriormente a otro usuario como si procediera de la entidad suplantada, como por ejemplo la
entidad de un administrador. Por consiguiente, el usuario receptor acepta el mensaje y reacciona
ante el mensaje como si del administrador procediera. El mensaje podría ser cualquier tipo de
información, como un fichero de los usuarios que están autorizados o no”.

Ilustración 6: Repetición de mensajes

Por otro lado, un ejemplo de una posible consecuencia de un ataque mediante repetición de
mensajes sería: “Haber ingresado dinero repetidas veces en una cuenta dada”.

Ilustración 7: Modificación de mensajes

Para el caso de ataques mediante modificación de mensajes, algunos de sus objetivos podrían
ser: “alterar un programa para que funcione de forma diferente” o “modificar una orden”, por
ejemplo, en lugar del mensaje “Ingresa un millón de pesetas en la cuenta A”, podría ser modificado
para decir “Ingresa un millón de pesetas en la cuenta B”.

26
PFC ULPGC – Aplicaciones Criptográficas Java

Ilustración 8: Interrupción de servicio

Finalmente, ejemplos de ataques mediante interrupción de servicio son: “Suprimir todos los
mensajes dirigidos a una determinada entidad”, “Interrumpir el servicio de una red inundándola con
mensajes espurios” o “Deshabilitar el sistema de gestión de ficheros”.

3 Servicios de seguridad

Un servicio de seguridad es un servicio que mejora la seguridad de los sistemas,


contrarrestando los ataques a la seguridad, haciendo uso de uno o más mecanismos y políticas de
seguridad con el objetivo de proporcionar el servicio. También pueden definirse como atributos
deseables para que un sistema pueda considerarse seguro. Los principales servicios de seguridad,
junto con sus objetivos son:

Servicios de Seguridad Objetivos


Autentificación Garantizar la procedencia de los objetos
Control de Acceso Prevenir el uso no autorizado de los objetos
Confidencialidad Proteger los objetos ante entidades no autorizadas
Garantizar que no se puedan modificar los objetos sin
Integridad
ser detectado dicho hecho
Asegurar que el receptor recibió los objetos
No repudio
Asegurar que el emisor envió los objetos
Asegurar que los objetos estén disponibles, evitando que
Disponibilidad
entidades no autorizadas afecten a dicha disponibilidad
Tabla 9: Servicios de Seguridad y sus Objetivos

27
PFC ULPGC – Aplicaciones Criptográficas Java

Un símil entre los servicios de seguridad y la vida cotidiana se establece en la siguiente tabla:

Servicios de Seguridad Ejemplos de la vida cotidiana


Autentificación DNI
Control de acceso Llaves y cerrojos
Confidencialidad Tinta invisible
Integridad Tinta indeleble
No repudio Firma notarizada
Tabla 10: Los Servicios de Seguridad y la vida cotidiana

Cada uno de los servicios de seguridad está pensado para hacer frente a uno o varios ataques.
La siguiente tabla muestra dichas relaciones:

Servicios de Seguridad Ataques defendidos


Autentificación Suplantación de identidad
Control de Acceso Suplantación de identidad
Obtención del contenido de mensajes
Confidencialidad
Análisis del tráfico
Repetición
Integridad
Modificación de mensajes
No repudio –––
Disponibilidad Interrupción de servicio
Tabla 11: Ataques defendidos por los Servicios de Seguridad

4 Mecanismos de seguridad

Los mecanismos de seguridad son utilizados por los servicios de seguridad con el objetivo de
contrarrestar los ataques a la seguridad. Es decir, para que los servicios de seguridad hagan frente a
los ataques, es necesario que utilicen una serie de mecanismos de seguridad:

28
PFC ULPGC – Aplicaciones Criptográficas Java

Servicios de Seguridad Mecanismos utilizados


Autentificación
Control de Acceso
Confidencialidad
Criptografía
Integridad
No repudio
Disponibilidad
Tabla 12: Mecanismos utilizados por los servicios

La criptografía es el mecanismo de seguridad primordial de todo sistema de seguridad, pero


no es el único. Se pueden utilizar otros mecanismos tales como: el control de acceso, el intercambio
de autentificación, la notarización, el control de enrutamiento, las auditorías de seguridad, la
funcionalidad fiable mediante políticas de seguridad, las etiquetas de seguridad, la detección de
acciones, los mecanismos de recuperación, etc.
El único mecanismo de seguridad que se tratará será la criptografía, cuyo único objetivo es
construir objetos seguros.

29
PFC ULPGC – Aplicaciones Criptográficas Java

30
Registrarse/Entrar

Iptables
Uno o más colaboradores están trabajando actualmente en extender esta página. Es posible que, a
artículo causa deeditar
discusión ello, hayahistorial
lagunas de contenido, deficiencias de formato o texto en otros idiomas. Por favor, antes
de realizar correcciones mayores o reescrituras, contacta con ellos en su página de usuario o en la página 
de discusión del artículo para poder coordinar la redacción.

El kernel Linux incluye el subsistema Netfilter, que es usado para manipular o decidir el destino del tráfico de red entre o a través de su red. 


navegación Todas las soluciones firewall Linux modernas utilizan este sistema para el filtrado de paquetes.
Documentación El sistema de filtrado de paquetes del núcleo resulta de poca ayuda a los administradores si no se tiene una interfaz de usuario para gestionarlo. 
Portal de la Éste es el proposito de Iptables. Cuando un paquete llega a su servidor, éste es gestionado por el subsistema Netfilter para aceptarlo, 
comunidad
manipularlo o rechazarlo basándose en las reglas suministradas a éste via iptables. Así, iptables es todo lo que necesita para manejar su 
Proyectos
cortafuegos si está familiarizado con él, pero existen muchos interfaces de usuario disponibles para simplificar esta tarea., por ejemplo Firestarter
Cambios recientes
Página aleatoria Aclaramos que en versiones anteriores al kernal 2.4.* se llamaba ipchain, pero a partir de esta versión se cambió a Iptables, mucho mas potente.
Ayuda
Iptables está basado en el uso de TABLAS dentro de las tablas, CADENAS, formadas por agrupación de REGLAS, parámetros que relativizan 
Tareas
las reglas y finalmente una ACCION, que es la encargada de decir qué destino tiene el paquete.
buscar Describimos los elementos y luego vemos un sencillo script básico.

Las Tablas [editar] Tabla de contenidos


Ir   Buscar 1 Las Tablas
FILTER (filtrado)Permite generar las reglas de filtrado o sea, que paquetes aceptar,
2 Comandos de Iptables
herramientas cuales rechazar o cuales omitir.Es la tabla por defecto. Las cadenas serán: INPUT
3 Parámetros
Lo que enlaza aquí
OUTPUT y FORWARD.
4 Acciones
Seguimiento de NAT (Network Address Translation) Desde esta tabla es posible el enmascaramiento de 5 Modelo de Cadena de Reglas
enlaces IP, se usa para redireccionar puertos o cambiar las :IPs de origen y destino a través de  6 Permitir sesiones establecidas
Subir archivo
interface de red. Las cadenas serán :PREROUTING y POSTROUTING 7 Permitir tráfico entrante de puertos específicos
Páginas especiales
Versión para  MANGLE (Modificado de paquetes)Permite la modificación de paquetes como ToS (Type  8 Bloquear trafico
imprimir of Service), TTL (Time to live)o mark, marcar el paquete. 9 Editar iptables
Enlace permanente 10 Enmascaramiento IP
RAW Esta tabla se usa para configurar principalmente excepciones en el seguimiento de
11 Herramientas
paquetes en combinación con la acción o target NOTRACK. Trabaja sobre la cadena 
12 Logs
PREROUTING Y OUTPUT y su única acción es Notrack. Puede evitar que iptables haga 
13 Guardar los cambios realizados a iptables
un seguimiento de los paquetes.
14 Fuentes
Describimos los elementos y luego vemos un sencillo script básico.

CORRESPONDENCIA de TABLAS, CADENAS y FUNCION

TABLA FUNCION CADENA FUNCION de la CADENA

INPUT
Filtrado de paquetes que llegan al firewall

Filtrado de OUTPUT
FILTER Filtrado de los paquetes de salida
paquetes

FORWARD
Permite el paso de paquetes a otra dirección del firewall

Chequea la dirección de red antes de reenviarla.
PREROUTING
Facilita la modificación de la información para facilitar el enrutado
Se usa también como DESTINATION NAT o DNAT
Enrutamiento
de Tratamiento de la dirección IP después del enrutado.Esto hace
NAT POSTROUTING
direcciones de que no sea necesario la modificación del destino de la dirección IP

red del paquete como en pre-routing.Se usa como SOURCE NAT o SNAT

OUTPUT Interpretación de las direcciones de Red de los paquetes
que salen del firewall.Escasamente usado.

PREROUTING
Modificación de 
POSTROUTING Permite la modificación del paquete como puede ser TOS
las
MANGLE INPUT (type of Service), marcado de los mismos para
cabeceras de
OUTPUT QOS o calidad de servicio
TCP
FORWARD

PREROUTING
Esta tabla se usa para configurar principalmente excepciones
Acción 
RAW en el seguimiento de paquetes en combinación
NOTRACK
OUTPUT con la acción o target NOTRACK.
A partir de aquí, dividiremos las opciones en algunos grupos

Comandos de Iptables [editar]

Como hacíamos referencia mas arriba, dentro de las tablas hay cadenas a su vez vez formadas por agrupaciones de reglas. Es importante
ver que, cada tabla tiene cadena por defecto, que no se pueden eliminar.
A las CADENAS por defecto podemos unir cadenas creadas por nosotros mismos para un mejor funcionamiento del filtrado o el
enrutamiento.
El comando IPTABLES tiene a su vez parámetros y comandos que permitirán definir el comportamiento de una o varias reglas. Esto es, 
agregar una regla, modificar una regla existente, eliminar el nombre de una cadena
Describimos algunos de los comandos mas comunes.

FUNCION de COMANDOS

COMANDO FUNCION

-A Agregar nueva regla a la cadena especificada.

Insertar nueva regla antes de la regla número_regla(rulenum)


-I
en la cadena especificada de acuerdo a los parámetros sometida.

-R Reemplazar la regla (rulenum) en la cadena especificada.

Modifica el nombre de la cadena.


-E
[nombre-anterior-cadena por nombre-nueva-cadena]

Listado de reglas de la cadena especificada. Si no se determina una


-L
cadena en particular, listará todas las cadenas existenes.

-N Crear nueva cadena asociándola a un nombre.

-P Modifica la acción por defecto de la cadena preseleccionada.

-D Eliminar la regla_número(rulenum) en la cadena seleccionada.

Pone los contadores de paquetes y bytes a cero en la cadena seleccionada.


-Z De no poner seleccionar una cadena, pondrá a cero todos los contadores de
todas las reglas en todas cadenas.

(Lista completa en: man iptables)

Parámetros [editar]

Todas las reglas en iptables tienen definida su condición por los parámetros, que constituyen su parte primordial.
Algunos de estos parámetros son:

PARAMETROS y su FUNCION

PARAMETRO FUNCION

-i Interfaz de entrada (eth0,eth1,eth2...)

-o Interfaz de salida (eth0,eth1,eth2...)

--sport Puerto de origen

--dport Puerto destino

El protocolo del paquete a comprobar, tcp, udp, icmp ó all.
-p
Por defecto es all

-j Esto especifica el objetivo de la cadena de reglas, o sea una acción

Cuando listamos las reglas, agrega el número que ocupa cada regla
--line-numbers
dentro de la cadena

(Ver lista completa en: man iptables)

Acciones [editar]

Y finalmente, las ACCIONES que estarán siempre al final de cada regla que determinará que hacer con los paquetes afectados. Si no se 


especifica ninguna acción, se ejecutará la opción por defecto que cada cadena tiene asignada. Las acciones serïan:

ACCEPT---> Paquete aceptado.


REJECT---> Paquete rechazado. Se envía notificación a través del protocolo ICMP.
DROP---> Paquete rechazado. Sin notificación
MASQUERADE--->Enmascaramiento de la dirección IP origen de forma dinámica.Esta acción es sólo válida en la tabla NAT en la cadena 
postrouting.
DNAT---> Enmascaramiento de la dirección destino, muy conveniente para re-enrutado de paquetes.
SNAT---> enmascaramiento de la IP origen de forma similar a masquerade, pero con IP fija.

Ya tenemos los componetes esenciales para formar las reglas que determinarán la aceptación o denegación de entrada y salida de paquetes 
de nuestra máquina, tanto a través de Internet,como de nuestra propia red doméstica.
Ahora veremos cómo se construyen las reglas y como hacer un script de shell en el que se van aplicando aquellas reglas que necesitemos.

MUY IMPORTANTE. Cuidado con el orden en el cual disponemos las reglas.


IPTABLES LEE DE MANERA SECUENCIAL LAS CADENAS DE REGLAS.
Es decir, comienza por la primera y verifica que se cumpla la condición y
la ejecuta sin verificar las siguientes.
Por consiguiente, si la primera regla en la tabla filter de la cadena
input es rechazar cualquier paquete,las siguientes reglas no serán verificadas,
y se rechazará cualquier paquete.

Modelo de Cadena de Reglas [editar]

La estructura o el esqueleto de una regla basicamente sería:

iptables --> -t -->tabla -->tipo_operación -->cadena -->regla_con_parámetros -->Acción

Explicamos por pasos agregando debajo valores reales:

iptables -t--> tabla--> tipo_operacion--> cadena--> regla_con_parámetros--> ACCION

iptables -t filter -A INPUT -p tcp -dport 23 -j DROP

Ahora quitando espacios:

iptables -t filter -A INPUT -p tcp -dport 23 -j DROP

¿Qué nos dice esta cadena de reglas?
Que en la tabla filter, la cadena input filtra los paquetes con protocolo tcp que entran por el puerto 23 (puerto asignado a telnet) y éstos son 
rechazados (DROP) sin ninguna notificación.
Algunas consideraciones. De acuerdo con lo hemos comentado antes, podríamos escribir lo mismo de otra forma,por ej. quitando "-t filter", ya
que es la tabla por defecto, además podemos cambiar el número de puerto por"telnet" que en realidad es su puerto asignado. Queda:

iptables -A INPUT -p tcp -dport telnet -j DROP

Si por el contrario, quisiéramos aceptar estos paquetes:

iptables -A INPUT -p tcp -dport telnet -j ACCEPT

O aceptamos tráfico http:

iptables -A INPUT -p tcp -dport http -j ACCEPT

donde también podemos especificar el interfaz de entrada (-i etho)

iptables -A INPUT -i eth0 -p tcp -dport http -j ACCEPT

también:

iptables -A INPUT -p tcp -dport 80 -j ACCEPT

Aplicando los conceptos anteriores:

sudo iptables -L

se listan las actuales reglas en iptables. Si acabas de instalar un servidor, aun no tendrás normas, así que deberías ver:

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

Permitir sesiones establecidas [editar]

Podemos también permitir sesiones establecidas para recibir el tráfico:

sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Permitir tráfico entrante de puertos específicos  [editar]

Se podría empezar por el bloqueo de tráfico, pero deberías estar trabajando a través de SSH, por lo que necesitas permitir SSH antes de bloquear 
todo lo demás.
Para permitir el tráfico SSH por el puerto por defecto (22), puedes decirle a iptables que permita a todo el tráfico TCP entrante por ese puerto.

sudo iptables -A INPUT -p tcp --dport ssh -j ACCEPT

Refiéndonos a la lista anterior, puedes ver que ésto le dice a iptables:
Añadir esta regla a la cadena input (-A INPUT), de manera que nos fijamos en el tráfico
Comprueba si el tráfico es TCP (-p tcp).
Si lo es, comprueba que la entrada va al puerto SSH (--dport ssh).
Si es así, acepta la entrada (-j ACCEPT).
Vamos comprobar las reglas: (solo se muestra la primera linea, tu verás más)

sudo iptables -L

Chain INPUT (policy ACCEPT)


target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh

Ahora, vamos a permitir todo el tráfico entrante

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

Comprobando nuestras reglas, tenemos:

sudo iptables -L

Chain INPUT (policy ACCEPT)


target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED

ACCEPT tcp -- anywhere anywhere tcp dpt:ssh


ACCEPT tcp -- anywhere anywhere tcp dpt:www

Tenemos permitido específicamente el tráfico tcp en los puertos ssh y web, pero como no tenemos bloqueado nada, todo el tráfico puede aun 
entrar.

Bloquear trafico [editar]

Una vez que se toma la decisión de aceptar un paquete, ninguna regla más le afecta. Como las reglas que permiten el tráfico web y ssh vienen 
de antes, ya que nuestra regla de bloquear el tráfico viene después, podemos aun aceptar el tráfico que queramos. Todo lo que necesitamos 
hacer es poner la regla para bloquear todo el tráfico.

sudo iptables -A INPUT -j DROP

listamos las reglas:


sudo iptables -L

Y obtenemos

Chain INPUT (policy ACCEPT)


target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED

ACCEPT tcp -- anywhere anywhere tcp dpt:ssh


ACCEPT tcp -- anywhere anywhere tcp dpt:www
DROP all -- anywhere anywhere

Como no hemos especificado un interfaz o protocolo, cualquier tráfico de cualquier puerto en cualquier interfaz está bloqueado, excepto para web 
y ssh.

Editar iptables [editar]

El único problema con nuestra configuración de lejos es que incluso el puerto loopback está bloqueado.

Podríamos haber escrito la regla solo para eth0 especificando -i eth0, pero, pero también podríamos añadir una regla para el loopback. Si se 
agrega esta regla, esta llegará muy tarde - después de que todo el tráfico sea bloqueado. Necesitamos insertar la regla antes de ésto. Dado que 
se trata de una gran cantidad de tráfico, la insertaremos como primera regla para que sea procesada en primer lugar

sudo iptables -I INPUT 1 -i lo -j ACCEPT

Listamos las reglas:

sudo iptables -L

Y obtenemos

Chain INPUT (policy ACCEPT)

target prot opt source destination


ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh

ACCEPT tcp -- anywhere anywhere tcp dpt:www


DROP all -- anywhere anywhere

La primera y última linea parecen lo mismo, así que listaremos iptables con más detalle con la opción -v.

sudo iptables -L -v

Y obtenemos

Chain INPUT (policy ALLOW 0 packets, 0 bytes)

pkts bytes target prot opt in out source destination


0 0 ACCEPT all -- lo any anywhere anywhere
0 0 ACCEPT all -- any any anywhere anywhere state
RELATED,ESTABLISHED

0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:ssh


0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:www
0 0 DROP all -- any any anywhere anywhere

Ahora puedes ver más información. Esta regla es de hecho muy importante, dado que muchos programas utilizan la interfaz loopback para 
comunicarse con otras. Si no permites la comunicación, podrías romper esos programas.

Enmascaramiento IP [editar]

El propósito del Enmascaramiento IP (IP Masquerading) es permitir que máquinas con direcciones IP privadas no enrutables de una red accedan 
a Internet a través de la máquina que realiza el enmascaramiento. Se debe manipular el tráfico que va de su red privada con destino a Internet, 
para que las respuestas puedan encaminarse adecuadamente a la máquina que hizo la petición. Para ello, el núcleo debe modificar la dirección 
IP fuente de cada paquete de forma que las respuestas se encaminen hacia ella, en lugar de encaminarla hacia la dirección IP privada que hizo la 
petición, lo que resulta imposible en Internet. Linux usa Seguimiento de Conexión (Connection Tracking, conntrack) para llevar la cuenta de qué 
conexiones pertenencen a qué máquinas, y reencaminar adecuadamente cada paquete de retorno. El tráfico que sale de su red privada es, por 
consiguiente, «enmascarada» dando la sensación de que se ha originado en la máquina Ubuntu que hace de pasarela. Este proceso se 
denomina Compartición de Conexiones de Internet (Internet Connection Sharing) en la documentación de Microsoft.
Esto se puede conseguir con una sóla regla de iptables, que puede variar ligeramente en función de la configuración de su red:

sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o ppp0 -j MASQUERADE

La orden anterior supone que su espacio de direcciones privadas es 192.168.0.0/16 y que el dispositivo que conecta con Internet es ppp0. La
sintaxis se descompone de la siguiente forma:
-t nat -- la regla es para ir a la tabla nat
-A POSTROUTING -- la regla es para añadir (-A) a la cadena POSTROUTING
-s 192.168.0.0/16 -- la regla se aplica al tráfico originado desde la dirección específica
-o ppp0 -- la regla se aplica al tráfico programado para ser enrutado a través del dispositivo de red especificado
-j MASQUERADE -- el tráfico que se ajuste a esta regla «saltará» («jump», -j) al destino MASQUERADE para ser manipulado como se
describió anteriormente
Cada cadena en la tabla de filtrado (la tabla predeterminada, y donde ocurren la mayoría de los filtrados de paquetes) tiene una política 
predeterminada de ACCEPT, pero si está creando un firewall además de un dispositivo de pasarela, debería establecer las políticas a DROP o 
REJECT, en cuyo caso necesitará habilitar su tráfico enmascarado a través de la cadena FORWARD para que la regla anterior funcione:

sudo iptables -A FORWARD -s 192.168.0.0/16 -o ppp0 -j ACCEPT

sudo iptables -A FORWARD -d 192.168.0.0/16 -m state --state ESTABLISHED,RELATED -i ppp0 -j ACCEPT

Las órdenes anteriores permitirán todas las conexiones que vayan de su red local a Internet, así como el retorno a la máquina que las inició de 
todo el tráfico relacionado con esas conexiones.

Herramientas [editar]

Hay muchas herramientas disponibles que pueden ayudarle a construir un completo firewall sin necesidad de conocer iptables en profundidad.
Para los que se inclinan por una solución gráfica, Firestarter es muy popular y fácil de usar, y fwbuilder es muy potente y tiene un aspecto
familiar para aquellos administradores que hayan usado herramientas comerciales de firewall como Checkpoint FireWall-1. Si prefiere una utilidad
de línea de órdenes con archivos de configuración en texto plano, Shorewall es una solución muy potente para ayudarle a configurar un firewall 
avanzado para cualquier red. Si su red es relativamente simple, o no dispone de red, ipkungfu le proporcionará un firewall funcional con desde el 
principio sin necesidad de configuración, y le permitirá crear fácilmente un firewall más avanzado editando archivos de configuración sencillos y 
bien documentados. Otra herramienta interesante es fireflier, diseñado para ser una aplicación firewall de escritorio. Está formada por un 
servidor (fireflier-server) y una selección de clientes GUI (GTK o QT), y se comporta de manera muy similar a muchas aplicaciones interactivas de 
firewall para Windows.

Logs [editar]

Los registros del firewall son esenciales para reconocer ataques, corregir problemas en las reglas de su firewall, y observar actividades inusuales
en su red. Debe incluir reglas de registro en su firewall para poder activarlos, y las reglas de registro deben aparecer antes de cualquier otra regla
final aplicable (una regla con un objetivo que decide el destino del paquete, como ACCEPT, DROP o REJECT). Por ejemplo,

sudo iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j LOG --log-prefix "NEW_HTTP_CONN: "

Una petición al puerto 80 desde la máquina local, por tanto, podría generar un registro en dmesg con el siguiente aspecto:

[4304885.870000] NEW_HTTP_CONN: IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=127.0.0.1 D

El registro anterior también aparecerá en /var/log/messages, /var/log/syslog y /var/log/kern.log. Este comportamiento se


puede cambiar editando apropiadamente el archivo /etc/syslog.conf, o instalando y configurando ulogd y utilizando el objetivo ULOG en
lugar del LOG. El demonio ulogd es un servidor en espacio de usuario, que escucha las instrucciones de registro que provienen del núcleo y que 
sean específicamente para firewalls, y puede registrar cualquier archivo que desee, o incluso a una base de datos PostgreSQL o MySQL. Se
puede simplificar la interpretación del significado de los registros del firewall usando una herramienta de análisis de registros como fwanalog, 
fwlogwatch o lire.

Guardar los cambios realizados a iptables [editar]

Si reiniciara el sistema luego de haber aplicado estas reglas los cambios se perderían. Más que volver a escribir esto cada vez que reinicias, lo 
lógico es guardar la configuración y hacer que se aplique automáticamente. Para guardar la configuración puedes usar iptables-save y
iptables-restore.

Fuentes [editar]

https://help.ubuntu.com/community/IptablesHowTo
https://help.ubuntu.com/6.10/ubuntu/serverguide/es/firewall-configuration.html

Categorías: Artículos en desarrollo | Servidores | Seguridad

Esta página fue modificada por última vez el 15:34, 22 abr 2011. Esta página ha sido visitada 45.255 veces.
El contenido está disponible bajo los términos de la Atribución-Licenciar Igual 3.0 Política de protección de datos Acerca de doc.ubuntu-e s Aviso legal
Comandos de IPTables

Comando -A, --append


Ejemplo iptables -A INPUT ...
Explicación Agrega una regla a una cadena especificada

Comando -D, --delete


Ejemplo iptables -D INPUT --dport 80 -j DROP, iptables -D INPUT 1
Borra una regla de una cadena especificada. Se le puede pasar como argumento toda la regla la
Explicación
cual deberá coincidir exactamente con la existente o el número de linea que ocupa en la cadena.

Comando -R, --replace


Ejemplo iptables -R INPUT 1 -s 192.168.0.1 -j DROP
Reemplaza una regla. Se le pasa como argumento el numero de linea dentro de la cadena y la
Explicación
nueva regla

Comando -I, --insert


Ejemplo iptables -I INPUT 1 --dport 80 -j ACCEPT
Inserta una regla en el lugar de la cadena que le pasemos como argumento. Recordemos que in
Explicación
IPTables es de suma importancia el orden en que están las regla dentro de las cadenas.

Comando -L, --list


Ejemplo iptables -L INPUT
Explicación Muestra las reglas que contiene la cadena que le pasemos como argumento.

Comando -F, --flush


Ejemplo iptables -F INPUT
Explicación Borra todas las reglas de una cadena.

Comando -Z, --zero


Ejemplo iptables -Z INPUT
Explicación Pone en cero todos los contadores de una determinada cadena

Comando -N, --new-chain


Ejemplo iptables -N allowed
Explicación Permite al usuario crear su propia cadena. En este ejemplo la cadena se llamará “allowed”

Manual de Uso de IPTables – Jorge E. Kleinerman 1/11


Comando -X, --delete-chain
Ejemplo iptables -X allowed
Borra la cadena especificada. Si se escribe -X solamente, borrará todas las cadenas creadas en
Explicación
esa tabla

Comando -P, --policy


Ejemplo iptables -P INPUT DROP
Explicación Explicita al Kernel que hacer con los paquetes que no coinciden con ninguna regla.

Comando -E, --rename-chain


Ejemplo iptables -E allowed disallowed
Explicación Cambia el nombre de una cadena.

Condiciones de IPTables (IPTables Matches)

Una regla pude tener varias condiciones. Existen cinco categorías de condiciones:
• Condiciones genericas: Pueden ser usados en cualquier regla
• Condiciones TCP: Solo pueden ser usados en paquetes TCP
• Condiciones UDP: Solo pueden ser usados en paquetes UDP
• Condiciones ICMP: Solo pueden ser usados en paquetes ICMP
• Otras condiciones: Como condiciones de estado, etc.

Condiciones genéricas

Condición -p, --protocol


Kernel 2.3, 2.4, 2.5 and 2.6
Ejemplo iptables -A INPUT -p tcp
El paquete debe ser del protocolo especificado después de -p. Cada protocolo se corresponde a
Explicación un entero ej: ICMP es equivalente a 0. Si usamos la opción -p ALL son los tres (ICMP, TCP;
UDP). Todos lo protocolos soportado están en /etc/protocols

Condición -s, --src, --source


Kernel 2.3, 2.4, 2.5 and 2.6
Ejemplo iptables -A INPUT -s 192.168.1.1
Permite seleccionar paquetes en función de la dirección origen. Podemos especificar un host o
un rango de IP's agregando la máscara de subred. (ej: 192.168.0.0/24).
Explicación Si queremos seleccionar todos los paquetes que no vengan de un determinado host o red
podemos usar la negación (ej: iptables -A INPUT -s ! 192.168.1.0/24)

Condición -d, --dst, --destination


Kernel 2.3, 2.4, 2.5 and 2.6

Manual de Uso de IPTables – Jorge E. Kleinerman 2/11


Ejemplo iptables -A INPUT -d 192.168.1.1
Explicación IDEM anterior pero con dirección o rango de direcciones de destino

Condición -i, --in-interface


Kernel 2.3, 2.4, 2.5 and 2.6
Ejemplo iptables -A INPUT -i eth0
Permite seleccionar paquetes que vienen de una determinada interface.
Esta opción solo es legal en las siguientes cadenas INPUT, FORWARD y PREROUTING, y
Explicación retornaría un error en cualquier otra.
Pude usarse eth+, por ejemplo para especificar que todas las interfaces ethernet.
También puede usarse la negación (ej: -i ! eth0 sería todas las interfaces excepto la eth0).

Condición -o, --out-interface


Kernel 2.3, 2.4, 2.5 and 2.6
Ejemplo iptables -A FORWARD -o eth0
Permite seleccionar paquetes que salen de una determinda interface.
Esta opción solo es legal en las siguientes cadenas OUTPUT, FORWARD y POSTROUTING y
Explicación retornaría un error en cualquier otra.
Pude usarse eth+, por ejemplo para especificar que todas las interfaces ethernet.
También puede usarse la negación (ej: -i ! eth0 sería todas las interfaces excepto la eth0).

Condición -f, --fragment


Kernel 2.3, 2.4, 2.5 and 2.6
Ejemplo iptables -A INPUT -f
Permite seleccionar las segundas o terceras partes de paquetes fragmentados. Estos paquetes son
Explicación peligrosos. Como nuestro interés es determinar la primera parte podemos usar esta opción así:
iptables -A INPUT ! -f

Condiciones TCP

Estas condiciones son específicas del protocolo TCP, por lo tanto solo se pueden usar con paquetes
TCP. Es por ello que previo a especificar cualquiera de estas condiciones se debe especificar la
condición -p tcp.

Condición --sport, --source-port


Kernel 2.3, 2.4, 2.5 and 2.6
iptables -A INPUT -p tcp --sport 22
--source-port 22:80
Ejemplo
--source-port :80 (puerto 0 a 80)
--source-port ! 6:1024 (todos los puertos menos el rango de 6 a 1024)
Permite seleccionar o excluir paquetes de un determinado puerto o rango de puertos tcp origen.
Explicación El puerto puede escribirse también con el nombre del servicio (en linux estan en /etc/services),
pero esto supone una pequeña sobrecarga que se hace considerable con gran cantidad de reglas.

Manual de Uso de IPTables – Jorge E. Kleinerman 3/11


Condición --dport, --destination-port
Kernel 2.3, 2.4, 2.5 and 2.6
Ejemplo iptables -A INPUT -p tcp --dport 22
Explicación IDEM pero con puerto tcp destino

Condiciones UDP

Para seleccionar paquetes a través de los puertos origen y destino, se hace de la misma forma que con
TCP, la diferencia que se debe anteponer -p udp en lugar de -p tcp

Condiciones ICMP

Condición --icmp-type
Kernel 2.3, 2.4, 2.5 and 2.6
Ejemplo iptables -A INPUT -p icmp --icmp-type 8
Evita el tipo de paquetes icmp que especifiquemos. El del ejemplo es peligroso ya que puede
Explicación
redirigir a lugares peligrosos.

Condiciones explicitas

Las condiciones explicitas se deben cargar con -m o –match.

Condiciones AH/ESP

Condición --ahspi
Kernel 2.5 and 2.6
Ejemplo iptables -A INPUT -p 51 -m ah --ahspi 500
Permite seleccionar paquetes del protocolo AH de IPSEC en base a su SPI (Security Parameter
Index). El SPI es usado en conjunción con la dirección destino, la dirección origen y la clave
Explicación
secreta para establecer una asociación segura.
Se puede seleccionar un rango de SPI's haciendo un intervalo.

Condición --espspi
Kernel 2.5 and 2.6
Ejemplo iptables -A INPUT -p 50 -m esp --espspi 500
Explicación IDEM pero con el protocolo ESP de IPSEC.

Manual de Uso de IPTables – Jorge E. Kleinerman 4/11


Condiciones de rangos IPS

Condición --src-range
Kernel 2.4, 2.5 and 2.6
Ejemplo iptables -A INPUT -p tcp -m iprange --src-range 192.168.1.13-192.168.2.19
Selecciona paquetes de ese rango de IPS origen, pudiendo también usarse en forma invertida (ej:
Explicación
iptables -A INPUT -p tcp -m iprange ! --src-range 192.168.1.13-192.168.2.19 )

Condición --dst-range
Kernel 2.4, 2.5 and 2.6
Ejemplo iptables -A INPUT -p tcp -m iprange --dst-range 192.168.1.13-192.168.2.19
Explicación IDEM pero con IPS destino

Condiciones MAC

Condición --mac-source
Kernel 2.3, 2.4, 2.5 and 2.6
Ejemplo iptables -A INPUT -m mac --mac-source 00:00:00:00:00:01
Permite seleccionar paquetes en función a su dirección MAC origen.
Explicación
Esta regla solo puede ser usada en las cadenas PREROUTING, FORWARD and INPUT.

Condiciones de Marca

La marca es un entero de 32 bits que se le puede realizar a ciertos paquetes para luego poder tomar
decisiones con los mismos de acuerdo a estas.
La marca es un campo especial mantenido en el kernel que es asociado a un conjunto de paquetes y
solo es valido en el transcurso en que los paquetes están dentro de la computadora.

Condición --mark
Kernel 2.3, 2.4, 2.5 and 2.6
Ejemplo iptables -t mangle -A INPUT -m mark --mark 1
Permite seleccionar paquetes en función a marcas previamente realizadas dentro de la misma
Explicación
computadora.

Condiciones de dueño

Permite seleccionar paquetes en de acuerdo al UID, GID, PID o SID que los haya creado.
La condición de dueño (owner match) solo se puede usar en la cadena OUTPUT por rasones obvias.

Condición --uid-owner
Kernel 2.3, 2.4, 2.5 and 2.6

Manual de Uso de IPTables – Jorge E. Kleinerman 5/11


Ejemplo iptables -A OUTPUT -m owner --uid-owner 500
Permite seleccionar paquetes creados por un determinado usuario. Un uso posible podría ser
Explicación
bloquear el usuario http para mandar paquetes.

Condición --gid-owner
Kernel 2.3, 2.4, 2.5 and 2.6
Ejemplo iptables -A OUTPUT -m owner --gid-owner 0
Permite seleccionar paquetes de un determinado grupo en función de su Group ID (GID).
Explicación Puede usarse para bloquear la salida a internet a todos los usuarios excepto un grupo o solo
permitirles a los miembros del grupo http crear paquetes que salen por el por el puerto http.

Condición --pid-owner
Kernel 2.3, 2.4, 2.5 and 2.6
Ejemplo iptables -A OUTPUT -m owner --pid-owner 78
Permites seleccionar paquetes que un determinado proceso creó en función a su Process ID
Explicación (PID). Se complica su uso si el proceso posee muchos hilos y en este caso se debe manejar con
un script que lea los PID del comando ps.

Condición --sid-owner
Kernel 2.3, 2.4, 2.5 and 2.6
Ejemplo iptables -A OUTPUT -m owner --sid-owner 100
Permite seleccionar paquetes en base a una sesión de un determinado programa en cuestión a
Explicación través del Session ID. El valor del SID de un proceso, es el PID del proceso y todos los procesos
resultantes de este tendrán el mismo SID.

Condiciones de estado

Condición --state
Kernel 2.3, 2.4, 2.5 and 2.6
Ejemplo iptables -A INPUT -m state --state RELATED,ESTABLISHED
Nos permite seleccionar paquetes de acuerdo al estado de su conexión
Existen cuatro tipos de estados en los que puede estar una conexión y sus paquetes asociados.
Estos son:
● ESTABLISHED Significa que el paquete es parte de una conexión existente, que manda
paquetes en ambas direcciones.
● NEW Significa que el paquete iniciará una conexión nueva o es asociado a una conexión
Explicación
a la que todavía no se le ha visto paquetes en ambas direcciones.
● RELATED Significa que el paquete esta creando una nueva conexión asociada a otra
existente conocida. (Ejs: Una transferencia FTP iniciada por una TCP o un paquete
ICMP como resultado de un error en TCP o UDP).
● INVALID Significa que el paquete no se puede asociar a ninguna conexión y lo que
generalmente se hace es un DROP

Manual de Uso de IPTables – Jorge E. Kleinerman 6/11


Condiciones de TOS

Condición --tos
Kernel 2.3, 2.4, 2.5 and 2.6
Ejemplo iptables -A INPUT -p tcp -m tos --tos 0x16
Permite seleccionar paquetes en función al campo TOS de la cabecera IP
Esto se puede usar conjuntamente con iproute2 y las marcas previamente descriptas para hacer
un ruteo avanzado (Ej: Se podría marcar paquetes con un determinado TOS y luego con iproute2
Explicación
routerlos por una interfaz mas veloz.)
Los type of services pueden escribirse como números en hexadecimal o escribirse como
nombres sacados de iptables -m tos -h

Condiciones TTL

Condición --ttl
Kernel 2.3, 2.4, 2.5 and 2.6
Ejemplo iptables -A OUTPUT -m ttl --ttl 60
Permite seleccionar paquetes de un determinado tiempo de vida. Esto se usa en muchos caso
Explicación
para debuguear el funcionamiento de una LAN

Targets y Jumps

Los target y jumps deciden que se hará con un paquete que cumpla todas las condiciones que le
hayamos especificado.

Jumps
Con -j podemos hacer saltos a una cadena, que debe previamente haber sido creada si no existe.

ej:
iptables -A INPUT -p tcp -j tcp_packets

Podríamos estar en la cadena INPUT y si el paquete cumple por ejemplo la condición -p tcp saltar a
una cadena previamente creada por nosotros donde hagamos un filtrado refinado de los distintos
paquetes TCP. En este caso se pueden dar dos situaciones: que el paquete se aceptado dentro de la
cadena tcp_packets o bien que alcance el final de la misma sin haber encontrado ninguna condición
que se iguale a la del paquete. En este caso el mismo volverá al la cadena desde la que vino a la
próxima linea donde la abandonó..

Targets

La opción -j también puede usarse para especificar una acción con un paquete que cumple todas
condiciones. Las dos acciones mas comunes son: DROP or ACCEPT (eliminarlo o aceptarlo

Manual de Uso de IPTables – Jorge E. Kleinerman 7/11


respectivamente), que paran el paquete evitando que siga recorriendo el resto de la cadena y las
restantes si aún quedan.
Existen otro tipo de targets que modifican el paquete y el mismo sigue recorriendo las reglas que
quedan como por ejemplo: TTL TOS.

Target ACCEPT

Un vez que el paquete cumple la todas las condiciones que hayamos especificado, si usamos la opción
-j ACCEPT el mismo será aceptado y no recorrerá mas reglas de la cadena actual y de ninguna otra de
esa misma tabla. Esto es importante aclararlo ya que el paquete puede ser eliminado en otra tabla.
La forma en que usamos este target es -j ACCEPT.

Target DROP

Un vez que el paquete cumple la todas las condiciones que hayamos especificado, si usamos la opción
-j DROP el mismo será bloqueado y no sera procesado en ningún otra cadena ni tabla.
Esto puede traer como inconveniente dejar sockets muertos y en muchos casos conviene usar el target
REJECT

Target DNAT ( Destination Network Address Translation )

Este target es usado para reescribir el IP de destino. Por lo tanto, si un paquete cumple todas las
condiciones y este es el target de la regla, este paquete y todos los subsecuentes del mismo flujo, le
serán reescrita su dirección de destino y por lo tanto ruteados a la correspondiente red o host.
Esto es muy útil cuando tenemos un servidor dentro de una LAN con una IP no publicable, ya que le
decimos al firewall que todos los paquetes que reciba él, en el puerto que escucha el servidor, los
reenvie a el IP real y no publicable del servidor. De esta forma desde afuera de la LAN (internet),
pareciera que el servidor tiene como IP, el valor de IP que en realidad tiene nuestro firewall.
Cabe destacar que se puede “dnatear” a un rango de IPS y el firewall tomará una decisión aleatoria a la
hora de decidir a quien enviarle el flujo de paquetes.

El target DNAT solo se puede usar dentro de las cadenas PREROUTING y OUTPUT de la tabla
NAT.

Opción --to-destination
iptables -t nat -A PREROUTING -p tcp -d 15.45.23.67 --dport 80 -j DNAT --to-destination
Ejemplo
192.168.1.1-192.168.1.10
Reescribe la dirección de destino de un paquete y todos los subsecuentes del mismo flujo.
Explicación también es posible reescribir el puerto de destino a otro puerto o a un rango
ej: --to-destination 192.168.1.1:80 ó --to-destination 192.168.1.1:80-100

Un buen ejemplo para entenderlo (Esta en ingles)

Since DNAT requires quite a lot of work to work properly, I have decided to add a larger explanation on
how to work with it. Let's take a brief example on how things would be done normally. We want to publish
our website via our Internet connection. We only have one IP address, and the HTTP server is located on
our internal network. Our firewall has the external IP address $INET_IP, and our HTTP server has the
internal IP address $HTTP_IP and finally the firewall has the internal IP address $LAN_IP. The first
thing to do is to add the following simple rule to the PREROUTING chain in the nat table:

iptables -t nat -A PREROUTING --dst $INET_IP -p tcp --dport 80 -j DNAT \

Manual de Uso de IPTables – Jorge E. Kleinerman 8/11


--to-destination $HTTP_IP

Now, all packets from the Internet going to port 80 on our firewall are redirected (or DNAT'ed) to our
internal HTTP server. If you test this from the Internet, everything should work just perfect. So, what
happens if you try connecting from a host on the same local network as the HTTP server? It will simply
not work. This is a problem with routing really. We start out by dissecting what happens in a normal case.
The external box has IP address $EXT_BOX, to maintain readability.

1. Packet leaves the connecting host going to $INET_IP and source $EXT_BOX.
2. Packet reaches the firewall.
3. Firewall DNAT's the packet and runs the packet through all different chains etcetera.
4. Packet leaves the firewall and travels to the $HTTP_IP.
5. Packet reaches the HTTP server, and the HTTP box replies back through the firewall, if that is
the box that the routing database has entered as the gateway for $EXT_BOX. Normally, this
would be the default gateway of the HTTP server. (Recordemos que el paquete llega al server con
destino $HTTP y origen $EXT_BOX. El server responde con destino $EXT_BOX y origen $HTTP.
Como el firewall suele generalmente ser el gateway del server, el paquete de respuesta llega de
vuelta al firewall)
6. Firewall Un-DNAT's the packet again, so the packet looks as if it was replied to from the firewall
itself.
7. Reply packet travels as usual back to the client $EXT_BOX.

Now, we will consider what happens if the packet was instead generated by a client on the same network
as the HTTP server itself. The client has the IP address $LAN_BOX, while the rest of the machines
maintain the same settings.

1. Packet leaves $LAN_BOX to $INET_IP.


2. The packet reaches the firewall.
3. The packet gets DNAT'ed, and all other required actions are taken, however, the packet is not
SNAT'ed, so the same source IP address is used on the packet.
4. The packet leaves the firewall and reaches the HTTP server.
5. The HTTP server tries to respond to the packet, and sees in the routing databases that the
packet came from a local box on the same network, and hence tries to send the packet directly to
the original source IP address (which now becomes the destination IP address).
6. The packet reaches the client, and the client gets confused since the return packet does not come
from the host that it sent the original request to. Hence, the client drops the reply packet, and
waits for the "real" reply.

The simple solution to this problem is to SNAT all packets entering the firewall and leaving for a host or
IP that we know we do DNAT to. For example, consider the above rule. We SNAT the packets entering
our firewall that are destined for $HTTP_IP port 80 so that they look as if they came from $LAN_IP.
This will force the HTTP server to send the packets back to our firewall, which Un-DNAT's the packets
and sends them on to the client. The rule would look something like this:

iptables -t nat -A POSTROUTING -p tcp --dst $HTTP_IP --dport 80 -j SNAT \


--to-source $LAN_IP

Manual de Uso de IPTables – Jorge E. Kleinerman 9/11


Remember that the POSTROUTING chain is processed last of the chains, and hence the packet will
already be DNAT'ed once it reaches that specific chain. This is the reason that we match the packets
based on the internal address.

You think this should be enough by now, and it really is, unless considering one final aspect to this whole
scenario. What if the firewall itself tries to access the HTTP server, where will it go? As it looks now, it
will unfortunately try to get to its own HTTP server, and not the server residing on $HTTP_IP. To get
around this, we need to add a DNAT rule in the OUTPUT chain as well. Following the above example, this
should look something like the following:

iptables -t nat -A OUTPUT --dst $INET_IP -p tcp --dport 80 -j DNAT \


--to-destination $HTTP_IP

Adding this final rule should get everything up and running. All separate networks that do not sit on the
same net as the HTTP server will run smoothly, all hosts on the same network as the HTTP server will be
able to connect and finally, the firewall will be able to do proper connections as well. Now everything works
and no problems should arise.

Target SNAT

El target SNAT es usado para hacer reescribir la dirección de destino. Esto es muy usado cuando
queremos que varios host compartan una sola conexión. De esta forma, todos salen a Internet con la
misma dirección de destino. Cabe aclarar que para hacer esto es necesario activar el bit de forwardeo en
le kernel del host que va a compartir la conexión a internet.
El target SNAT solo es valido dentro de la tabla nat en la cadena POSTROUTING y puede usarse con
la siguiente opción:

Opción --to-source
iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT --to-source 194.236.50.155-
Ejemplo
194.236.50.160:1024-32000
Reescribe la dirección de destino de los paquetes que cumplan con la condiciónes especificadas,
Explicación a alguna de las direcciones y puertos seleccionados, dentro de los rangos especificados, en forma
aleatoria.

Target MASQUERADE

El target MASQUERADE es usado de la misma forma que SNAT pero no requiere –to-source opción
ya que el mismo fue hecho especialmente para trabajar con conexiones donde se recibe un IP dinámico.
(Ej: Dial-up, ADSL, etc).
En el caso que tengamos un IP estático es mejor trabajar con SNAT ya que MASQUERADE genera
mas carga en el procesador.
Cuando se hace MASQUERADE en una conexión estaremos fijando como dirección de destino la
dirección IP que posee la interfaz por donde están saliendo los paquetes. Por lo tanto usar
MASQUERADE solo es válido en la cadena POSTROUTING. El mismo puede usarse con la siguiente
opción ya explicada en el target SNAT.

Manual de Uso de IPTables – Jorge E. Kleinerman 10/11


Opción --to-ports
Ejemplo iptables -t nat -A POSTROUTING -p TCP -j MASQUERADE --to-ports 1024-31000

Target MARK

Este es usado para asociar paquetes a marcas. El mismo solo es valido en la tabla Mangle.
Las marcas son usadas para poder hacer un ruteo mas avanzado y organizado. Cabe aclarar que la
marca solo es mantenida dentro del host y no se debe esperar que la misma permanezca en un paquete
enviado a otro host, ya que es una asociación que se hace dentro del kernel.

Opción --set-mark
Ejemplo iptables -t mangle -A PREROUTING -p tcp --dport 22 -j MARK --set-mark 2
A los paquetes que cumplen las condiciones especificadas se les setea un determinado valor de
Explicación
marca. El valor puede ser un número de 32 bits (tenemos para tirar marcas al techo!!)

Target TOS

El target TOS se usa dentro de la tabla MANGLE solo puede tomar una opción y es la descripta a
continuación

Opción --set-tos
Ejemplo iptables -t mangle -A PREROUTING -p TCP --dport 22 -j TOS --set-tos 0x10
Explicación Setea el valor de TOS, el mismo se pasa en numeración hexadecimal

Target TTL

El target TTL se usa dentro de la tabla MANGLE y sus opciones son:

Opción --ttl-set
Ejemplo iptables -t mangle -A PREROUTING -i eth0 -j TTL --ttl-set 64
Explicación Setea un determinado valor de TTL en los paquetes que cumplen la condición especificada.

Opción --ttl-dec
Ejemplo iptables -t mangle -A PREROUTING -i eth0 -j TTL --ttl-dec 1
Decrementa un determinado valor de TTL en los paquetes que cumplen la condición
Explicación
especificada.

Opción --ttl-inc
Ejemplo iptables -t mangle -A PREROUTING -i eth0 -j TTL --ttl-inc 1
Explicación Incrementa un determinado valor de TTL en los paquetes que cumplen alguna condición.

Manual de Uso de IPTables – Jorge E. Kleinerman 11/11


Protocolo de Aplicación
WhatsApp

Mónica Maset Navarro


1  INTRODUCCIÓN. ............................................................................2 

2  ¿QUÉ ES WHATSAPP? .....................................................................2 

3  XMPP (EXTENSIBLE MESSAGING AND PRESENCE PROTOCOL). .............2 


3.1  PROTOCOLO .................................................................................................. 2 
3.2  ARQUITECTURA .............................................................................................. 3 
3.3  DIRECCIONES ................................................................................................ 4 
3.4  XML .. .................................................................................................... 5 
3.5  PASARELA .................................................................................................... 6 
3.6  SEGURIDAD EN LAS COMUNICACIONES.................................................................... 6 
3.7  MENSAJERÍA INSTANTÁNEA ................................................................................. 7 

4  WHATSAPP VS. CHATON VS. LINE ....................................................8 


4.1  WHATSAPP ................................................................................................... 9 
4.1.1  Ventajas ................................................................................................. 9 
4.1.2  Desventajas .......................................................................................... 10 
4.2  CHATON 2.0 .............................................................................................. 11 
4.2.1  Ventajas ............................................................................................... 11 
4.2.2  Desventajas .......................................................................................... 12 
4.3  LINE .. .................................................................................................. 12 
4.3.1  Ventajas ............................................................................................... 12 
4.3.2  Desventajas .......................................................................................... 13 

5  BIBLIOGRAFÍA. ............................................................................ 13 


1 Introducción.

En este trabajo pretendemos explicar el funcionamiento de la aplicación de mensajería


instantánea WhatsApp a nivel de red, así como compararlo con otras aplicaciones para
ver sus pros y sus contras.

Con la mensajería instantánea se pretende que la distribución y/o intercambio de


información sea inmediata y segura. Para ello se utilizan protocolos, en el caso de
WhatsApp se utiliza el XMPP.

2 ¿Qué es WhatsApp?

WhatsApp messenger Inc., fue fundada por Jan Koronado y por Brian Acton. La
compañía tiene su sede en Silicon Valley.

WhatsApp es un software propietario multiplataforma de mensajería instantánea para


smartphones. Además del envío de texto, permite la transmisión de imágenes, video y
audio, así como la localización del usuario siempre y cuando exista la posibilidad. La
aplicación utiliza la red de datos del dispositivo móvil en el que se esté ejecutando, por
lo tanto funciona conectada a Internet a diferencia de los servicios tradicionales de
mensajes cortos o el sistema de mensajería multimedia.

La aplicación WhatsApp está disponible para los sistemas operativos Windows Phone,
iOS, BlackBerry OS, Android, y los dispositivos que utilizan Symbian de Nokia.

3 XMPP (eXtensible Messaging and Presence Protocol).

3.1 Protocolo
XMPP es un protocolo abierto basado en el estándar XML para el intercambio en tiempo
real de mensajes y presencia entre dos puntos en Internet. La principal aplicación de la
tecnología XMPP es una plataforma extensible de mensajería y una red de MI
(Mensajería Instantánea).
Características:

• Es abierto: el protocolo de XMPP es gratuito, abierto, público y comprensible.


Además, existen múltiples implementaciones de código abierto para Servidores
XMPP, como numerosos clientes y librerías de desarrollo.

• Es libre: XMPP es libre porque no solo se puede ver cómo funciona, sino además
el usuario tiene la libertad de implementarlo él mismo, la libertad de adaptarlo a
sus necesidades, sin necesitar la aprobación de nadie.

Mónica Maset Navarro 2


• Es extensible: usando el potencial del lenguaje XML, cualquiera puede extender
el protocolo de XMPP para una funcionalidad personalizada. Claro que para
mantener la interoperatibilidad, las extensiones comunes son controladas por la
XMPP Software Foundation.

• Es descentralizado: cualquiera puede montar su propio servidor de XMPP,


además está libre de patentes y no depende de ninguna empresa de modo que se
puede usar ahora y siempre con total libertad.

• Es seguro: Soporta seguridad en la capa de transporte y cualquier servidor de


XMPP puede ser aislado de la red pública XMPP. Cualquier implementación del
servidor usa TSL para las comunicaciones cliente-servidor. Además, está en
desarrollo una seguridad más robusta gracias al uso de SASL y contraseñas de
sesión.

Las RFCs que definen el actual protocolo XMPP son las siguientes:

• RFC 3920, especifica las características principales del protocolo XMPP.


• RFC 3921, define los servicios de mensajería instantánea y de presencia previstos
en XMPP.
• RFC 3922, que define una transposición de XMPP a CPIM (RFC 3860, Common
Profile for Instant Messaging);
• RFC 3923, que define un mecanismo extremo a extremo de firma y cifrado de los
objetos.

3.2 Arquitectura
Generalmente, XMPP se implementa y se usa como una arquitectura cliente-servidor
descentralizada, pero puede emplearse XMPP para establecer una comunicación directa,
de extremo a extremo peer-to-peer (P2P), entre los clientes.

Figura: Arquitectura cliente-servidor descentralizada

Mónica Maset Navarro 3


Cuando enviamos un mensaje XMPP a algún contacto en otro dominio, el cliente XMPP
se conecta a nuestro servidor XMPP, y éste se conecta directamente al servidor XMPP de
nuestro contacto, sin realizar múltiples saltos. Ésta implementación de la arquitectura
es mucho más segura porque previene la suplantación de identidad, y hasta cierta
manera, el spam.

Figura: Arquitectura XMPP

En cuanto a los protocolos de transporte que sustentan la comunicación en XMPP,


normalmente tenemos las conexiones puras de TCP, aunque podrían emplearse otros
protocolos que se basan en usos muy particulares del protocolo de aplicación HTTP.

3.3 Direcciones
Cada entidad XMPP necesita tener su propia dirección, llamada JabberID (JID). La JID
tiene el mismo formato que las direcciones de correo, usuario@dominio.
La ventaja de esto es que es mucho más fácil recordar éste tipo de direcciones que si se
utilizara directamente el protocolo IP. Pero éste formato depende completamente de la
infraestructura del DNS.

En el caso de WhatsApp el JID (Jabber ID) utilizado es la concatenación entre el código


del país y el número de teléfono mientras que la creación de la contraseña depende de
la plataforma como hemos explicado anteriormente.

Ejemplo:
JID:34999999999@whatsapp.net

Mónica Maset Navarro 4


3.4 XML
XMPP es en esencia una tecnología para transmitir XML. Cuando iniciamos sesión en un
servidor XMPP, se establece una conexión TCP persistente y luego se negocia los
parámetros para que el servidor pueda establecer otra conexión de retorno. Una vez
establecida la conexión podemos intercambiar mensajes asincrónicamente con el
servidor.

Tipos de etiquetas XML para transmitir los diferentes tipos de mensaje:

• Stream: Es la unidad contenedora de una secuencia de mensajes XMPP.

• Message: Sirve para enviar mensajes entre los usuarios.

• Presence: Para informar la presencia de los usuario. Esto incluye cuando se


conectan, desconectan, cambian de estado o de nombre.

• Iq: Se utiliza para la transmisión de comandos internos. a nueva conexión,


informar de errores y cosas que no tienen nada que ver con los usuarios.

• XEP: Son el conjunto de especificaciones que extienden las diferentes etiquetas


que el protocolo soporta. Por ejemplo, el bloque <presence> es un subconjunto
de directivas IQ empleadas para el control de presencia. Es donde se definen las
extensiones del protocolo tales como: seguridad, intercambio de ficheros, soporte
de VoIP, presencia, etc.

Ejemplo XMPP:

Cliente: <stream:stream>
Cliente: <presence/>
Cliente: <iq type="get">
Cliente: <query xmlns="jabber:iq:roster"/>
Cliente: </iq>
Servidor: <iq type="result">
Servidor: <query xmlns="jabber:iq:roster">
Servidor: <item jid="fscavone@uca.edu.py"/>
Servidor: <item jid="jeuzzarru@jeuzzarru.com"/>
Servidor: </query>
Servidor: </iq>
Cliente: <message from="fscavone@uca.edu.py"
Cliente: to="jeuzzarru@jeuzzarru.com">
Cliente: <body>Esto es un mensaje !</body>
Cliente: </message>
.
.
.
Cliente: <presence type="unavailable"/>
Cliente: </stream:stream>

Mónica Maset Navarro 5


3.5 Pasarela
La red puede tener múltiples clientes y servidores que se comuniquen por XMPP pero,
además, puede contar con una serie de pasarelas o gateways que traducen de XMPP a
otros protocolos de mensajería instantánea de diferentes redes como Windows Live
MEssenger, ICQ, Yahoo! Messenger, SMS, Email u otros. Es posible, por tanto,
comunicar usuarios de redes XMPP con redes de otros protocolos de mensajería
instantánea, y viceversa, siempre que existan dichos gateways. XMPP, además de
gestionar el envío de paquetes XML hacia los clientes y/o hacia otros servidores de otras
redes, también es capaz de intercambiar paquetes entre varios servidores XMPP. Para
esta función, la IANA (Internet Assigned Numbers) tiene reservado el puerto TCP 5269.
Los clientes XMPP utilizan el puerto TCP 5222 para iniciar sesión.

3.6 Seguridad en las comunicaciones


Las comunicaciones XMPP entre clientes y servidores están implementadas con
seguridad principalmente a través de dos mecanismos: El protocolo TLS (Transport
Layer Security) aplicado a la capa de transporte y el protocolo SASL (Simple
Authentication and Security Layer) aplicado a la capa de seguridad y autenticación
simple.

El protocolo TLS es un protocolo para establecer una conexión segura entre un cliente y
un servidor, o entre dos servidores. TLS es capaz de autenticar en ambos lados de la
comunicación, y crea una conexión cifrada entre los dos.
La principal propiedad del protocolo TLS, es ofrecer privacidad e integridad de los datos,
entre dos aplicaciones que se comunican; el protocolo está compuesto por dos capas, el
TLS Record Protocol y el TLS Handshake Protocol.
El TLS Record Protocol ofrece seguridad en las conexiones y el El TLS Record Protocol,
es utilizado para la encapsulación de varios protocolos de nivel superior.

Si las conversaciones no estuvieran cifradas sería muy fácil un ataque y podría hacer
que se interceptaran de forma fácil las conversaciones.
Este tipo de ataques son muy simples, con una herramienta de análisis de redes y
protocolos como puede ser Wireshark, de hecho existe una versión para WhatsApp
llamada WhatsApp Xtract, se puede interceptar una conversación entre dos usuarios.
Si el servidor XMPP tiene habilitada la seguridad TLS, la captura de estos mensajes ya
no es por lo menos tan fácil de conseguir.

SASL provee a XMPP de un método generalizado para la autenticación. Para ello se han
aplicado ciertas normas:
• Si la autenticación SASL se da entre dos servidores, la comunicación no se
establecerá hasta que cada servidor se asegure de la auténtica DNS del otro.
• Si quien quiere autenticarse soporta SASL, deberá incluir el atributo ‘version’ con
el valor ‘1.0’ por lo menos, en la cabecera del stream inicial.
• Si el servidor soporta SASL, deberá informar de sus tipos de autentificaciones con
la etiqueta <mechanisms/> en la contestación de la etiqueta de inicio de sesión,
si es que el cliente soporta la conexión SASL.

Mónica Maset Navarro 6


• Durante la negociación SASL, ninguno de los dos deberá enviar algún carácter en
blanco como separación entre elementos, esta prohibición ayuda a asegurar la
precisión a nivel de byte.
• Cualquier carácter XML contenido en los elementos XML deberá estar codificado
usando el algoritmo base64 (Algoritmo de codificación binaria de textos).

El proceso de autentificación mediante SASL sería el siguiente:

• La entidad que pida una autentificación SASL deberá incluir el atributo ‘version’
en la etiqueta de inicio de sesión enviada al servidor con el valor ‘1.0’ como
mínimo.
• Cuando el servidor recibe la etiqueta de inicio de sesión con el atributo ‘version’
deberá comunicar los tipos de autentificación SASL que implementa, cada uno de
ellos irá dentro de un hijo del tipo <mechanisms/>.
• El cliente deberá seleccionar uno de los mecanismos enviando el elemento
<auth/> con un valor adecuado para el mecanismo de autentificación SASL
elegido. Si el cliente debe responder con un elemento vacío, responderá con el
carácter ‘=’, que indicará que la respuesta no contiene datos.
• Si fuera necesario, el servidor enviará el elemento <challenge/> al cliente que
contendrá datos en formato XML, esto dependerá del tipo de autentificación SASL
que el cliente haya elegido.
• El cliente responderá al “desafío” enviando la etiqueta <response/> al servidor.
• Si fuera necesario el servidor enviaría más elementos <challenge/> y el cliente
respondería a los mismos.

Ejemplo de challenge para Whatsapp ya formado que es enviado por el cliente para
finalizar la autenticación:

username="34666666666",
realm="s.whatsapp.net",
nonce="1438536309",
cnonce="E0487DC6-6D1A-4A67-AV70-3299TD89O29A",
nc=00000001,
qop=auth,
digest-uri="xmpp/s.whatsapp.net",
response=b98d50c159a938723d8eb8f3039afab2,
charset=utf-8

3.7 Mensajería instantánea


Los mensajes son la parte más importante de cualquier sistema de mensajería
instantánea.
XMPP es un protocolo muy orientado a los mensajes, que pueden ser de seis tipos
diferentes:
• Normal: que serían mensajes parecidos a los del correo electrónico.
• Chat: mensajes persona a persona que serían los mensajes utilizados en una
conversación entre dos personas.
• Groupchat: mensajes enviados a un grupo de personas.
• Headline: que serían los mensajes de marquesina.
• Error: para los mensajes de error.

Mónica Maset Navarro 7


• Jabber:x:oob: para las conexiones directas entre clientes para envío de archivos.

Los cinco primeros son los tipos más normales de mensajes en los sistemas XMPP. Los
mensajes ‘jabber:x:oob’ se denominan out-of-band messages, y facilitan un mecanismo
para intercambio de datos directamente entre dos usuarios, estos mensajes usan el
servidor XMPP para intercambiar datos de la conexión entre los dos clientes,
normalmente el usuario que va a servir un fichero enviaría un mensaje de este tipo al
otro cliente con la IP y el puerto al que se debe conectar el cliente que va a descargarse
el fichero. Se pueden enviar etiquetas de ‘oob’ dentro de la extensión ‘x’ de un mensaje
normal, o empaquetadas dentro de un paquete del tipo Info/Query

Ejemplo mensajes Whatsapp:

Envio de mensaje a un grupo

tx <message to="85211111111-1361334152@g.us" type="chat" id="1361334152-


1361334152-0001" t="1361334152">
tx <x xmlns="jabber:x:event">
tx <server></server>
tx </x>
tx <notify xmlns="urn:xmpp:whatsapp" name="HELLO"></notify>
tx <request xmlns="urn:xmpp:receipts"></request>
tx <body>2013-02-20 12:22:31 ^_^</body>
tx </message>

Respuesta del mensaje de un grupo

rx <presence from="85211111111-1361334152@g.us" type="available" xmlns="w"


add="85211111111@s.whatsapp.net"></presence>

rx <message from="85211111111-1361334152@g.us" id="1361334152-1361334152-0001"


type="chat" t="1361334153">
rx <x xmlns="jabber:x:event">
rx <id>1361334152-1361334152-0001</id>
rx <server></server>
rx </x>
rx </message>

4 WhatsApp vs. ChatON vs. LINE


WhatsApp en la actualidad tiene la hegemonía de los clientes de mensajería para
smartphone, por ser el pionero en este tipo de mensajería. Aunque hay varias
aplicaciones que le han querido plantar cara, pero sólo unas pocas le siguen.

Queremos destacar como rivales de WhatsApp a LINE y ChatON 2.0. El por qué es fácil,
la primera por ser la que más terreno le ha comido en usuarios a WhatsApp,
posicionándose como una alternativa real y palpable, y ChatOn porque no podemos
obviar que también tiene una importante cuota de usuarios ya que se distribuye con
terminales Samsung, principal fabricante en estos momentos de terminales Android.

Mónica Maset Navarro 8


Y como decíamos son muchos los que se quedan por el camino, como por ejemplo
Spotbros, Joyn, Viber, PingMe y muchas más. De poco sirve que una aplicación tenga
muchísimas más ventajas que la que usamos de manera habitual si nos falta lo más
importante, nuestros contactos. Es ahí donde está la clave del éxito y es donde quizá
haya hecho mejor el trabajo LINE, cuyo ritmo ascendente ha sido fruto de un buen
trabajo de marketing pero sobre todo del boca a boca en el momento oportuno.

Todos ellos tienen sus pros y sus contras, sus defectos y sus virtudes pero sin duda son
tres opciones a tener en cuenta.

WhatsApp sigue sufriendo cierta inestabilidad en su plataforma y no ha aportado


demasiadas mejoras. A todo esto le podemos sumar que tras promocionarse durante
bastante tiempo entre los usuarios de Android con el servicio totalmente gratuito, este
2013 podría empezar a recortar las promociones y cobrar el servicio como a los usuarios
de iOS y Blackberry. Mientras que LINE sigue ganando terreno y expandiéndose y
ChatON tiene detrás un gigante como Samsung y una distribución inmensa. Siendo los
dos totalmente gratuitos.

Así que vamos a tratar de analizar cuales son las ventajas y las desventajas que tienen
cada uno de ellos.

4.1 WhatsApp

WhatsApp ha revolucionado el mundo de la telefonía móvil, haciendo que el mercado de


las telecomunicaciones esté evolucionado tanto a nivel de terminales (smartphones)
como a nivel de operadoras (más centradas en tarifas de datos que de voz). Además su
nivel de popularidad es enorme, quien no conoce o ha oído hablar de su existencia,
tiene aproximadamente 100 millones de usuarios.

4.1.1 Ventajas
Su principal ventaja se puede decir que es la gran cantidad de usuarios que tiene, es lo
que hace que la aplicación tenga sentido y utilidad. Es un cliente de mensajería
realmente intuitivo, con las opciones justas y necesarias y que es fácil de manejar y
habituarse. Podemos compartir imágenes, vídeos o notas de voz. Crear grupos con
nuestros contactos, se asocia con nuestro número de teléfono y no tenemos que hacer
prácticamente nada para tener agregados más contactos. Es personalizable en muchos
aspectos como los fondos, los tonos y es posible silenciar a contactos y conversaciones.
El hecho de que se encuentre prácticamente en cualquier plataforma móvil es lo que lo
hace realmente indispensable, puesto que no tendremos límites a la hora de
comunicarnos con cualquier persona sin necesidad de que tenga que disponer de una
plataforma determinada. Existe para Android, iOS, Blackberry, Windows Phone y
Symbian. Esta versatilidad sin duda es otro de los puntos fuertes de WhatsApp.
Un servicio que ya está tan extendido, que es raro encontrar alguien que tenga
smartphone y no lo tenga instalado. La entrada de WhatsApp ha supuesto unas
pérdidas millonarias para las operadoras móviles, lo que significa un ahorro más que
considerable para nuestros bolsillos.

Mónica Maset Navarro 9


4.1.2 Desventajas
Desgraciadamente para nosotros, los usuarios, no existe el servicio perfecto. Y
WhatsApp aunque goza de buenas ventajas también son muchos sus inconvenientes. A
nivel de seguridad cabe destacar los problemas que todavía padece, el protocolo usado
para enviar información entre usuarios se llama XMPP, que incluye el protocolo de
seguridad TLS (Transport Layer Security) para transacciones electrónicas seguras. El
problema radica en que estaba configurado por defecto para NO utilizar cifrado, con lo
que todos los datos intercambiados estaban en texto llano, accesibles a cualquiera con
programas para capturar paquetes de datos.
Tras una serie de críticas acerca de su seguridad, la red de mensajes WhatsApp anunció
que en lo sucesivo los mensajes de sus usuarios estarían cifrados. Ahora bien, surgió el
problema de siempre: ¿qué claves utilizar, y sobre todo, cómo repartirlas entre todos
los clientes? La solución de WhatsApp para los móviles con sistema operativo Android
fue tomar el IMEI (un código de identificación único para cada teléfono), invertirlo y
aplicarle la función hash MD5 (Message-Digest Algorithm 5). En el caso de iOS el cifrado
se obtiene haciendo el mismo hash MD5 de la dirección MAC del terminal repetida dos
veces. El resultado es la clave de cifrado. En cuanto al nombre de usuario, es
sencillamente el número de teléfono.

Ejemplo MD5 para Android:


md5(strrev(‘your-imei-goes-here’))

Ejemplo MD5 para iOS:


md5(AA:BB:CC:DD:EE:FFAA:BB:CC:DD:EE:FF)

Con un sistema tan sencillo, WhatsApp permite generar tráfico cifrado y evitar los
problemas derivados de diseminar millones de contraseñas. Podemos observar que el
sistema de generación de claves es altamente inseguro. Cualquier persona con acceso a
un teléfono ajeno puede obtener su IMEI sin más que pulsar la secuencia *#06#. Un
atacante más sigiloso puede crear una aplicación que filtre ese dato, o bien atacar
directamente a la empresa telefónica y robarle su base de datos de usuarios.

Las desgracias criptográficas de WhatsApp no acaban aquí. El programa almacena en el


dispositivo del usuario gran cantidad de información de forma insegura. Datos como los
“logs” de todos los mensajes enviados y recibidos, la información de los contactos y
hasta las coordenadas de geolocalización (si el GPS está activado) se guardan en dos
archivos sin cifrado en absoluto.

Para rematar la faena, la versión para Android guarda un fichero adicional que funciona
como copia de seguridad (backup). Se supone que ese fichero está cifrado con el
algoritmo AES(Advanced Encryption Standard) mediante una clave de 192 bits. Sólo
hay dos problemillas. El primero es que la clave está insertada en el propio paquete de
software de WhatsApp. Y el segundo es que todos los móviles Android del mundo
utilizan la misma clave. Ni siquiera añaden algún factor dependiente del móvil. Esta es
la clave:

346a23652a46392b4d73257c67317e352e3372482177652c

Mónica Maset Navarro 10


Evidentemente, no es una contraseña fácil de adivinar, pero buscando por Internet la
tenemos. A partir de ahora, la seguridad que proporciona es la misma que la de toda
contraseña una vez descubierta y revelada: cero.

Si unimos inseguridad a una plataforma bastante inestable, realmente nos queda una
aplicación un poco coja. Últimamente WhatsApp ha tenido bastantes interrupciones en
el servicio.
Otra de las debilidades de WhatsApp es su escasa o nula innovación. La aplicación
prácticamente permanece igual que cuando salió. Sigue cumpliendo con su principal
función, pero habiendo alternativas mucho mejores y con más amplitud de miras lo
único que está sosteniendo a WhatsApp es su enorme cantidad de usuarios.
Una cantidad importante que reclama mejoras y novedades y que WhatsApp no
escucha, cosa que sus perseguidores si que hacen en su amplia mayoría. Disponer de
un cliente para PC, Mac y Linux, llamadas por voip o que se pueda usar tanto en
smartpone como tablet, son algunas de las reclamaciones que muchísimos usuarios han
pedido y de las que no se ha obtenido respuesta.
WhatsApp sigue reinando pero seguido cada vez más cerca por alternativas más
competentes y con más funciones. Quizá se haya acomodado durante este tiempo,
quizá tengan una idea muy concreta de negocio. Lo que está claro es que sigue siendo
la opción principal para muchísimos usuarios y con algunas mejoras puede seguir siendo
el imprescindible que es actualmente.

4.2 ChatON 2.0


Con poco más de un año de existencia, ChatON de la mano de Samsung (viene
instalado de serie en sus terminales) ha decidido ir un poco más allá que WhatsApp,
aportándole más funciones y facilidades a un cliente de mensajería muy enfocado hacia
sus terminales pero que es funcional en las principales plataformas smartphone.
Teniendo en cuenta que la clave principal son los usuarios, ChatON es gratuito,
multiplataforma y muy atractivo para el usuario.

4.2.1 Ventajas
Son muchas las características que hacen de ChatON un servicio interesante. Además
de las funciones más básicas como son las conversaciones con contactos, compartir
multimedia como fotos, vídeos o voz, también dispone de mensajes animados,
funciones sociales como ranking de amigos con más actividad o un “baúl” virtual donde
encontrar todo aquello que hemos compartido en un grupo. También la función walkie-
talkie es realmente útil y divertida para mantener conversaciones con nuestros
contactos.
Pero sin duda sus puntos más fuertes son tanto el cliente web del que dispone
(https://web.samsungchaton.com/), con el que podemos disfrutar del servicio estemos
donde estemos, y también el hecho de que sea instalable en cualquier dispositivo, ya
sea móvil o tablet. Algo de lo que no se dispone en WhatsApp, y que es realmente
interesante tener. El cliente web permite cierta independencia de uso y el hecho de que
no tengamos limitación alguna para poder usarlo alternando tablet y móvil también
hace que gane muchos puntos a favor. A diferencia del cliente web de WhatsApp
(WebSapp) que funciona pésimamente, cuando funciona.
Es gratuita y muy estable, fácil y bastante intuitiva en el uso normal y disponible tanto

Mónica Maset Navarro 11


para Android como para iOs, Blackberry, Windows Phone o Bada. ChatON es una
aplicación bastante ligera, segura (tiene alto cifrado en sus comunicaciones) y es
gratuita.

4.2.2 Desventajas
Una de las principales, al igual que todos los clientes de mensajería, es la gran cantidad
de usuarios que utilizan WhatsApp y por tanto convencerles de utilizar una aplicación
diferente. La suerte de ChatON es que viene preinstalado en los terminales Samsung, y
no son pocas las unidades que vende actualmente la compañía, pero aún así muchos
prefieren seguir utilizando WhatsApp.
Pero ChatON también tiene un diseño excesivamente minimalista y sin gran atractivo,
que hace que desmerezca mucho y que las funciones extra que tiene respecto a
WhatsApp queden algo más escondidas. Todo y que es realmente intuitiva, sacarle buen
provecho cuesta algo más y no se le acaba de ver todo el potencial. Es como que vive
eternamente en una fase Beta. Sigue sin cautivar al usuario.
Para muchos también echa para atrás el hecho de que sea Samsung la desarrolladora
de la aplicación, evidentemente como en todo siempre hay quien simpatiza más o
menos con la marca y esto influye mucho a la hora de adoptar una aplicación como
sistema de comunicación habitual.
ChatON en menor medida, también sufre algunos problemas en su plataforma, y sobre
todo los sufre con la sincronización, cosa que le quita estabilidad. El consumo de batería
también se puede ver afectado en cierta medida y así lo manifiestan muchos usuarios
con distintos terminales.

4.3 Line
De todas las alternativas, Line ha crecido rápidamente (89 millones de usuarios, lo cual
amenaza la hegemonía de WhatsApp) con una fórmula simple: diferenciarse del resto.
Los Stickers o iconos han sido una de las piezas fundamentales que han disparado LINE.
Sin duda otra de las bazas con las que juega LINE es el uso de llamadas Voip, algo que
ya tienen otras aplicaciones pero es un extra para esta. No son pocos los que han
adoptado LINE por esta combinación de llamadas, mensajería y otras ventajas. También
hay mucha gente que no termina de adaptarse a ella ya que tiene sus particularidades.
De origen Japonés, y precedida de gran éxito tanto en su tierra como en el resto de
Asia, LINE goza de una plataforma muy estable y gratuito. Se sustenta con pagos in-
app por ejemplo para adquirir más stickers o obtener otras ventajas dentro de la
aplicación. Una fórmula muy interesante y que les está produciendo beneficios sin
sacrificar funciones o añadir publicidad.

4.3.1 Ventajas
Al igual que WhatsApp y ChatON, con LINE disfrutamos también de todas las ventajas
de un cliente de mensajería, con los chats individuales o en grupos (de usuarios
ilimitados), compartir fotos y mensajes de voz, las pegatinas e iconitos divertidos y
unas cuantas funciones dentro de la aplicación como juegos, salas de chat al estilo IRC,
herramientas y una cámara específica con efectos. Muchísimas opciones dentro de la
misma aplicación que la hacen mucho más completa que el resto.
Las llamadas a contactos por medio del Voip es también una de las ventajas más
sonadas de LINE, y es que la palabra gratis es muy potente y el hecho de poder llamar
así (aunque depende de la tarifa de datos que tengas no es tan gratis) la hacen muy

Mónica Maset Navarro 12


atractiva. Es una función que incorporan muchas aplicaciones como Viber, pero quizá el
hecho de que LINE haya crecido tanto y esté más extendida haya hecho que sea más
popular que el resto. También incorpora muchas funciones sociales, como una especie
de Timeline particular en el que podemos compartir cosas como si fuera nuestra cuenta
de Twitter.
LINE tiene en la misma aplicación prácticamente todo lo que uno necesita para
comunicarse, divertirse y estar entretenido. Y lo mejor sin duda es disponer de un
cliente para PC y para Mac con el que poder usar de la misma manera la aplicación,
poder mantener conversaciones o hacer llamadas a través del ordenador. Un reclamo
ineludible para todos aquellos que reclaman lo mismo para WhatsApp. Con LINE es muy
sencillo y no necesitamos tener asociado un número de teléfono.
El cifrado de las comunicaciones es bastante superior a WhatsApp (cualquier alternativa
con un cifrado estándar ya lo es), y la plataforma es muy estable, y eso que el volumen
de usuarios está creciendo a un ritmo importante últimamente. Es multiplataforma (iOS,
Android, Windows Phone) y ofrece bastante más que el resto.

4.3.2 Desventajas
Aunque tiene muchas ventajas, padece una gran desventaja, es el consumo excesivo de
batería, algo que eclipsa a la aplicación.

Otra de las desventajas es precisamente su diseño y sus funciones, mucho adorno y


poca “chicha”, con un diseño muy enfocado a un público particular más tirando al
adolescente que al usuario medio, muy aniñada vamos.

Indudablemente el fallo principal es la optimización del consumo de batería, que está


causando estragos en algunos usuarios, mientras que otros no lo notan tanto. Por lo
demás LINE se está posicionando claramente como la alternativa más real a WhatsApp
que hasta el momento ha aparecido. Muchos usuarios se están cambiando y si eres un
poco incrédulo consulta cuántos contactos tienes ya en LINE y cuántos has tenido en
otras alternativas. Aunque parece enfocada hacia un público más joven, y quizá tenga
demasiadas pijaditas no cabe duda de que LINE se está posicionando muy bien
aprovechando las oportunidades y debilidades que WhatsApp tiene.

5 Bibliografía.

http://www.elandroidelibre.com/2013/01/comparativa-de-servicios-de-
mensajeria-line-vs-WhatsApp-vs-chaton-2-0.html

http://www.xmpp.org

http://oriolrius.cat/blog/wp-
content/uploads/2009/10/Oreilly.XMPP.The.Definitive.Guide.May.2009.pdf

http://www.whatsapp.com

Mónica Maset Navarro 13


http://es.wikipedia.org/wiki/WhatsApp

http://www.securitybydefault.com/2011/03/whatsapp-y-su-seguridad-
pwn3d.html

https://github.com/venomous0x/WhatsAPI/issues/278

Mónica Maset Navarro 14


MIM - Man in the middle
Seguridad Informática
Qué es un ataque “Man in The Middle”
Es un tipo de amenaza que se aprovecha de un intermediario. El
atacante en este caso, tiene la habilidad de desviar o controlar las
comunicaciones entre dos partes.
Por correo
Por ejemplo, si se tratase de
un ataque MITM a tu correo,
el perpetrador podría desviar
todos los e-mails a una
dirección alterna para leer o
alterar toda la información
antes de enviarla al
destinatario correcto.
Cómo se hace?
Para este tipo de ataques se necesitan Lo primero que vamos a hacer es abrir el
dos máquinas víctima, que bien podría ser Ettercap-graphical en Kali y el WireShark.
el servidor y un equipo de una red Este último programa es un potente
empresarial, o bien el router y el equipo sniffer de red, muy útil para los que
de nuestra víctima real, además de trabajamos administrando redes
nuestro propio equipo. informáticas, ya sea para ver posibles
ataques, o simplemente para tener un
mayor control del tráfico de red, e incluso
diagnosticar problemas de red por exceso
de tráfico.
Para abrirlo vamos a Aplicaciones, Kali Linux, Husmeando,
Envenenamiento de redes y ettercal-graphical. El WireShark dispone de
una guía de uso en la sección Manuales.
En el menú Sniff, pulsamos sobre Unfied sniffing.
Ahora nos aparecerán nuevos menús. Le Una vez finalizado, que no tarda apenas,
damos a Hosts y Scan for hosts para ver damos de nuevo al menú Hosts y a Hosts
que equipos existen en ese rango de IPs. list para que nos muestre que equipos a
encontrado.
Encuentra los equipos de la red, Ahora debemos añadir objetivos, en este
mostrando sus IP y sus direcciones MAC caso es muy simple, ya que sólo he
de las tarjetas de red de cada equipo. levantado dos máquinas virtuales a parte
Como verán, la MAC siempre es diferente, de la atacante. Simplemente marcamos
no existen dos iguales salvo que una de las dos víctimas y le damos al
cambiemos una virtualizando esa botón Add to Target1. Después marcamos
dirección para falsearla. Lógicamente las la otra víctima y damos al botón Add to
IP deben ser también diferentes o target 2.
tendrían problemas de conexión.
Ahora vamos a realizar un Ahora dejamos nuestro sniffer esnifando
envenenamiento del protocolo ARP para el tráfico. Damos a Start y a Start sniffing.
que las víctimas se crean que soy la otra
máquina de su red y me manden a mí su
tráfico. Damos al manú Mitm y a Arp
poisoning.
Vamos al XP y ejecutamos el comando La dirección IP acabada en 21 es la
arp –a para ver que esté correcto. Esto se atacante, en este caso la Kali Linux. En la
hace en Inicio, Ejecutar y escribimos CMD. primera ejecución vemos que el Kali y el
Nos saldrá la pantalla negra o consola Windows Server tienen diferentes IP y
donde vemos la diferencia del uso del diferentes direcciones MAC. Tras la
comando arp –a antes y después del ejecución del mismo comando tras el
envenenamiento. envenenamiento ARP, vemos que el
Windows XP cree que el Windows Server
tiene la dirección MAC del Kali
Vamos ahora al Wireshark y lo ponemos a Ahora vamos a crear un archivo iptable.sh
esnifar. en la carpeta home o personal del root
para permitir que todo el tráfico pase por
Lanzamos un ping desde la terminal del el Kali, para eso creamos unas rutas en el
Windows XP al Servidor de Windows iptable o firewall por defecto del Kali
(comando: ping 192.168.20.31). Vemos Linux. Esto también se puede hacer con el
como las IP que aparecen sólo son del XP comando nano iptables.sh
y el Servidor, no aparece el atacante por
ningún lado.
Le copiamos lo siguiente dentro del
archivo iptables.sh que hemos creado.
Podemos hacerlo por entorno gráfico o
desde línea de comandos con un editor,
por ejemplo el Nano con el comando sudo
nano iptables.sh desde el directorio donde
deseemos crearlo.
Le cambiamos los permisos al archivo creado para evitar problemas desde la terminal de
comandos del Kali.

Ahora pasamos al Ettercap.

Ejecutamos el archivo creado.


Añadimos las dos direcciones como target Hacemos un sslstrip desde la consola de
1 y 2 y hacemos el envenenamiento ARP comandos del Kali para que las webs SSL
como antes y volvemos a esnifar como ya (https) se conviertan en simples http y el
hemos hecho. Ettercap pueda obtener las contraseñas.
Para ello escribimos lo siguiente.
Ataque cómo tal
Ya con todas estas instrucciones, podemos realizar la infiltración de la
información de la IP qué hayamos decidido atacar.

Ahora vamos al Windows XP y entramos por ejemplo a la web de


Instagram.
Nos ingresamos con un usuario y Nos vamos al Ettercap y vemos el enlace
contraseña ficticia para ver que funcione. del Instagram, usuario y contraseña, en
este caso cursoseguridad y Seguridad.
Cómo Defenderse?
Existen diferentes formas efectivas para Este método de defensa usa un sistema
defendernos de los ataques MiTM, pero la de cifrado fuerte entre el cliente y el
mayoría de ellas usan un router/ servidor servidor. En este caso, el servidor se
y no permiten que el usuario controle la verifica a sí mismo presentando un
seguridad de la transacción que realiza. certificado digital y se establece un canal
cifrado entre el cliente y el servidor a
través del que se envía la información
confidencial. Además, los usuarios pueden
protegerse de estos ataques evitando
conectarse a routers WiFi abiertos o
usando plugins de navegador como HTTPS
Everywhere o ForceTLS
Detección del Ataque:
Es difícil detectar este tipo de ACCESO A LA MÁQUINA:
aplicaciones (wireshark o cain), ya que
son programas que trabajan de manera El más improbable de los casos, si tenemos
acceso físico a las máquinas que forman parte de
pasiva, y no dejan huellas, la mayor parte
la red y podemos ver para cada una la lista de
de la información que circula en la red se aplicaciones y procesos activos, podríamos
hace en texto plano, pudiendo acceder detectar si existe algún proceso que pueda ser
desde cualquier ordenador de una misma de tipo sniffer. A veces estos mismos se ejecutan
red, mediante un simple sniffer: al momento de iniciar la PC o bien cuentan con
alguna entrada en el registro del sistema.

Por ejemplo, Wireshark en el registro:


HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Uninstall\Wireshark.
Detección del Ataque:
PRUEBA DE ICMP PRUEBA DE ARP

Realizar un ping a la dirección IP que deseemos Consiste en hacer una petición tipo ICMP echo
para analizar el retardo de los paquetes. Una vez (ping) a la dirección IP que queramos pero con
visto el resultado, creamos conexiones TCP falsas una MAC errónea. Esto mediante los comandos
en esa red durante un período de tiempo, Si que nos ofrece ARP, ejemplo:
cuando volvemos a analizar el retardo del ping
vemos que el tiempo en milisegundos aumenta Arp –s [IP] [MAC]
considerablemente, es posible que tengamos un
sniffer en nuestra red. Se sobreentiende que la MAC es falsa, si
posteriormente tecleamos arp –a(muestra el
contenido de la tabla)

Si la MAC es incorrecta el paquete enviado no


debería de llegar a su destino, en algunos
sistemas, al estar en modo promiscuo debido a la
utilización de un sniffer, este atenderá el
paquete.
Aplicaciones para Detectar Protección Frente a
Sniffers: Sniffers:
1.- Antisnif (creada para Windows y Unix) realiza una ejecución La mejor protección frente a los sniffers es proteger la
para verificar si se ejecuta algo en modo promiscuo, utiliza información mediante algún tipo de cifrado.
técnicas de DNS ping de latencia y tests de ARP.
Técnicas de encriptación que cifran y descifran la información de
2.- Sentinel (Hace uso de librerías Libcap y Libnet). manejar segura.

3.- CPM Algunas tecnicas:

4.- SniffDet 1.- PGP (Pretty Good Privacy): Uso de clave pública y clave
privada.
5.- NEPED
2.- SSL (Secure Socked Layer): proporciona autenticación
6.- Promiscan privada en páginas web mediante protocolo https.

7.- ProDETECT 3.- SSH (Secure Shell): Conexión remota a terminales de


manera segura.
Sql Injection.
Inyección SQL
Inyección SQL es un método de
Sql Injection.
infiltración de código intruso que se vale
de una vulnerabilidad
informática presente en una aplicación en
el nivel de validación de las entradas
para realizar operaciones sobre una base
de datos. El origen de la vulnerabilidad
radica en la incorrecta comprobación o
filtrado de las variables utilizadas en un
programa que contiene, o bien genera,
código SQL. Es, de hecho, un error de una
clase más general de vulnerabilidades
que puede ocurrir en cualquier lenguaje
de programación o script que esté
Se dice que existe o se produjo una
Sql Injection.
inyección SQL cuando, de alguna manera,
se inserta o "inyecta" código SQL invasor
dentro del código SQL programado Este
tipo de intrusión normalmente es de
carácter malicioso, dañino o espía

Si el operador escribe un nombre, por ejemplo "Alicia", nada anormal


sucederá, la aplicación generaría una sentencia SQL similar a la siguiente, que
es perfectamente correcta, en donde se seleccionarían todos los registros con
el nombre "Alicia" en la base de datos
Pero si un operador malintencionado escribe como nombre de
usuario a consultarSql Injection.

se generaría la siguiente consulta SQL, (el color verde es lo que pretende


el programador, el azul es el dato, y el rojo, el código SQL inyectado):
Inyección SQL Ciega
Sql Injection.
Ataque a ciegas por inyección SQL, en inglés, Blind SQL injection,
es una técnica de ataque que utiliza la inyección SQL. Se
evidencia cuando en una página web, por una falla de seguridad,
no se muestran mensajes de error al no producirse resultados
correctos ante una consulta a la base de datos, mostrándose
siempre el mismo contenido (es decir, solo hay respuesta si el
resultado es correcto).

Existen programas que automatizan este proceso de “tanteos”


letra
Esta por letra en
técnica se elusa
resultado
cuandodeuna
la consulta
web noSQL, que unlos
muestra intruso
típicos
podría enviar
mensajes de inyectado.
error de datos, al no haber un resultado positivo en
una consulta especifica, o sea que solo se enviará una respuesta
por parte del servidor se el resultado es correcto. Es por ello
sentencias que contengan entre sus condiciones valores
comparativos como 1=1 o 0=1 ofrecen respuestas, bien sea
respuestas negativas o positivas, esta es la base de esta técnica
de inyección SQL.
Sql Injection.
Algunas formas de inyectar código a ciegas en distintos gestores:

Microsoft SQL Server:

http://server/ejemplo.php?id=35; if (exists(select * from Passwords))


waitfor delay ‘0:0:8’— 

Mysql_

http://server/ejemplo.php?id=35 and exists(select * from Passwords


and benchmark(8000000,md5(rand()))=0

Mysql (Versión 5)

http://server/ejemplo.asp?id=35 and exists(select * from Passwords)


and sleep(8)

Oracle:

http://server/ejemplo.php?id=1; begin if (exists(select * from


Passwords)) then dbms_lock.sleep(8); end if; end;
Sql Injection.
2
El usuario MALICIOSO modifica el
La aplicación recibe la solicitud y
consulta la BD para obtener el
1 envío Get (por ejemplo), colocando resultado, es decir, realiza una
en la url la sentencia SQL consulta SQL MODIFICADA POR EL
ATACANTE
http://www.pagina.com/producto.php?ID=10 UNION SELECT SHOW
DATABASE()

La Base de Datos ejecuta la


sentencia SQL y devuelve el
4 El usuario recibe el resultado 3 resultado. POR LO GENERAL
mostrado por la aplicación SQL
DEVUELVE INFORMACIÓN
CONFINDECIAL
Como Sqlencontrar
Injection. una
Vulnerabilidad de inyección
SQL.

Es un procedimiento muy sencillo no


es necesario utilizar un programa
unicamente con un navegador de
preferencia Google o San Google
como lo conocen algunos
informáticos ya que este navegador
tiene la capacidad de indexar todas
las paginas de internet con una
coincidencia.
En el navegador escribir lo siguiente.
php?id=
Sql Injection.
Esto generara varias respuestas.
Abrimos cualquier pagina que se
Sql Injection.
encuentre en los resultados. Y al final de
php?id= agregara un numero por ejemplo
200 y le agregamos 200'
Nos aparecera el siguiente error , este
Sql Injection.
error nos indicara que la pagina cuenta
con una vulnerabilidad. El error que debe
presentar es el siguiente.
Como funciona el ataque SQL Injection?
Como
Sql
se
Injection.
indico anteriormente
agregandole una comilla
Se dice que existe o se produjo
una inyección SQL cuando, de alguna
Sql Injection.
manera, se inserta o "inyecta" código SQL
invasor dentro del código SQL programado,
a fin de alterar el funcionamiento normal
del programa y lograr así que se ejecute la
porción de código "invasor" incrustado, en
la base de datos.
Este tipo de intrusión normalmente es de
carácter malicioso, dañino o espía, por
tanto es un problema de seguridad
informática, y debe ser tomado en cuenta
por el programador de la aplicación para
poder prevenirlo. Un programa elaborado
con descuido, displicencia o con ignorancia
Se dice que existe o se produjo
una inyección SQL cuando, de alguna
Sql Injection.
manera, se inserta o "inyecta" código SQL
invasor dentro del código SQL programado,
a fin de alterar el funcionamiento normal
del programa y lograr así que se ejecute la
porción de código "invasor" incrustado, en
la base de datos.
Este tipo de intrusión normalmente es de
carácter malicioso, dañino o espía, por
tanto es un problema de seguridad
informática, y debe ser tomado en cuenta
por el programador de la aplicación para
poder prevenirlo. Un programa elaborado
con descuido, displicencia o con ignorancia
Que se puede obtener de una inyección
SQL.
Acceder al Sql Injection.
panel administrativo de una
pagina web. Modificar el diseño robar
informacion de la base de datos.
Un ejemplo de un panel de administración.

Sql Injection.
Un ejemplo de un panel de administración.

Sql Injection.
Sql Injection.
Como realizar un ataque de inyeccion
sql en kali.
En kali linux utilizaremos sql map. En el
comando U escribiremos la direccion de la
pagina web vulnerable ejecutamos y
realizara su trabajo.
Con esto obtendremos el nombre de la
base de SqldatosInjection.
o bases de datos
disponibles.
Sql Injection.
Apuntaremos hacia la base de datos para
obtener las tablas. Al final debemos de
agregar –tables. Ya que eso es nuestro
objetivo.
Sql Injection.
Apuntaremos hacia la base de datos para
obtener las tablas. Al final debemos de
agregar –tables. Ya que eso es nuestro
objetivo.
Apuntaremos hacia la base de datos para
obtener lasSql Injection.
tablas. Al final debemos de
agregar –tables. Ya que eso es nuestro
objetivo. Y la que necesitamos es la del
administrador para acceder al panel de
administrador.
Extraeremos los datos de la tabla
webmaster. Sql Injection.
El comando que se usa es el
siguiente sqlmap u(se refiere a la url)
(pagina vulnerable) –D (datos) –T la tabla –
C (usuario, el de acceso, contraseña la que
se necesita –Dump(extraer datos).
Extraeremos los datos de la tabla
webmaster. Sql Injection.
El comando que se usa es el
siguiente sqlmap u(se refiere a la url)
(pagina vulnerable) –D (datos) –T la tabla –
C (usuario, el de acceso, contraseña la que
se necesita –Dump(extraer datos).
Al finalizar nos indicara un
mensaje Sql
que Injection.
hemos extraido los
datos de la tabla de panel de
administrador.
Sql Injection.

Algunas
formas de
evitar la
Inyección
Escapar los caracteres especiales
SqllasInjection.
utilizados en consultas SQL

Al hablar de “escapar caracteres” estamos


haciendo referencia a añadir la barra
invertida “\” delante de las cadenas
utilizadas en las consultas SQL para evitar
que estas corrompan la consulta. Algunos
de estos caracteres especiales que es
aconsejable escapar son las comillas dobles
(“), las comillas simples (‘) o los
caracteres \x00 o \x1a ya que son
considerados como peligrosos pues pueden
ser utilizados durante los ataques
Delimitar los valores de las consultas
Aunque el valor de la consulta sea un
Sql Injection.
entero, es aconsejable delimitarlo siempre
entre comillas simples. Una instrucción SQL
del tipo:
 
SELECT nombre FROM usuarios WHERE
id_user = $id
 
Será mucho más fácilmente inyectable que:
 
SELECT nombre FROM usuarios WHERE
id_user = ‘$id’
 
Donde $id es un número entero.
 
Delimitar los valores de las consultas
 
Sql Injection.
Delimitar los valores de las consultas
 
Sql Injection.
Delimitar los valores de las consultas
 
Sql Injection.
Delimitar los valores de las consultas
 
Sql Injection.
Herramientas de Análisis de inyección SQL.

Sql Injection.
Otra de las opciones que podemos utilizar para realizar un
análisis de nuestro código es el uso de herramientas que
testeen nuestras aplicaciones en busca de vulnerabilidades
por inyección SQL. Algunas de estas herramientas son:

SQLiHelper 2.7 SQL Injection: Se trata de una aplicación


cuyo objetivo es facilitar la extracción de información
procedente de bases de datos utilizando para ello técnicas
de inyección SQL. Una vez indicada la url que queremos
analizar, la aplicación realizará peticiones inyectando código
SQL con el fin de comprobar si es realmente vulnerable.

Pangolin: Se trata de una herramienta de pago que ofrece


más posibilidades que la vista en el punto anterior y que está
destinada a descubrir vulnerabilidades tanto del tipo
inyección SQL como inyección SQL ciego.

SQLMap: Se trata de una herramienta de pruebas de código


abierto que
Ciberataque SQL injection

Sql Injection.
En Junio de 2012, la gran empresa cinematográfica Sony
Pictures Entertainment fue objetivo de
los ciberdelincuentes. El grupo de hackers conocido
como LulzSec se atribuye el robo de datos personales de
un millón de usuarios de Sony Pictures Entertainment, la
división de cine de Sony.
La técnica empleada para perpetrar el ataque es la
conocida como SQL injection, mediante la cual lograron
los datos de más de 1.000.000 de usuarios, incluyendo
contraseñas, direcciones de correo electrónico,
direcciones postales y fechas de nacimiento. También han
podido acceder a detalles de la administración de Sony
Pictures, incluidas las contraseñas, además de 75.000
“códigos de la música” y 3,5 millones de “cupones de la
música”.
Ciberataque SQL injection

Sql Injection.
Datos de Yahoo! expuestos a través de inyección
SQL

Tuvieron acceso total a los archivos de copia de respaldo


de uno de los servidores de dominio de Yahoo! y a doce
bases de datos. Los agujeros de seguridad que
permitieron dichos ataques son la explotación de
una vulnerabilidad de inyección SQL en uno de los
dominios de la compañía y a otra del tipo Cross Site
Scripting (XSS). De acuerdo al portal de noticias The
Hacker News, los problemas fueron reportados por
Virus_Hima hace algún tiempo sin conseguir ningún tipo
de respuesta por parte de la empresa afectada
Ejemplo de Ciberataque SQL
injection
Sql Injection.

Atacan la web de MySQL a través de SQL Injection


El sitio web de MySQL ha sido objeto de un ataque a través de una
vulnerabilidad de inyección ciega de código SQL. Se trata de un fallo
en el código de la aplicación web y no de la base de datos.
MySQL es una popular base de datos de código abierto. MySQL es
propiedad de Oracle tras la compra de SUN, su antigua propietaria.
El ataque se atribuye a TinKode y Ne0h del grupo Rumano Slacker.Ro.
Los datos extraídos han sido publicados en el sitio pastebin.com; algo
que viene siendo habitual en este tipo de “hazañas”.
Además del sitio principal los atacantes replicaron el ataque en las
versiones localizadas de MySQL.com. En concreto las versiones
francesa, alemana, italiana y japonesa.
Los datos expuestos se corresponden con las credenciales de los
usuarios del servidor MySQL y el volcado de la base de datos
principal del sitio. Entre las credenciales pueden observarse nombres
de usuario, contraseñas hasheadas, correos y direcciones
Ciberataque SQL injection

Sql Injection.
Anonymous Guatemala ataca sitios web del
gobierno

La red de ciberpiratas Anonymous Guatemala se atribuyó


el fallo de las páginas web del Ministerio de Agricultura, el
Ministerio de Trabajo,  la Corte de Constitucionalidad y la
Policía Nacional Civil (PNC).
Sql Injection.

Muchas gracias
por su atención.
HACKING ÉTICO -
WIFI
Seguridad Informática
Grupo 1

Luis Alberto Ramírez – 0317077


Gerber Sánchez - 11140013
Roberto Fernández - 12170266
Javier Jordán - 13122094
HACKING ÉTICO - WIFI

Este proyecto fue desarrollado para brindar las herramientas y técnicas que
los hackers utilizan para la des-encriptación de claves para acceso a redes
inalámbricas con seguridad WEP, WPA y WPA2.

La información brindada es con fines puramente educativos, sin el fin de


dañar o dar mal uso de la misma y nuestro objetivo es proporcionar las
buenas practicas para la seguridad de nuestra arquitectura de red.

El software utilizado Kali Linux, es una distribución basada en Debian


GNU/Linux diseñada principalmente para la auditoría y seguridad
informática en general.

Grupo 1 - Seguridad Informática


DEMOSTRAC
IÓN
Dispositivos y configuraciones utilizadas:
• Router inalámbrico
• SSID: Roberto
• Autenticación 802.11: WPA/WPA2
• Modo de encriptado: AES + TKIP
• Clave compartida inicial WPA:
000ab110
• Dispositivos finales
• Tablet
• Laptop - WebServer
• Laptop Hacking
• USB booteable Kali Linux

Grupo 1 - Seguridad Informática


SINTAXIS DE
CONFIGURACIÓN CLI
• airmon-ng check
(buscar procesos que impidan atacar la red)

• airmon-ng check kill


(eliminar procesos que impidan atacar la red)

• airmon-ng start wlan0


(encender tarjeta)

Grupo 1 - Seguridad Informática


SINTAXIS DE
CONFIGURACIÓN CLI
• airodump-ng wlan0mon
(colocar tarjeta modo monitor para escanear redes cercanas)
• Crtl+C
(detener proceso de escaneo)

Nota Importante:
En la pantalla de escaneo tomar en cuenta el BSSID y canal de la
red que será atacada

Grupo 1 - Seguridad Informática


SINTAXIS DE
CONFIGURACIÓN CLI
• airodump-ng -c canal de red –w capture --bssid bssid de
red wlan0mon
(crear archivo .cap que capturara el password de la red WiFi , la
ventana se deja activa )

Para Obtener la contraseña necesitamos des-autenticar clientes


conectados a la red con el siguiente comando.

• aireplay-ng – 0 5 –a bssid de red –c station/mac del cliente


conectado wlan0mon
En este proceso nos daremos cuenta que en la pantalla en la cual
crearíamos el archivo.cap nos muestra el handshake de la red el
cual nos indica que ha capturado la Informática
Grupo 1 - Seguridad contraseña.
SINTAXIS DE
CONFIGURACIÓN CLI
• Crunch 8 8 0123 | aircrack-ng –w – capture-01.cap –e
nombre de red

• Sintaxis :
8 8 numero de caracteres en el password de la red.

0123 valores tipo numericos posibles dentro del password de la


red.

aircrack-ng programa que desencriptara el password.

Grupo 1 - Seguridad Informática


RECOMENDACIONES
Hogar y pequeña oficina:

• Cambiar password periódicamente


• Carácteres especiales (Mayúsculas, Minúsculas, Números y signos)
• Desactivar broadcast SSID
• Filtrado por MAC Address

Mediana y grandes empresas:


• Servidor Radius
• Servidor Tacacs
• Portal cautivo
• Active Directory/LDAP

Grupo 1 - Seguridad Informática


GRACIA
S

Grupo 1 - Seguridad Informática


Seguridad Informática
Semana 3

Licenciatura en Tecnología y Administración


de Telecomunicaciones
La palabra hackers tiene una variedad de significados. Para muchos,
significa programadores de Internet que intentan ganar acceso no
autorizado a dispositivos en Internet. También se usa para referirse a
individuos que corren programas para prevenir o reducir la velocidad
del acceso a las redes por parte de un gran número de usuarios, o
corromper o eliminar los datos de los servidores. Pero para otros, el
término hacker tiene una interpretación positiva como un profesional
de redes que utiliza habilidades de programación de Internet
sofisticadas para asegurarse de que las redes no sean vulnerables a
ataques. Bueno o malo, el hacking es una fuerza
impulsora de la seguridad en redes. Desde una perspectiva de
negocios, es Importante minimizar los efectos de los hackers con
malas intenciones. Los
negocios pierden productividad cuando la red es lenta o no
responde. Las ganancias se ven impactadas por la pérdida y la
corrupción de datos.
Como resultado de los exploits de los hackers, la sofisticación de sus
herramientas y la legislación gubernamental, las soluciones de
seguridad se desarrollaron rápidamente en los años 1990. A fines de
esa década se habían desarrollado muchas soluciones sofisticadas
para la seguridad de las redes para que las organizaciones
desplegaran
estratégicamente en sus redes. Con estas soluciones llegaron nuevas
oportunidades de trabajo
Los profesionales y mejor compensación
de la seguridad en el campo de
en redes son responsables de la
seguridad
mantener en redes.
la seguridad de los datos de una organización y
garantizar la integridad y confidencialidad de la información. Un
profesional de la seguridad en redes
puede ser responsable de montar firewalls y sistemas de
prevención de intrusos, así como también de asegurar el cifrado
de los datos de la compañía.
1.2 Virus, Gusanos y Troyanos
1.2.1 Virus
Las principales vulnerabilidades de las computadoras de los usuarios
finales son los ataques de virus, gusanos y troyanos:

Un virus es un software malicioso que se adjunta a otro programa


para ejecutar una función indeseada específica en una computadora.

Un gusano ejecuta código arbitrario e instala copias de sí mismo en


la memoria de la computadora infectada, que luego infecta a otros
hosts.

Un troyano es una aplicación escrita para parecerse a otra cosa.


Cuando se descarga y ejecuta un troyano, ataca a la computadora
del usuario final desde dentro.
1.2.2 Gusanos
Gusanos

Los gusanos son un tipo de código hostil particularmente peligroso. Se


multiplican explotando vulnerabilidades en las redes
independientemente. Los gusanos generalmente hacen que las redes
operen más lentamente.

Mientras que los virus requieren un programa huésped para


ejecutarse, los gusanos pueden ejecutarse solos. No requieren la
participación del usuario y pueden diseminarse muy rápidamente en
la red.
Los gusanos son programas autocontenidos que atacan a un
sistema para explotar una vulnerabilidad conocida.

Luego de una explotación exitosa, el gusano se copia del host


atacante al sistema recientemente explotado y el ciclo vuelve a
comenzar.
1.2.3 Troyanos

Un troyano, en el mundo de la computación, es malware que


realiza operaciones maliciosas bajo el disfraz de una función
deseada. Un virus o gusano puede llevar consigo un troyano. Los
troyanos contienen código malicioso oculto que explota los
privilegios del usuario que lo ejecuta. Los juegos suelen llevar un
troyano adjunto. Cuando el juego se está ejecutando, funciona,
pero, en segundo plano, el troyano ha sido instalado en el sistema
del usuario y continúa ejecutándose luego de que el juego ha sido
cerrado.

El concepto de troyano es flexible. Puede causar daño inmediato,


proveer acceso remoto al sistema (una puerta trasera), o llevar a
cabo acciones instruídas remotamente, como "envíame el archivo
de la contraseña una vez por
semana".
Los troyanos generalmente se clasifican de acuerdo al daño que
causan o la manera en que violan el sistema:

•Troyanos de Acceso Remoto (permiten el acceso remoto no


autorizado)
•Troyano de Envío de Datos (provee al atacante de datos
sensibles como contraseñas)
•Troyano Destructivo (corrompe o elimina archivos)
•Troyano proxy (la computadora del usuario funciona como un
servidor proxy)
•Troyano FTP (abre el puerto 21)
•Troyano inhabilitador de software de seguridad (detiene el
funcionamiento de programas antivirus y/o firewalls)
•Troyano de denegación de servicio (reduce la velocidad o detiene
la actividad en la red)
El principal recurso para la mitigación de ataques de virus y
troyanos es el software antivirus. El software antivirus ayuda a
prevenir a los hosts de ser infectados y diseminar código malicioso.
Requiere mucho más tiempo limpiar computadoras infectadas que
mantener al software antivirus y a las definiciones de virus
actualizados en las mismas máquinas.

El software antivirus es el producto de seguridad más ampliamente


desplegado en el mercado de hoy en día. Muchas compañías que
crean software antivirus, como Symantec, Computer Associates,
McAfee y Trend Micro han estado en el negocio de detectar y
eliminar virus por más de una década. Muchas empresas e
instituciones
educativas compran licencias al por mayor para sus usuarios. Los
usuarios pueden identificarse en un sitio con su cuenta y descargar
el software antivirus en sus computadoras de escritorio, notebooks
o servidores.
1.3 Catalogación de Ataques

1.3.1 Ataques de Reconocimiento


Ataques de reconocimiento

El reconocimiento también se conoce como recolección de


información y, en la mayoría de los casos, precede un ataque de
acceso o de DoS. En un ataque de reconocimiento, el intruso
malicioso típicamente comienza por llevar a
cabo un barrido de ping en la red objetivo para determinar qué
direcciones IP están siendo utilizadas. El intruso entonces
determina qué servicios o puertos están disponibles en las
direcciones IP activas. Nmap es la aplicación más popular para
escanear puertos.
Las principales herramientas para realizar este tipo de
ataques son:

Sniffers de paquetes
Barridos de ping
Escaneo de puertos
Búsquedas de información en Internet
1.3.2 Ataques de Acceso
Ataques de Acceso

Los hackers utilizan los ataques de acceso en las redes o sistemas


por tres razones: para obtener datos, para ganar acceso y para
escalar privilegios de acceso.
Hay cinco tipos de ataques de acceso:

Ataques de contraseña - El atacante intenta adivinar las contraseñas


del sistema. Un ejemplo común es un ataque de diccionario.

Explotación de la confianza - El atacante usa privilegios otorgados a un


sistema en una forma no autorizada, posiblemente causando que el
objetivo se vea comprometido.
Redirección de puerto - Se usa un sistema ya comprometido como
punto de partida para

Ataques contra otros objetivos. Se instala una herramienta de instrusión


en el sistema comprometido para redirección de sesiones.
Ataque Man in the Middle - El atacante se ubica en el medio de
una comunicación entre dos entidades legítimas para leer o
modificar los datos que pasan entre las dos partes. Un ataque
Man in the Middle popular involucra a una
laptop actuando como un punto de acceso no autorizado (rogue
access point) para capturar y copiar todo el tráfico de red de un
usuario objetivo.

Frecuentemente el usuario está en un lugar público conectado a


un punto de acceso inalámbrico.

Desbordamiento de buffer - El programa escribe datos más allá


de la memoria de buffer alocada. Los desbordamientos de buffer
surgen generalmente como consecuencia de un error en un
programa C o C++. Un resultado del desbordamiento es que los
Los ataques
válidosdese acceso en general puedenpara
ser detectados
datos sobreescriben o explotan permitir la
revisando los registros, el uso del ancho de banda y la carga de
ejecución de código malicioso.
los procesos.
1.3.3 Ataques de Denegación de Servicios

Ataques de Denegación de Servicio

El ataque de DoS es un ataque de red que resulta en algún tipo de


interrupción en el servicio a los usuarios, dispositivos o aplicaciones.
Muchos mecanismos pueden generar un ataque de DoS. El método
más simple es generar grandes cantidades de lo que simula ser
tráfico de red válido. Este tipo de ataque de DoS satura la red para
que el tráfico de usuario válido no pueda pasar.

El ataque de DoS se aprovecha del hecho de que los sistemas


objetivo como los servidores deben mantener información de estado.
Las aplicaciones pueden depender de los tamaños de buffer
esperados y el contenido específico de los paquetes de red. Un
ataque de DoS puede explotar esto enviando tamaños de paquetes o
valores
de datos que no son esperados por la aplicación receptora.
Un ejemplo de un ataque DoS es el envío de un paquete venenoso.
Un paquete venenoso es un paquete formateado inapropiadamente
designado para hacer que el dispositivo receptor procese el paquete
de manera inapropiada. El paquete venenoso hace que el dispositivo
receptor se cuelgue o ande muy lentamente. Este ataque
puede hacer que todas las comunicaciones hacia y desde el
dispositivo se interrumpan.
Como ejemplo, un ataque DDoS podría proceder de la siguiente
manera:

Un hacker escanea los sistemas que son accesibles.

Una vez que el hacker accede a varios sistemas "picaportes", el


hacker instala software zombie en ellos.

Los zombies luego escanean e infectan sistemas agentes.

Cuando el hacker accede a los sistemas agentes, el hacker carga


software de ataque por control remoto para llevar a cabo el ataque
DDoS.
! " #$

% &
' ! () $
&
* '

&
' '
'

'
+
+
, &
- +

& .

& & %
& ' %
. /
0 '

& ! * "
0. )

&
/

"

' ". &

"

+
"

. "1 &
' '
".
$
& &
!1 ,1)
,
&

, ! () (,,. (,,.
2 * 31 . ! 21.)

% & &
Seguridad Informática
Clase 2
Licenciatura en Tecnología y Administración de Telecomunicaciones
La Seguridad Informática se refiere a las características y condiciones de
sistemas de procesamiento de datos y su almacenamiento, para garantizar
su confidencialidad, integridad y disponibilidad.

Considerar aspectos de seguridad significa


a) conocer el peligro
b) b) clasificarlo y
c) c) protegerse de los impactos o daños de la mejor manera posible. Esto
significa que solamente cuando estamos consientes de las potenciales
amenazas, agresores y sus intenciones dañinas (directas o indirectas)
en contra de nosotros, podemos tomar medidas de protección
adecuadas, para que no se pierda o dañe nuestros recursos valiosos.

En este sentido, la Seguridad Informática sirve para la protección de la


información, en contra de amenazas o peligros, para evitar daños y para
minimizar riesgos, relacionados con ella.
Gestión de Riesgo en la Seguridad Informática

La Gestión de Riesgo es un método para determinar, analizar, valorar y


clasificar el riesgo, para posteriormente implementar mecanismos que
permitan controlarlo.

En su forma general contiene cuatro fases

• Análisis: Determina los componentes de un sistema que requiere protección,


sus vulnerabilidades que lo debilitan y las amenazas que lo ponen en peligro,
con el resultado de revelar su grado de riesgo.
• Clasificación: Determina si los riesgos encontrados y los riesgos restantes son
aceptables.
• Reducción: Define e implementa las medidas de protección. Además sensibiliza
y capacita los usuarios conforme a las medidas.
• Control: Analiza el funcionamiento, la efectividad y el cumplimiento de las
medidas, para determinar y ajustar las medidas deficientes y sanciona el
incumplimiento.
Todo el proceso está basado en las llamadas políticas de seguridad, normas y
reglas institucionales, que forman el marco operativo del proceso, con el
propósito de

• Potenciar las capacidades institucionales, reduciendo la vulnerabilidad y


limitando las amenazas con el resultado de reducir el riesgo.
• Orientar el funcionamiento organizativo y funcional.
• Garantizar comportamiento homogéneo.
• Garantizar corrección de conductas o prácticas que nos hacen vulnerables.
• Conducir a la coherencia entre lo que pensamos, decimos y hacemos.
Seguridad de la Información y Protección de Datos

En la Seguridad Informática se debe distinguir dos propósitos de protección, la


Seguridad de la Información y la Protección de Datos.

Se debe distinguir entre los dos, porque forman la base y dan la razón, justificación
en la selección de los elementos de información que requieren una atención
especial dentro del marco de la Seguridad Informática y normalmente también
dan el motivo y la obligación para su protección.

Sin embargo hay que destacar que, aunque se diferencia entre la Seguridad de la
Información y la Protección de Datos como motivo u obligación de las actividades
de seguridad, las medidas de protección aplicadas normalmente serán las mismas.

En la Seguridad de la Información el objetivo de la protección son los datos mismos


y trata de evitar su perdida y modificación non-autorizado. La protección debe
garantizar en primer lugar la confidencialidad, integridad y disponibilidad de los
datos, sin embargo existen más requisitos como por ejemplo la autenticidad entre
otros.
El motivo o el motor para implementar medidas de protección, que responden a la
Seguridad de la Información, es el propio interés de la institución o persona que
maneja los datos, porque la perdida o modificación de los datos, le puede causar un
daño (material o inmaterial). Entonces en referencia al ejercicio con el banco, la
perdida o la modificación errónea, sea causado intencionalmente o simplemente
por negligencia humana, de algún récord de una cuenta bancaria, puede resultar en
perdidas económicas u otros consecuencias negativas para la institución.

En el caso de la Protección de Datos, el objetivo de la protección no son los


datos en si mismo, sino el contenido de la información sobre personas, para
evitar el abuso de esta.

Esta vez, el motivo o el motor para la implementación de medidas de


protección, por parte de la institución o persona que maneja los datos, es la
obligación jurídica o la simple ética personal, de evitar consecuencias negativas
para las personas de las cuales se trata la información.
Elementos de Información

Los Elementos de información son todos los componentes que contienen,


mantienen o guardan información. Dependiendo de la literatura, también son
llamados Activos o Recursos.

Son estos los Activos de una institución que tenemos que proteger, para evitar su
perdida, modificación o el uso inadecuado de su contenido, para impedir daños
para nuestra institución y las personas presentes en la información.

Generalmente se distingue y divide tres grupos

• Datos e Información: son los datos e informaciones en si mismo


• Sistemas e Infraestructura: son los componentes donde se mantienen o guardan
los datos e informaciones
• Personal: son todos los individuos que manejan o tienen acceso a los datos e
informaciones y son los activos más difíciles de proteger, porque son móviles,
pueden cambiar su afiliación y son impredecibles
Amenazas

Una Amenaza es la posibilidad de ocurrencia de cualquier tipo de evento o acción


que puede producir un daño (material o inmaterial) sobre los elementos de un
sistema, en el caso de la Seguridad Informática, los Elementos de Información.
Debido a que la Seguridad Informática tiene como propósitos de garantizar la
confidencialidad, integridad, disponibilidad y autenticidad de los datos e
informaciones, las amenazas y los consecuentes daños que puede causar un
evento exitoso, también hay que ver en relación con la confidencialidad,
integridad, disponibilidad y autenticidad de los datos e informaciones.
Pero también existen otras amenazas que, aunque no aparezcan en ambas
encuestas, son muy alarmantes y que se debe tomar en consideración

• Falta de respaldo de datos


• Perdida de información por rotación, salida de personal
• Abuso de conocimientos internos (no consultado en encuesta de organizaciones
sociales)
• Mal manejo de equipos y programas • Acceso non-autorizado • Etc.
Análisis de Riesgo

El primer paso en la Gestión de riesgo es el análisis de riesgo que tiene como


propósito determinar los componentes de un sistema que requieren
protección, sus vulnerabilidades que los debilitan y las amenazas que lo
ponen en peligro, con el fin de valorar su grado de riesgo.

La clasificación de datos tiene el propósito de garantizar la protección de


datos (personales) y significa definir, dependiendo del tipo o grupo de
personas internas y externas, los diferentes niveles de autorización de
acceso a los datos e informaciones. Considerando el contexto de nuestra
misión institucional, tenemos que definir los niveles de clasificación como
por ejemplo: confidencial, privado, sensitivo y público. Cada nivel define por
lo menos el tipo de persona que tiene derecho de acceder a los datos, el
grado y mecanismo de autenticación.
Existen varios métodos de como valorar un riesgo y al final, todos tienen los mismos
retos -las variables son difíciles de precisar y en su mayoría son estimaciones- y
llegan casi a los mismos resultados y conclusiones.

En el ámbito de la Seguridad Informática, el método más usado es el Análisis de


Riesgo.
La valoración del riesgo basada en la formula matemática

Riesgo = Probabilidad de Amenaza x Magnitud de Daño Se

habla de un Ataque, cuando una amenaza se convirtió en

realidad, es decir cuando un evento se realizó. Pero el ataque

no dice nada sobre el éxito del evento y sí o no, los datos e

informaciones fueron perjudicado respecto a su

confidencialidad, integridad, disponibilidad y autenticidad.

Para estimar la Probabilidad de Amenaza nos podemos hacer algunas preguntas


• ¿Cuál es el interés o la atracción por parte de individuos externos, de atacarnos?
Algunas razones pueden ser que manejamos información que contiene
novedades o inventos, información comprometedora etc, talvez tenemos
competidores en el trabajo, negocio o simplemente por el imagen o posición
pública que tenemos.
• ¿Cuáles son nuestras vulnerabilidades? Es importante considerar todos los grupos
de vulnerabilidades. También se recomienda incluir los expertos, especialistas de
las diferentes áreas de trabajo para obtener una imagen más completa y más
detallada sobre la situación interna y el entorno.
• ¿Cuántas veces ya han tratado de atacarnos? Ataques pasados nos sirven para
identificar una amenaza y si su ocurrencia es frecuente, más grande es la
probabilidad que pasará otra vez. En el caso de que ya tenemos implementadas
medidas de protección es importante llevar un registro, que muestra los casos
cuando la medida se aplico exitosamente y cuando no. Porque de tal manera,
sabemos en primer lugar si todavía existe la amenaza y segundo, cuál es su riesgo
actual.
Control de Riesgo

El propósito del control de riesgo es analizar el funcionamiento, la efectividad y el


cumplimiento de las medidas de protección, para determinar y ajustar sus
deficiencias.

Las actividades del proceso, tienen que estar integradas en el plan operativo
institucional, donde se define los momentos de las intervenciones y los
responsables de ejecución.

Medir el cumplimiento y la efectividad de las medidas de protección requiere que


levantemos constantemente registros sobre la ejecución de las actividades, los
eventos de ataques y sus respectivos resultados. Estos tenemos que analizados
frecuentemente. Dependiendo de la gravedad, el incumplimiento y el sobrepasar
de las normas y reglas, requieren sanciones institucionales para los funcionarios.

En el proceso continuo de la Gestión de riesgo, las conclusiones que salen como


resultado del control de riesgo, nos sirven como fuente de información, cuando se
entra otra vez en el proceso de la Análisis de riesgo.

Anda mungkin juga menyukai