Restringir área de transferência para clientes X11 não confiáveis

2

Me deparei com este link , que descreve uma maneira de tornar certos clientes X11 não confiáveis [1 ], o que torna certas extensões X11 indisponíveis para elas. Note que eu sei perfeitamente que isso sozinho é inútil a menos que eu também use a separação UID, o que eu faço. Eu uso xsudo [2] para executar o crapware.

No entanto, mesmo com conexões não confiáveis, os clientes ainda podem monitorar a área de transferência. Se o usuário for crapware , os programas em execução em sua conta ainda poderão monitorar a seleção principal. Apenas tente:

watch -n0.5 xsudo crapware xclip -o 

As extensões de segurança são definitivamente úteis, pois evitam que clientes X11 não confiáveis registrem o teclado ou simulem pressionamentos de teclas, mas farejar na área de transferência é uma fraqueza. Como posso impedir o compartilhamento de área de transferência com clientes X11 não confiáveis por padrão?

Eu não estou interessado em coisas como firejail. Eu não me importo com namespaces. A separação do usuário do UNIX é tudo que eu preciso. Eu também gostaria de evitar o Xpra. É muito lento, comparado aos clientes conectados diretamente ao X11. Você pode realmente notar o atraso ao digitar.

[1] link

[2]

#!/bin/zsh
set -e

# Copied from https://notehub.org/rp5n2

if [[ $# -lt 1 ]]; then
    echo "Usage: $0 asuser [cmdline...]" >&2
    exit 1
fi

asuser=$1
shift

if [[ -z $DISPLAY ]]; then
    echo "DISPLAY is not set" >&2
    exit 1
fi

cookie=/tmp/.Xauthority-$DISPLAY-$asuser

if [[ ! -e $cookie ]]; then
    touch $cookie
    chmod 600 $cookie
    xauth -f $cookie generate $DISPLAY MIT-MAGIC-COOKIE-1 untrusted
    sudo chgrp $asuser $cookie
    chmod 660 $cookie
fi

export XAUTHORITY=$cookie

if [[ $# -gt 0 ]]; then
    exec sudo -u $asuser "$@"
else
    exec sudo -u $asuser -i
fi
    
por woky 01.02.2018 / 12:31

1 resposta

1

Você pode usar o servidor X aninhado nxagent em vez de xpra, é muito mais rápido para configurações locais.

nxagent também oferece um modo contínuo para aplicativos únicos. É um pouco difícil configurá-lo no modo contínuo e sem prancheta e com seu próprio cookie Xauthority. Você pode usar o x11docker para facilitar o uso:

x11docker --nxagent --exe -- yourapplication

ou curto:

x11docker -ne yourapplication

Para ser executado como outro usuário:

sudo x11docker --user someuser -ne -- yourapplication

Para permitir o compartilhamento da área de transferência, adicione a opção x11docker --clipboard . O nxagent permite isso por padrão, mas o x11docker o desativa, a menos que seja especificado.

Se você precisar de aceleração de hardware, instale xpra , Xwayland , weston e xdotool e execute

sudo x11docker --user someuser --xpra-xwayland --exe -- yourapplication

Configure com nxagent apenas e sem um cookie para clientes:

echo "nx/nx,clipboard=none:25" >/tmp/nxoptions
nxagent :25 -R -nolisten tcp -options /tmp/nxoptions
sudo -u someuser env DISPLAY=:25 yourapplication

Isso funciona apenas com o teclado dos EUA. Para obter outro layout de teclado, altere /tmp/nxoptions . Para layout de teclado alemão:

echo "nx/nx,clipboard=none,keyboard=evdev/de:25" >/tmp/nxoptions

Outra possibilidade é usar o Xephyr como servidor X aninhado. Mas não fornece um modo contínuo.

Xephyr :10
sudo -u someuser env DISPLAY=:10 openbox  # provide a window manager
sudo -u someuser env DISPLAY=:10 someapplication

Para aceleração de hardware com o Xephyr, você pode usar virtualgl . (Mas pode ser um pouco complicado com um usuário diferente, pois o virtualgl / vglrun precisa acessar para exibir: 0).

    
por 02.02.2018 / 21:33