No Linux,
ss sport = :5900
Informaria as conexões TCP atualmente estabelecidas na porta 5900.
Para mais alguma coisa, precisamos saber qual servidor VNC você está usando, pois existem dúzias.
Se você souber o nome do comando do servidor VNC,
lsof -ai tcp -c that-command
(como o usuário executando o servidor VNC ou como root) também lhe diria as conexões TCP atualmente estabelecidas tratadas por esse servidor VNC (caso não esteja na porta 5900).
Entre os métodos para fechar uma conexão TCP no caso geral, há:
-
tcpkill
(dedsniff
package) que falsifica os pacotes TCP que fechariam uma conexão. -
iptstate
(Linux). Se você estiver usando um firewall com estado. Você pode remover a conexão da tabela do rastreador de conexões do Linux ( x emiptstate
), o que normalmente faria com que pacotes mais novos fossem ignorados (se o firewall estivesse configurado para aceitar somente novas conexões com TCP SYN) . Isso não mataria a conexão, apenas a deixaria inativa. - Adicione regras de firewall para rejeitar outros pacotes transmitidos / recebidos nessa conexão (no Linux,
iptables
com destino "REJECT", correspondendo às portas TCP de origem e destino e aos endereços IP nas cadeias de filtro OUTPUT e INPUT) - anexe o gdb ao servidor vnc em execução e faça
call close(fd)
, em que fd é o descritor de arquivo para o soquete correspondente (que você descobriu comlsof
) seguido pordetach
(pode confundir o servidor vnc com muito aqueles, chamandoshutdown
em vez declose
pode ser mais seguro).