domingo, 15 de mayo de 2011

Ebtables, herramienta de filtrado de capa 2. [Parte 1]

Ebtables es una herramienta utilizado para filtrar trafico en sistemas usados como "Bridge". Esta herramienta, a diferencia de iptables, tiene ciertas cualidades que la hacen una herramienta idónea para filtrar trafico en sistemas puentes.
Por ejemplo si disponemos de un PC Linux el cual queremos transformarlo en un bridge , esta herramienta nos permitirá filtrar el trafico que atraviese dicho bridge.
Si queremos saber como crear un bridge usando un PC y una distro Linux como debian, podemos ir aqui. Dicha web nos explicará de una forma sencilla como crear un bridge.


Características:

* Uso similar a iptables pero menos complicado.
* Filtrado Ethernet, (Inspecciona las tramas Ethernet para ,posteriormente, poder descartar o permitir dichas tramas)
* Capacidad de enrutar trafico utilizando como fuente de información , únicamente, la dirección MAC de origen y destino.
* Capacidad de filtrar o enrutar trafico basado en direcciones Unicast, Multicast, Broadcast or BGA (Bridge Group Address).

¿De que nos protege EBTABLES?

Ebtables es capaz de protegernos de los siguientes ataques (con algún ejemplo): 

* Ataques basados en MAC y ARP
  • ARP Spoofing
* Ataques basados en VLAN
  • VLAN Hopping Attack.
* Ataques basados en STP



Protocolos de capa 2 que ebtables es capaz de filtrar:

ebtables analiza la trama ethernet para posteriormente aplicar las reglas que hayamos configurado previamente. Para esto debemos saber que protocolos reconoce y por tanto saber que reglas podemos aplicar (esta información la podemos encontrar en /etc/ethertypes):

PROCOLO  Nº HEX.      ALIAS                DESCRIPCION
IPv4             0800              ip ip4                     # Internet IP (IPv4)
X25             0805
ARP            0806              ether-arp                 #
FR_ARP     0808                                             # Frame Relay ARP        [RFC1701]
BPQ            08FF                                            # G8BPQ AX.25 Ethernet Packet
DEC            6000                                            # DEC Assigned proto
DNA_DL    6001                                           # DEC DNA Dump/Load
DNA_RC    6002                                           # DEC DNA Remote Console
DNA_RT    6003                                           # DEC DNA Routing
LAT            6004                                           # DEC LAT
DIAG          6005                                          # DEC Diagnostics
CUST          6006                                            # DEC Customer use
SCA            6007                                             # DEC Systems Comms Arch
TEB            6558                                           # Trans Ether Bridging   [RFC1701]
RAW_FR   6559                                            # Raw Frame Relay        [RFC1701]
AARP        80F3                                             # Appletalk AARP
ATALK     809B                                             # Appletalk
802_1Q      8100    8021q 1q 802.1q dot1q    # 802.1Q Virtual LAN tagged frame
IPX            8137                                               # Novell IPX
NetBEUI   8191                                               # NetBEUI
IPv6           86DD    ip6                                  # IP version 6
PPP           880B                                              # PPP
ATMMPOA         884C                                    # MultiProtocol over ATM
PPP_DISC            8863                                   # PPPoE discovery messages
PPP_SES              8864                                    # PPPoE session messages
ATMFATE          8884                                    # Frame-based ATM Transport over Ethernet
LOOP                  9000    loopback                  # loop proto

Funcionamiento de ebtables

Antes de explicar como funciona ebtables hay que tener muy en cuenta que esta herramienta funciona a nivel de Capa 2, para esto debemos conocer "Modelo OSI" o modelo de interconexión de sistemas abiertos.

Primeramente debemos conocer que hace un packete destinado a una computadora local, el cual atraviesa un PC (en este caso):


Como podemos ver, el trafico puede ser enrutado mediante "Routing" o bien mediante "bridging". En el gráfico podemos ver que la trama tiene una dirección de origen (SRC), dirección de destino (DST) y el campo que define el tipo de trama.

A continuación podemos ver un gráfico de como trabaja


Como podemos observar en la grafica, una vez que la trama entra el equipo , ebtables usa 3 tablas para manejar esa trama y enrutarla por otra interface, descartarla o pasarla a un protocolo de capa superior y ser enrutada. Las 3 tablas son:

* La tabla BROUTE que tiene las reglas BROUTING.
* La tabla FILTER, que tiene las reglas FORWARD, INPUT y OUTPUT.
* La tabla NAT, que tiene las reglaPREROUTING, OUTPUT y POSTROUTING.


Iptables y ebtables:


Si vamos a trabajar con ebtables y con iptables al mismo tiempo debemos saber que las decisiones de routing son tomadas antes que las decisiones de IPTABLES. Es decir, si tenemos configurado alguna regla iptables nat OUTPUT, esta estará situada después de la decisión de Routing, por tanto no podremos enrutar trafico usando iptables si ya tenemos configurado ebtables para hacer bridgin. 


Imaginemos que queremos proteger una lan de los ataques típicos de capa 2 explicados anteriormente mediante el uso de ebtables. Para esto debemos seguir los siguientes pasos: 


Instalar las herramientas adecuadas de bridgin que enviaran el trafico de ebtables a iptables: 
apt-get install bridge-utils
Ahora debemos configurar una interface bridge y relacionarla con las interfaces fisicas como eth0 y eth1:
brctl addbr br0
brctl addif br0 eth0
A continuación tenemos que dejar sin ip la interface que esté conectada al router ADSL, en mi caso la eth0. 
ifconfig eth0 0.0.0.0
Y ahora asignamos la ip que teníamos en la interface eth0 a la interface br0, además debemos añadir la ruta para decirle cual es la ip default gateway , es decir la ip del router ADSL: 
ifconfig br0 192.168.1.2 netmask 255.255.255.0 up
route add default gw  192.168.1.1 dev br0
Si usáis MASQUERADE en IPTABLES debéis modificar la interface de salida, es decir, debéis poner algo como esto: 
 
/sbin/iptables -t nat -I POSTROUTING -s 192.168.0.1/24 -o br0 -j MASQUERADE
 
Ahora vamos a configurar la LAN, seria exactamente igual:
brctl addbr br1
brctl addif br1 eth1
ifconfig eth1 0.0.0.0
ifconfig br1 192.168.0.2 netmask 255.255.255.0 up
Con esto ya estaría todo para poder configurar nuestro firewall iptables y ebtables para filtrar paquetes y tramas. 


Fuente: http://ebtables.sourceforge.net/br_fw_ia/br_fw_ia.html
             http://wiki.freaks-unidos.net/debian-bridge-es#introducci-n

No hay comentarios:

Publicar un comentario