Las conexiones de nuestra red se pueden filtrar utilizando las direcciones MAC de los dispositivos conectados. MAC es el acrónimo de Media Access Control (control de acceso al medio): una dirección única asignada a casi todo el hardware de red, como tarjetas Ethernet, routers, teléfonos móviles o tarjetas inalámbricas (más información en Wikipedia).

Este rápido tutorial explica cómo permitir o denegar el acceso por dirección MAC mediante iptables, la herramienta de Linux para el filtrado de paquetes IPv4 y NAT.

Iptables incluye el módulo mac, que identifica los paquetes que atraviesan el firewall según su dirección MAC (el hardware Ethernet de origen). Ofrece una buena protección contra usuarios malintencionados que falsifican o cambian su dirección IP. Recuerda que el filtrado por MAC solo tiene sentido para los paquetes que vienen de un dispositivo de la misma red Ethernet.

Editar las reglas

Vamos a editar nuestro archivo de iptables:

nano /etc/sysconfig/iptables

Si vamos a permitir conexiones solo de determinadas direcciones MAC, cerramos primero todos los accesos copiando esto al principio del archivo:

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT

Luego permitimos la conexión de una dirección MAC a un puerto concreto:

-A INPUT -p tcp --destination-port 22 -m mac --mac-source MAC-ADDRESS -j ACCEPT

Si queremos darle conexión completa a una dirección MAC:

-A INPUT -m mac --mac-source MAC-ADDRESS -j ACCEPT

Si queremos bloquear solo una dirección MAC determinada:

-A INPUT -m mac --mac-source MAC-ADDRESS -j DROP

En todos los casos, sustituye MAC-ADDRESS por la dirección MAC del dispositivo.

Aplicar y comprobar

Después de crear las reglas, reiniciamos el servicio iptables:

service iptables restart

Para ver las reglas creadas ejecutamos:

sudo iptables -S