Restringir el uso de dispositivos USB en Linux

Los que trabajan con usuarios en instituciones que requieren determinadas restricciones, bien sea para garantizar un nivel de seguridad, o por alguna idea u orden «de arriba» (como decimos acá), muchas veces necesitan implementar algunas restricciones de acceso en los ordenadores, aquí les hablaré específicamente sobre restringir o controlar el acceso a dispositivos de almacenamiento USB.

Restringir USB mediante modprobe (no me funcionó)

Esta es una práctica no precisamente nueva, consiste en añadir el módulo usb_storage a la lista negra (blacklist) de los módulos del kernel que se cargan, sería:

echo usb_storage > $HOME/blacklist
sudo mv $HOME/blacklist /etc/modprobe.d/

Luego reiniciamos el ordenador y listo.

Aclarar que aunque todos comparten esta alternativa como la solución más eficaz, en mi Arch no me funcionó

Deshabilitar USB quitando el driver del kernel (no me funcionó)

Otra opción sería quitarle el driver USB al kernel, para ello ejecutamos el siguiente comando:

sudo mv /lib/modules/$(uname -r)/kernel/drivers/usb/storage/usb* /root/

Reiniciamos y listo.

Esto lo que hará será que el archivo que contiene los drivers para USB que usa el kernel lo moverá hacia otra carpeta (/root/).

Si desean deshacer este cambio bastará con:

sudo mv /root/usb* /lib/modules/$(uname -r)/kernel/drivers/usb/storage/

Esta forma tampoco me funcionó, por algún motivo los USB me seguían funcionando.

Restringir el acceso a dispositivos USB cambiando permisos de /media/ (SI me funcionó)

Esta es hasta ahora el método que sí me funciona sin dudas. Como deben saber, los dispositivos USB se montan en /media/ o … si tu distro usa systemd, se montan en /run/media/

Lo que haremos será cambiarle los permisos a /media/ (o /run/media/) para que SOLO el usuario root pueda acceder a su contenido, para ello bastará:

sudo chmod 700 /media/

ó … si usas Arch u alguna distro con systemd:

sudo chmod 700 /run/media/

Claro, deben tener en cuenta que solo el usuario root tenga permisos para montar dispositivos USB, pues entonces el usuario podría montar el USB en otra carpeta y burlar nuestra restricción.

Una vez hecho esto, los dispositivos USB al ser conectados sí, se montarán, pero no le aparecerá notificación alguna al usuario, ni podrá acceder directamente a la carpeta ni nada.

Fin!

Hay algunas otras formas explicadas en la red, por ejemplo mediante Grub … pero, adivinen, no me funcionó tampoco 🙂

Publico tantas opciones (aún cuando no todas me funcionaron a mí) porque un conocido mío se compró una cámara digital en una tienda online productos de tecnología en Chile, recordó aquel script spy-usb.sh que hace un tiempo aquí expliqué (que recuerdo, sirve para espiar dispositivos USB y robar información de estos) y me preguntó si había alguna forma de evitar que se sustrajera información de su nueva cámara, o al menos alguna opción para bloquear los dispositivos USB en su ordenador de casa.

En fin, que esto si bien no es una protección para su cámara contra todos los ordenadores en la que la pueda conectar, al menos sí podrá proteger la PC de casa de que se saque información sensible mediante dispositivos USB.

Espero les haya sido (como siempre) de utilidad, si alguien conoce algún otro método para denegar el acceso a los USB en Linux y claro, le funciona sin problemas, que nos deje saber.


16 comentarios, deja el tuyo

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   SnKisuke dijo

    Otra manera tambien posible de evitar que monten un usb storage podria ser mediante el cambio de reglas en udev http://www.reactivated.net/writing_udev_rules.html#example-usbhdd, al modificar la regla para que solo root pueda montar dispositivos usb_storage, creo que sera una forma «elegante». saludos

  2.   OtakuLogan dijo

    En la wiki de Debian dicen de no bloquear módulos directamente en el archivo /etc/modprobe.d/blacklist (.conf), sino en uno independiente y que acabe en .conf: https://wiki.debian.org/KernelModuleBlacklisting . No sé si en Arch la cosa es diferente, pero sin haberlo probado en USBs en mi equipo funciona así con, por ejemplo, con bumblebee y pcspkr.

    1.    OtakuLogan dijo

      Y creo que Arch sí utiliza el mismo método, ¿no? https://wiki.archlinux.org/index.php/kernel_modules#Blacklisting .

  3.   rudamacho dijo

    Creo que una mejor opcion cambiando permisos seria crear un grupo especifico para /media, por ejemplo «pendrive», asignar ese grupo a /media y dar permisos 770, asi podriamos controlar quien puede utilizar lo que se monte en /media agregando al usuario al grupo «pendrive», espero se haya entendido 🙂

  4.   izkalotl dijo

    Hola, KZKG^Gaara, para este caso podemos usar policykit, con esto lograríamos que al insertar un dispositivo USB el sistema nos solicite autenticarnos como usuario o como root antes de montarlo.
    Tengo unas notas de como lo hice, en el transcurso de mañana domingo lo posteo.

    Saludos.

  5.   izkalotl dijo

    Dandole continuidad al mesaje sobre usar policykit y en vista de que de momento no he podido postear (supongo que debido a los cambios sucedidos en Desdelinux UsemosLinux) te dejo como hice para evitar que usuarios monten sus dispositivos USB. Esto bajo Debian 7.6 con Gnome 3.4.2

    1.- Abrir el archivo /usr/share/polkit-1/actions/org.freedesktop.udisks.policy
    2.- Buscamos la sección «»
    3.- Cambiamos los siguiente:

    «yes»

    por:

    «auth_admin»

    Listo!! con esto se necesitará que te autentiques como root al intentar montar un dispositivo USB.

    Referencias:
    http://www.freedesktop.org/software/polkit/docs/latest/polkit.8.html
    http://scarygliders.net/2012/06/20/a-brief-guide-to-policykit/
    http://lwn.net/Articles/258592/

    Saludos.

    1.    Raidel celma dijo

      En el paso 2 no entiendo a que seccion te refieres «soy principiante».

      gracias por la ayuda.

  6.   thisnameisfalse dijo

    Otro método: añadir la opción «nousb» en la línea de comandos de arranque del kernel, lo que supone editar el fichero de config de grub o lilo.

    nousb — Disable the USB subsystem.
    If this option is present, the USB subsystem will not be initialized.

  7.   Raidel celma dijo

    Como tener en cuenta que solo el usuario root tenga permisos para montar dispositivos USB y los otros usuarios no.

    gracias.

    1.    KZKG^Gaara dijo

      Como tener en cuenta que distros out-of-the-box (como la que usas) montan automáticamente dispositivos USB, bien sea Unity, Gnome o KDE … bien usando policykit o dbus, porque es el sistema quien los monta, no el usuario.

      Por nada 😉

  8.   Victor dijo

    Y si quiero anular el efecto de
    sudo chmod 700 /media/

    Que debo poner en el terminal para volver a tener acceso a los USB ?

    gracias

  9.   Anónimo dijo

    Eso no funciona si conectas tu movil con cable USB.

  10.   ruyzz dijo

    sudo chmod 777 /media/ para volver a habilitar.

    Saludos.

  11.   Maurel Reyes dijo

    Esto no es viable. Solo deberan montar la USB en otro directorio que no sea /media.

    Si con desactivar módulo del USB no te funciona, deberias de ver qué módulo se utiliza para tus puertos USB. quizás estás desactivando el equivocado.

  12.   Jhon Ferrer dijo

    Definitivamente la manera mas facil, llevava rato buscando una y no se me ocurrio la que estaba en mis narices. Muchas Gracias

  13.   Jhon Ferrer dijo

    Definitivamente la manera mas facil. llevava rato buscando una y no se me ocurrio la que estaba en mis narices. Muchas Gracias