Marcio Cunha

Cómo bloquear puertos USB no deseados en Linux con udev

Aprende a crear reglas personalizadas en el subsistema udev de Linux para evitar el uso de memorias USB, ratones o teclados no autorizados.

Marcio Cunha•5 min
También disponible en:PortuguêsEnglish
Resumen
  • El subsistema udev monitorea eventos de hardware y aplica reglas dinámicas tan pronto como cualquier dispositivo USB se conecta al sistema operativo.
  • Identificar los atributos físicos exclusivos de cada componente es el primer paso para crear restricciones precisas sin afectar los periféricos esenciales.
  • El uso del comando udevadm permite inspeccionar propiedades detalladas y recopilar los parámetros necesarios para escribir la directiva de bloqueo correcta.
  • Las reglas personalizadas evitan la fuga de datos corporativos y garantizan una capa adicional de seguridad física contra medios extraíbles no autorizados.
  • Mantener buenas prácticas de aislamiento de hardware complementa otras capas protectoras, como reglas de firewall en iptables y políticas de acceso físico.

El papel de udev en la gestión de hardware de Linux

Cuando conectamos cualquier dispositivo a un ordenador con Linux, el núcleo del sistema operativo necesita averiguar qué equipo es y cómo comunicarse con él. Este trabajo invisible y dinámico en segundo plano es coordinado por el subsistema udev, que actúa como un recepcionista siempre atento a las novedades. Cada vez que una memoria USB, una impresora o un ratón se conecta a un puerto, udev entra en acción para crear archivos de acceso rápido en el directorio de dispositivos del sistema.

En la práctica, esto significa que podemos interceptar este momento exacto de conexión para imponer reglas de comportamiento. ¿Queremos evitar que ratones genéricos o memorias desconocidas funcionen en una estación de trabajo sensible? El gestor udev nos permite examinar la identidad de fábrica de cada pieza y emitir un rechazo automático si el número de serie o el fabricante no forman parte de una lista blanca autorizada.

Cómo descubrir las propiedades físicas del dispositivo USB

Antes de construir cualquier barrera, necesitamos conocer la identidad digital del equipo que queremos bloquear o permitir. Cada componente fabricado en el mundo lleva marcas de fábrica conocidas como ID de proveedor, ID de producto y un número de serie único. Para extraer esta valiosa información, utilizamos una herramienta de inspección nativa llamada udevadm directamente en la terminal.

Al conectar la memoria USB no deseada y ejecutar el comando de rastreo en la terminal, el sistema expone todo el árbol de atributos de ese objeto electrónico. Aquí es precisamente donde separamos el equipo legítimo de los intrusos. Al igual que diagnosticamos lentitud en unidades NVMe mediante la terminal para aislar cuellos de botella de hardware, aquí buscamos cadenas específicas como idVendor e idProduct para alimentar nuestra regla de seguridad.

Escribiendo tu primera regla personalizada de bloqueo

Con los números de identificación en mano, el siguiente paso es crear un archivo de configuración dedicado dentro de la carpeta donde el sistema lee estas directrices. Estas reglas siguen una lógica condicional simple: si el dispositivo conectado coincide con ciertos criterios de fábrica, el sistema aplica una acción específica, como alterar sus permisos de acceso a cero o deshabilitar el controlador correspondiente.

Para poner esto en marcha de forma estructurada, sigue estos pasos en tu terminal con privilegios administrativos:

  1. Abre la terminal y navega hasta el directorio de reglas personalizadas del sistema usando el comando
    cd /etc/udev/rules.d/
    para asegurar que tus modificaciones permanezcan aisladas y no se borren en futuras actualizaciones del núcleo.
  2. Crea un archivo de texto con extensión específica para reglas usando un editor como nano escribiendo
    sudo nano 99-block-usb.rules
    para iniciar la edición de tu configuración de bloqueo.
  3. Inserta la línea de comando correspondiente al filtro deseado, por ejemplo,
    SUBSYSTEM=="usb", ATTRS{idVendor}=="1234", ATTRS{idProduct}=="5678", ATTR{authorized}="0"
    guardando el archivo para que el núcleo comience a ignorar ese hardware específico al conectarse.

Probando y recargando el subsistema de hardware

Una vez guardado el archivo de reglas, Linux no aplica los cambios de forma mágica e inmediata; es necesario indicarle al sistema que vuelva a leer todo. Hacemos esto solicitando que el administrador de hardware recargue todas las reglas activas en la memoria. Este proceso es rápido y no requiere reiniciar completamente la máquina, lo que ahorra tiempo valioso en servidores o estaciones corporativas.

En la práctica, el comando que actualiza estas directrices le dice a udev que vuelva a examinar el bus y aplique las nuevas restricciones al instante. Tan pronto como se ejecuta el comando de recarga, si conectas la memoria bloqueada, su LED puede parpadear indicando energía eléctrica, pero el sistema operativo simplemente fingirá que no pasa nada, manteniendo tus datos a salvo frente a copias no autorizadas.

Precauciones para no bloquear tu propio teclado o ratón

El gran peligro de modificar reglas de bajo nivel en el sistema operativo es dispararse accidentalmente en el pie, como cerrar la puerta principal y dejar la llave adentro. Si creas una regla demasiado amplia que bloquee todo el subsistema USB sin excepciones, tu teclado y ratón USB dejarán de responder de inmediato, dejándote sin ninguna forma de interactuar con la interfaz gráfica o la terminal para solucionar el error.

Para evitar este dolor de cabeza operativo, diseña siempre reglas enfocadas en atributos específicos, como números de serie o combinaciones exactas de fabricante. Nunca apliques un bloqueo global a todo el controlador a menos que tengas acceso remoto por red configurado para salvar la situación si algo sale mal. Probar la regla en un entorno controlado o mantener una sesión SSH abierta es una precaución de seguridad tan importante como probar un componente físico con un multímetro antes de reinstalarlo en un circuito crítico.

Consideraciones finales sobre la seguridad física en Linux

El bloqueo de puertos USB mediante udev representa una capa defensiva elegante, económica y sumamente eficaz para proteger ordenadores contra el uso de medios no autorizados. Si bien no reemplaza la integridad física del chasis o el uso de bloqueos mecánicos en los puertos, esta estrategia basada en software impide que curiosos copien archivos confidenciales o introduzcan código malicioso a través de las conexiones externas de la máquina.

Comprender el funcionamiento del subsistema de hardware de Linux nos da el poder de transformar un sistema genérico en un entorno rígido y controlado a medida. Ya sea para proteger servidores en bastidores compartidos o estaciones de trabajo, dominar estas reglas básicas garantiza que el control del hardware regrese por completo a manos del administrador.