Como posso detectar dispositivos desconhecidos / não aprovados com o udev?

2

Estou criando uma configuração sensível à segurança para um cliente. A situação é a seguinte:

Informações confidenciais devem ser armazenadas em um servidor que possa ser acessado por pessoas não autorizadas. Não há como proteger o hardware de forma que seja 100% seguro.

Aqui minha abordagem:

Estou criptografando a máquina raiz com cryptsetup / luks, então estou criptografando uma imagem com cryptsetup / luks e montando-a para ser o disco rígido de uma máquina virtual. A máquina virtual tem novamente um FS raiz criptografado.

Agora, quero impedir que qualquer pessoa acesse o hardware da máquina enquanto ela está em execução. Quero detectar dispositivos desconhecidos que estão conectados a ele, como um pendrive USB ou um dispositivo Firewire, etc.

Existe uma maneira de detectar dispositivos desconhecidos elegantemente no udev? Até agora eu só encontrei maneiras de definir ações para dispositivos que eu conheço. Mas quero definir uma ação para quando um dispositivo desconhecido se conectar.

Obrigado pela sua contribuição.

    
por flowolf 12.09.2013 / 14:44

1 resposta

1

Se você quiser algo assim, precisará considerar todos os dispositivos como suspeitos e, a qualquer momento, qualquer dispositivo inserido solicitará algo que apenas o proprietário desse dispositivo possa saber. Você não pode ignorar isso para um dispositivo que acredita ter sido aprovado, pois o usuário que inseriu o dispositivo não precisa ser a mesma pessoa.

  

Existe uma maneira de detectar dispositivos desconhecidos elegantemente no udev?

udev não entende "dispositivos desconhecidos": ele entende todos ou nenhum dispositivo USB / firewire devido a uma entrada em /dev/ . Desconhecido para udev significaria que o dispositivo não funciona nesse sistema. E ID_VENDOR_ID e ID_MODEL_ID não permitem que você veja uma diferença entre dois dispositivos da mesma marca e modelo.

Um método possível:

Veja link para um script básico executado na inserção de um dispositivo. Isso forçará qualquer dispositivo a mostrar um menu onde o usuário precisa verificar se ele pode ter acesso.

A regra no link ...

ACTION=="add", RUN+="/usr/bin/exdongle run /media/%k-%E{dir_name}"

funcionará em qualquer dispositivo que tentar montar em /media/ e iniciará o script "exdongle" (o script pode precisar de alguns ajustes, pois possui um aviso de isenção de responsabilidade).

O que você considera "desconhecido" é um dispositivo específico conhecido pelo Linux como USB. Portanto, se houver suporte a USB, todos os dispositivos USB serão tratados igualmente. Os dispositivos têm um fornecedor e um ID de produto, mas eles são exclusivos por marca / modelo e não por dispositivo USB.

O único dispositivo USB que possui um ID exclusivo é um dongle ( link ). Esses tendem a vir com software para verificação (portanto, também não para sistemas sem cabeça), mas você pode salvar a identificação em um arquivo e criar um script como acima para testar um conjunto conhecido de IDs.

    
por Rinzwind 12.09.2013 / 15:58