Jump to content
From ArchWiki
Status de tradução: Esse artigo é uma tradução de USBGuard. Data da última tradução: 2020-11-09. Você pode ajudar a sincronizar a tradução, se houver alterações na versão em inglês.

USBGuard oferece um mecanismo de lista branca/negra para dispositivos USB. A inspiração para isso vem de exploits como BadUSB. Ele faz uso de uma infraestrutura de bloqueio de dispositivo incluída no kernel do Linux e consiste em um daemon e alguns front-ends.

## Instalação

Instale o usbguard pacote, ou usbguard-gitAUR para a versão de desenvolvimento. O miniaplicativo Qt foi removido do USBGuard 0.7.5 e será mantido em uma forma simplificada como um projeto separado posteriormente. [1]

## Configuração

O arquivo de configuração principal é encontrado em `/etc/usbguard/usbguard-daemon.conf`. Para editá-lo, você precisa de privilégios de root.

Se você deseja controlar o daemon via IPC, certifique-se de adicionar seu nome de usuário ao `IPCAllowedUsers` ou seu grupo para `IPCAllowedGroups` para tornar as regras persistentes. Na maioria dos casos, você desejará isso.

Por padrão, o USBGuard bloqueia todos os dispositivos recém-conectados e os dispositivos conectados antes da inicialização do daemon são deixados como estão. Isso pode ser alterado com a opção `PresentDevicePolicy`. Definindo esta chave para `apply-policy` é a configuração mais segura, que garante a segurança mesmo quando o daemon é reiniciado.

Com a chave `ImplicitPolicyTarget` você pode configurar o tratamento padrão dos dispositivos, se nenhuma regra corresponder. A opção mais segura aqui é `block`.

Para obter uma documentação detalhada da configuração, consulte o arquivo de configuração muito bem comentado.

## Uso

USBGuard tem um daemon principal, um CLI, uma interface DBUS e uma API via libusbguard.

Atenção: Certifique-se de realmente configurar o daemon antes de iniciá-lo / ativá-lo ou todos os dispositivos USB serão bloqueados imediatamente!

Se você quiser usar o Qt GUI ou outro programa de comunicação via DBUS, enable e start `usbguard-dbus.service`.

Se você deseja se comunicar apenas via API (com a ferramenta CLI ou outro software usando libusbguard) enable e start `usbguard.service`.

O CLI está disponível via `usbguard`.

Veja as man pages de acordo para mais informações.

### Regras

Para configurar o USBGuard de acordo com suas necessidades, você pode editar `/etc/usbguard/rules.conf`. No entanto, a edição manual das regras normalmente não é necessária. Você pode gerar um conjunto de regras com base em seus dispositivos USB conectados no momento executando `usbguard generate-policy > /etc/usbguard/rules.conf` como root.

A sintaxe das regras é explicada formalmente aqui. Um exemplo de impressora hp conectada via USB pode ser assim:

    allow id 03f0:0c17 serial "00CNFD234631" name "hp LaserJet 2020" hash "a0ef07fceb6fb77698f79a44a450121m" parent-hash "69d19c1a5733a31e7e6d9530e6k434a6" with-interface { 07:01:03 07:01:02 07:01:01 }

Uma regra começa com uma política. `allow` coloca um dispositivo na lista de permissões, `block` impede que o dispositivo seja processado agora e `reject` remove o dispositivo do sistema. Em seguida, segue um conjunto de atributos com suas opções, conforme detalhado a seguir.

Atributo | Descrição
--- | ---
id id-do-dispositivo-usb | Corresponde a um ID de dispositivo USB.
id [operador] { id-do-dispositivo-usb ... } | Corresponde a um conjunto de IDs de dispositivos USB.
hash "valor" | Corresponde a um hash calculado a partir dos valores de atributo do dispositivo e dos dados do descritor USB. O hash é calculado para cada dispositivo pelo USBGuard.
hash [operador] { "valor" ... } | Corresponde a um conjunto de hashes de dispositivo.
parent-hash "valor" | Corresponde a um hash do dispositivo pai.
parent-hash [operador] { "valor" ... } | Corresponde a um conjunto de hashes de dispositivo pai.
name "nome-do-dispositivo" | Corresponda ao atributo do nome do dispositivo USB.
name [operador] { "nome-do-dispositivo" ... } | Combine um conjunto de nomes de dispositivos USB.
serial "número-de-série" | Corresponde ao atributo de dispositivo USB iSerial.
serial [operador] { "número-de-série" ... } | Corresponde a um conjunto de atributos de dispositivo USB iSerial.
via-port "id-da-porta" | Corresponda a porta USB através da qual o dispositivo está conectado. Observe que alguns sistemas têm uma numeração de porta instável que muda após a reinicialização do sistema ou certos módulos do kernel são recarregados (e talvez em outros casos). Use o atributo parent-hash se quiser garantir que um dispositivo seja conectado por meio de um dispositivo pai específico.
via-port [operador] { "id-da-porta" ... } | Combine um conjunto de portas USB.
with-interface tipo-de-interface | Corresponde a um tipo de interface fornecido pelo dispositivo USB.
with-interface [operador] { tipo-de-interface tipo-de-interface ... } | Compare um conjunto de tipos de interface com o conjunto de interfaces que o dispositivo USB fornece.

## Veja também

- USBGuard Website
- Diagrama de componente USBGuard
- BadUSB background info
- Interface de kernel para controle de dispositivo USB

Categories:

- Hardware detection and troubleshooting (Português)
- Security (Português)