Deshabilitar puertos USB

8

Estoy usando el RPI para crear un programa, pero necesito deshabilitar los puertos USB para que el usuario final no pueda enchufar un teclado o mouse y meterse con el dispositivo.

¿Es esto posible? De ser así, ¿cómo se hace?

fypfyp
fuente
1
Creo que esto es lo que estás buscando: wpkg.org/Disable_/_enable_keyboard_and_mouse_in_Linux
Gerben
1
Superpegar los puertos USB también funciona. Eso es lo que solían hacer los bancos. :-P
Gerben
¿Qué temes que pueda hacer el usuario?
Zurechtweiser
@Gerben su enlace que explica deshabilitar el mouse / teclado en el sistema X Window, no el hardware del mouse / teclado USB.
gurcanozturk
¿Estás usando X, o solo la consola? Por defecto, la consola está protegida por contraseña. ¿Podría explicar un poco más sobre la situación para la que desea usarlo?
Gerben

Respuestas:

4

Puede encontrar suerte con este comando:

echo 0x0> / sys / devices / platform / bcm2708_usb / buspower

Esto parece deshabilitar los puertos USB. Sin embargo, no lo he probado.

ronnied
fuente
1
Los puertos usb seguirán estando disponibles durante el arranque, por lo que si el usuario puede reiniciar el PI, esta solución no funcionará.
pim
2

Cada controlador de host USB en Linux expone una configuración llamada authorized_default, que controla el estado de cualquier dispositivo conectado nuevo. Establecerlo en 0 desactiva todos los dispositivos nuevos de forma predeterminada:

for host in /sys/bus/usb/devices/usb*; do echo 0 > $host/authorized_default; done

Una forma recomendada de ejecutar este script consiste en usar udevreglas. De esta manera, está seguro de que el script se ejecuta en el momento correcto, cuando el controlador del controlador del host ya está cargado, pero ninguno de los dispositivos ha sido autorizado. Vea esta pregunta para ver un ejemplo de este enfoque.

Una cosa que debe entender es que los bloqueos de software solo son efectivos siempre que el usuario final no pueda desconectar la tarjeta SD y eliminar las protecciones que ha establecido.

Dmitry Grigoryev
fuente
1

Realmente no sé si es directamente posible ... ¿Por qué no bloquear físicamente la capacidad de los usuarios para hacerlo? Ya sea colocándolo donde no pueden llegar, llenando los puertos o colocando un mecanismo de bloqueo sobre él / alrededor.

Jacobm001
fuente
No conoce el entorno en el que residirá el dispositivo. Podría estar ubicado en una ubicación en la que no tiene control sobre quién tiene acceso a él, como en un rack AV en algún lugar remoto a millas de distancia. Puede guardarlo en un gabinete, pero generalmente la administración o el personal en el lugar aún tendrán acceso a esos gabinetes. Es más fácil dar un bloqueo a nivel de software para desanimar a las personas que juegan.
ScottN
@ScottN: Claro, supongo. Llenar los puertos con epoxy resolvería ese problema, pero en realidad ... si alguien tiene ese nivel de acceso físico al dispositivo, todas las demás consideraciones de seguridad son más o menos discutibles de todos modos.
Jacobm001
Ah, llenar los puertos con epoxi es realmente un último recurso y olvida tener el dispositivo utilizable si se devuelve para RMA o algo así. Mi punto principal era desalentar a alguien que juega con él como personal que conecta un teclado y pone en marcha YouTube y mira videos cuando se supone que ese dispositivo se debe usar para hacer señalización o lo que sea.
ScottN
1
sudo sh -c "echo 0 > /sys/devices/platform/soc/3f980000.usb/buspower"

Deshabilitará los puertos USB pero también el puerto LAN.

sudo sh -c "echo 1 > /sys/devices/platform/soc/3f980000.usb/buspower"

Los reativa.

Lennart Hennigs
fuente
0

use SELinux, búsquelo en línea y tendrá muchos recursos. Fue desarrollado para este propósito. Luego puede deshabilitar / habilitar puertos y otras características de su sistema Linux.

donitel
fuente