Apenas alguns outros pensamentos ...
- Permitir, mas bloquear com xhost (e / ou filtragem de rede)
A maneira tradicional de fazer isso é o servidor X escutar no soquete TCP e usar xhost para determinar quais hosts podem se conectar. Veja man page para xhost (1). (Além disso, é claro, o endereço IP e a filtragem de porta também ajudariam aqui, conforme observado por sugestões anteriores.)
- Apenas ouça na interface local
Por comentário de alanc acima, não há código agora, mas quase!
Lembre-se de que (quase) todos os hosts têm pelo menos duas interfaces, a interface de loopback lo0 (sempre 127.0.0.1) e a ethernet normal eth0 (ou wlan0 ou o que quer que seja, 192.168.0.128) e muitos têm mais. Geralmente, os servidores TCP / IP (ou seja, o servidor X) permitem conexões de entrada para qualquer um dos seus endereços IP em qualquer uma de suas interfaces, mas a maioria dos softwares permite que você especifique um endereço IP, se desejar. O trabalho real é feito por bind (2), que leva INADDR_ANY (0.0.0.0) ou um endereço IP real.
O servidor Xorg implementa -name local-address mas infelizmente isso é somente para o XDMCP (veja o arquivo os / xdmcp.c que o implementa corretamente até onde eu sei). A conexão real para o protocolo X, eu acredito, é feito por SocketINETCreateListener no arquivo /usr/include/X11/Xtrans/Xtranssock.c, que define o endereço para INADDR_ANY e, em seguida, vincula a ele sem processamento adicional. O que seria necessário é o sinalizador -from (que é tratado por os / xdmcp.c como FromAddress) para conectar-se de alguma forma à variável 'sockname' antes de SocketCreateListener () em Xtranssock.c. O problema, é claro, é que todas as coisas de transporte são realmente feitas de uma maneira neutra em termos de transporte, então é um pouco complicado obter as informações no Xtranssock.c
Os caminhos de arquivo e assim por diante podem variar, foi examinado com o Ubuntu 10.04 LTS e observe que os nomes de função no Xtranssock.c foram alterados por uma macro TRANS.
link
Espero que seja de alguma utilidade.
Atenciosamente
Jonathan.