Un ejemplo de configuración ebtables sería:
# Permitimos frames desde equipos con una <MAC_ORIGEN> desde la interface br0 o br1, según queramos permitirlo desde la lan o desde la wan.
ebtables -t filter -A INPUT --logical-in br0 -s <MAC_ORIGEN> -j ACCEPT
ebtables -t filter -A INPUT --logical-in br1 -s <MAC_ORIGEN> -j ACCEPT
#Evitamos frames que no tengan como origen una <MAC_ORIGEN>. Puedes ser la mac del Router ADSL y así evitar el ARPSPOOF.
ebtables -t filter -A INPUT -s ! <MAC_ORIGEN> -j DROP
# Resto de reglas
ebtables -t filter -A INPUT -p IPv4 -j ACCEPT
ebtables -t filter -A INPUT -p ARP -j LOG
ebtables -t filter -A INPUT -p ARP -j ACCEPT
ebtables -t filter -A INPUT -p Length -j ACCEPT
ebtables -t filter -A INPUT --log-level info --log-prefix "EBFW" --log-ip
# Drop el resto.
ebtables -t filter -A INPUT -j DROP
Si queremos evitar el arp spoofing :
ebtables -t filter -A INPUT -p IPv4 --ip-src 192.168.1.1 -s ! 00:11:22:33:44:55 -j DROP
Ahora ¿como vemos los frames que están pasando por las diferentes reglas?
# ebtables -t filter -L --Lc
Al ejecutar el comando nos dará una salida como esta.
Bridge table: filter
Bridge chain: INPUT, entries: 5, policy: ACCEPT
-p IPv4 -j ACCEPT , pcnt = 2531 -- bcnt = 457577
-p ARP -j ACCEPT , pcnt = 9 -- bcnt = 414
-p Length -j ACCEPT , pcnt = 0 -- bcnt = 0
--log-level info --log-prefix "EBFW" --log-ip -j CONTINUE , pcnt = 0 -- bcnt = 0
-j DROP , pcnt = 0 -- bcnt = 0
Bridge chain: FORWARD, entrie: 1, policy: DROP
-j ACCEPT , pcnt = 0 -- bcnt = 0
Bridge chain: OUTPUT, entries: 1, policy: ACCEPT
-j ACCEPT , pcnt = 2107 -- bcnt = 287193
Bridge chain: INPUT, entries: 5, policy: ACCEPT
-p IPv4 -j ACCEPT , pcnt = 2531 -- bcnt = 457577
-p ARP -j ACCEPT , pcnt = 9 -- bcnt = 414
-p Length -j ACCEPT , pcnt = 0 -- bcnt = 0
--log-level info --log-prefix "EBFW" --log-ip -j CONTINUE , pcnt = 0 -- bcnt = 0
-j DROP , pcnt = 0 -- bcnt = 0
Bridge chain: FORWARD, entrie: 1, policy: DROP
-j ACCEPT , pcnt = 0 -- bcnt = 0
Bridge chain: OUTPUT, entries: 1, policy: ACCEPT
-j ACCEPT , pcnt = 2107 -- bcnt = 287193
Como podemos observar hay dos contadores, pcnt y bcnt:
pcnt muestra, normalmente, el numero de tramas que pasan por la regla
mientras que bcnt muestra el numero de bytes que pasan por esa regla.