Next Previous Contents

2. O xhost

O xhost é o mecanismo mais simples e potencialmente o mais danoso de permitir acesso a um servidor X.

O princípio de funcionamento do xhost é simples: o X mantém uma lista de hosts que tem permissão de conectar aplicativos a si. Quando um host é acrescentado à lista, qualquer aplicativo daquele host pode ser conectado ao seu servidor X.

Por exemplo, para permitir que os aplicativos de myotherhost.example.org possam se conectar ao nosso servidor X, executamos a seguinte linha de comando:

$ xhost +myotherhost.example.org
                
Com esta linha de comando, podemos iniciar um aplicativo em myotherhost.example.org e apresentar a tela do mesmo no nosso servidor. Supondo que o nome de nosso host fosse myhost.example.org, bastaria uma seqüência do tipo:
myhost$ telnet myotherhost.example.org
username: eumesmo
password:
myotherhost$ export DISPLAY=myhost.example.org:0.0
myotherhost$ /usr/X11R6/bin/xeyes &
                

O que o exemplo faz é simples: abre uma conexão telnet para myotherhost.example.org, configura a variável $DISPLAY de acordo, e inicia o xeyes. Os ``olhos'' irão aparecer em nossa tela em myhost.example.org, e serão uma lembrança que o host remoto está nos espiando...

2.1 Modos de usar

O xhost pode ser usado de quatro formas: sem nenhum parâmetro, ele apresenta a lista de servidores que tem permissão para conectar-se ao nosso servidor X, e informa se a proteção por xhost está habilitada ou desabilitada:

$ xhost
access control enabled, only authorized clients can connect
INET:myotherhost.example.org
                        
O exemplo acima mostra o resultado após termos acrescentado o host myotherhost.example.org à lista de hosts permitidos do xhost.

Uma vez acrescentado o host, podemos retirar o mesmo da lista de controle de acesso do xhost usando a mesma linha de comando que usamos para acrescentar o host, apenas trocando o ``+'' por um ``-'':

$ xhost -myotherhost.example.org
myotherhost.example.org being removed from access control list
                        
A partir deste momento, os clientes de myotherhost.example.org não tem mais permissão para se conectar ao nosso servidor X.

Podemos também abrir completamente o nosso servidor, fazendo com que o mesmo aceite conexões de qualquer host:

$ xhost +
access control disabled, clients can connect from any host
                        
Imediatamente o xhost nos alerta para o fato que o controle de acesso está desabilitado, e que clientes de qualquer host podem se conectar ao noso servidor X.

Finalmente, podemos restabelecer o controle de acesso:

$ xhost -
access control enabled, only authorized clients can connect
                        
A partir deste momento, a lista que tínhamos passa a valer novamente. Se alguém duvida, execute um xhost...

2.2 Segurança do xhost

O leitor atento terá percebido que, quando acrescentamos o nome do host que poderia fazer conexões ao nosso X, não especificamos o usuário que poderia fazê-lo. Qual usuário do host remoto terá permissão para se conectar ao nosso host? Todos. É isto mesmo, todos os usuários que estiverem conectados no host remoto poderão conectar-se ao nosso X a partir do host remoto.

Imagine agora que você está sossegado digitando um texto quando o fundo de tela muda para uma figura ou fotografia desagradável. A culpa é nossa mesmo: deixamos o nosso X aberto para qualquer usuário daquele host remoto, e alguém resolveu animar a nossa janela, usando o comando xloadimage(1x) para isto. Para quem consegue ler e entender uma página man, isto é brincadeirinha...

Outros abusos possíveis incluem o dump da tela em um arquivo, com uma imagem de todo trabalho que estamos fazendo; e a carga de um logger de teclas, e o usuário remoto só tem que ficar atento para algo que se pareça com um login/senha...

Uma maneira simples de evitar estes abusos é agir rapidamente: usar o xhost +host para dar permissão de acesso, abrir o cliente remoto, e imediatamente após, executar um xhost -host para desabilitar o acesso. A desabilitação não vai afetar as conexões já estabelecidas, mas irá impedir novas conexões. É claro que entre a habilitação e a desabilitação pode acontecer muita coisa...


Next Previous Contents 1