Quero comprar uma impressora nova porque a minha antiga se recusa a imprimir, a menos que eu dê acesso à Internet fora da LAN. Eu realmente não posso controlar o que está dizendo sobre meus trabalhos de impressão para outras organizações e não gosto disso. Isso motiva a pergunta abaixo.
Vou me conectar à nova impressora usando uma conexão USB de uma máquina com GNU/Linux. O driver é proprietário e vem em arquivo deb
$ dpkg --contents /path/to/hll2350dwpdrv-4.0.0-1.i386.deb
drwxr-xr-x root/root 0 2017-07-18 03:36 ./
drwxr-xr-x root/root 0 2017-07-18 03:36 ./usr/
drwxr-xr-x root/root 0 2017-07-18 03:36 ./usr/share/
drwxr-xr-x root/root 0 2017-07-18 03:36 ./usr/share/doc/
drwxr-xr-x root/root 0 2017-07-18 03:36 ./etc/
drwxr-xr-x root/root 0 2017-07-18 03:36 ./etc/opt/
drwxr-xr-x root/root 0 2017-07-18 03:36 ./etc/opt/brother/
drwxr-xr-x root/root 0 2017-07-18 03:36 ./etc/opt/brother/Printers/
drwxr-xr-x root/root 0 2017-07-18 03:36 ./etc/opt/brother/Printers/HLL2350DW/
drwxr-xr-x root/root 0 2017-07-18 03:34 ./etc/opt/brother/Printers/HLL2350DW/inf/
drwxr-xr-x root/root 0 2017-07-18 03:36 ./opt/
drwxr-xr-x root/root 0 2017-07-18 03:36 ./opt/brother/
drwxr-xr-x root/root 0 2017-07-18 03:36 ./opt/brother/Printers/
drwxr-xr-x root/root 0 2017-07-18 03:36 ./opt/brother/Printers/HLL2350DW/
-rw-r--r-- root/root 20486 2017-07-18 03:34 ./opt/brother/Printers/HLL2350DW/LICENSE_ENG.txt
-rw-r--r-- root/root 20799 2017-07-18 03:34 ./opt/brother/Printers/HLL2350DW/LICENSE_JPN.txt
drwxr-xr-x root/root 0 2017-07-18 03:36 ./opt/brother/Printers/HLL2350DW/cupswrapper/
-rw-r--r-- root/root 18351 2017-07-18 03:34 ./opt/brother/Printers/HLL2350DW/cupswrapper/Copying
-rw-r--r-- root/root 17840 2017-07-18 03:34 ./opt/brother/Printers/HLL2350DW/cupswrapper/brother-HLL2350DW-cups-en.ppd
-rwxr-xr-x root/root 26369 2017-07-18 03:34 ./opt/brother/Printers/HLL2350DW/cupswrapper/lpdwrapper
-rwxr--r-- root/root 7606 2017-07-18 03:34 ./opt/brother/Printers/HLL2350DW/cupswrapper/paperconfigml2
drwxr-xr-x root/root 0 2017-07-18 03:36 ./opt/brother/Printers/HLL2350DW/inf/
-rw-r--r-- root/root 891 2017-07-18 03:34 ./opt/brother/Printers/HLL2350DW/inf/brHLL2350DWfunc
-rw-r--r-- root/root 168 2017-07-18 03:34 ./opt/brother/Printers/HLL2350DW/inf/brHLL2350DWrc
-rwxr-xr-x root/root 863 2017-07-18 03:34 ./opt/brother/Printers/HLL2350DW/inf/setupPrintcap
drwxr-xr-x root/root 0 2017-07-18 03:36 ./opt/brother/Printers/HLL2350DW/lpd/
drwxr-xr-x root/root 0 2017-07-18 03:36 ./opt/brother/Printers/HLL2350DW/lpd/armv7l/
-rwxr-xr-x root/root 31460 2017-07-18 03:34 ./opt/brother/Printers/HLL2350DW/lpd/armv7l/brprintconflsr3
-rwxr-xr-x root/root 65940 2017-07-18 03:34 ./opt/brother/Printers/HLL2350DW/lpd/armv7l/rawtobr3
drwxr-xr-x root/root 0 2017-07-18 03:36 ./opt/brother/Printers/HLL2350DW/lpd/i686/
-rwxr-xr-x root/root 28281 2017-07-18 03:34 ./opt/brother/Printers/HLL2350DW/lpd/i686/brprintconflsr3
-rwxr-xr-x root/root 59014 2017-07-18 03:34 ./opt/brother/Printers/HLL2350DW/lpd/i686/rawtobr3
-rwxr-xr-x root/root 6698 2017-07-18 03:34 ./opt/brother/Printers/HLL2350DW/lpd/lpdfilter
drwxr-xr-x root/root 0 2017-07-18 03:36 ./opt/brother/Printers/HLL2350DW/lpd/x86_64/
-rwxr-xr-x root/root 35591 2017-07-18 03:34 ./opt/brother/Printers/HLL2350DW/lpd/x86_64/brprintconflsr3
-rwxr-xr-x root/root 67752 2017-07-18 03:34 ./opt/brother/Printers/HLL2350DW/lpd/x86_64/rawtobr3
drwxr-xr-x root/root 0 2017-07-18 03:36 ./var/
drwxr-xr-x root/root 0 2017-07-18 03:36 ./var/spool/
drwxr-xr-x root/root 0 2017-07-18 03:36 ./var/spool/lpd/
drw-r--r-- root/root 0 2017-07-18 03:34 ./var/spool/lpd/HLL2350DW/
- Eu quero saber se é possível para o driver ou impressora enviar mensagens para terceiros usando a conexão com a internet (através da máquina GNU/Linux à qual está conectada por USB). Presumo que seja possível para alguém que saiba mais sobre o sistema operacional e o CUPS do que eu determinar a resposta a essa pergunta. Você poderia explicar como o driver interage com a máquina, de forma que eu possa entender se ela pode enviar mensagens para a internet?
- Se é possível, em teoria, que o driver ou a impressora enviem mensagens para terceiros usando a conexão com a internet, quais são as minhas opções para bloquear o acesso ao seu acesso à internet?
Os drivers CUPS geralmente incluem um filtro (conversor) que é um programa Linux real em execução em uma conta de usuário limitada. Neste exemplo,
rawtobr3
parece ser o filtro que o arquivo PPD especifica para usar (para converter os dados de impressão fornecidos pelo CUPS no formato Brother "BR-Script3"). Como é um executável completo, ele pode fazer qualquer coisa que o sistema operacional permita que sua conta de usuário faça, incluindo acesso à rede.Você pode usar vários métodos, como AppArmor, nft/iptables (com regras baseadas em UID), roteamento de política (novamente com correspondência baseada em UID) ou eBPF (systemd's "IPAddressDeny=" em cups.service) para bloquear o acesso à rede para CUPS e os processos auxiliares que ele executa.
(Tenha cuidado para não proibir o acesso à rede localhost , pois o CUPS é arquitetado como um servidor IPP – ele recebe até trabalhos de impressão locais via "localhost:631".)
A maioria das impressoras modernas suporta IPP Everywhere (como parte de várias certificações como AirPrint ou Mopria); isso inclui IPP sobre USB, que pode ser usado por meio do
ipp-usb
daemon. As impressoras que suportam IPP Everywhere devem ser "sem driver", ou seja, devem aceitar trabalhos em um formato padrão (como PDF ou PCLm), o que significa que o driver Brother CUPS não é necessário para imprimir. Veja o artigo Debian Wiki para mais informações.Claro que poderia. Este driver vem com programas de filtro e scripts que são chamados como parte do processo de impressão. Eles podem fazer qualquer coisa além de seu trabalho original. Irão eles? Provavelmente não.
Você pode usar um módulo de segurança como o SELinux para restringir o que os programas podem fazer. Isso pode impedir que executáveis acessem arquivos arbitrários e façam coisas arbitrárias (como conectar-se à Internet ou excluir suas coisas ou qualquer outra coisa). O SELinux não é fácil de configurar (e manter, conforme você muda o sistema).
Uma solução mais fácil de configurar, mas igualmente desajeitada, seria apenas colocar o processo de impressão em contêineres, impedindo todo e qualquer acesso à rede para o contêiner.
Sua melhor aposta pode ser obter uma impressora que entenda PostScript diretamente. Existem drivers genéricos para eles. Eles não conteriam nenhum malware. Talvez você não consiga usar todos os recursos avançados da impressora.