Na maioria dos casos, os caminhos de rede que os aplicativos usam são assimétricos; ou seja, você pode bloquear a porta apropriada no tráfego de entrada para impedir conexões de entrada, mas permitir que o tráfego nessa porta seja liberado para permitir a saída.
Se você estiver trabalhando com computadores Windows que estão em um domínio, você pode use as Políticas de Grupo do Active Directory para configurar o Firewall do Windows nesses computadores para bloquear as portas de entrada apropriadas.
No entanto, no caso específico do TeamViewer, eles fornecem um programa cliente que um usuário pode executar, que se conecta aos servidores do TeamViewer e roteia as conexões de entrada ao longo desse caminho; assim, um firewall de entrada não seria suficiente. Você também precisaria configurar uma regra (com o Firewall do Windows ou outro local da sua rede) para bloquear o tráfego para o teamviewer.com, mas seus usuários não seriam capazes de usar a própria ferramenta.
Em suma, não acho que seja fácil bloquear o aplicativo TeamViewer de aceitar conexões de entrada, enquanto ainda permite que ele inicie as de saída. O que eu faria nessa situação é instalar o Wireshark em um computador cliente e fazer o perfil do tráfego de rede envolvido em uma conexão de entrada com o cliente escutando e em uma conexão de saída para trabalhar em um computador diferente. É possível que haja alguns tipos de tráfego que apareçam apenas na conexão de entrada, que você pode bloquear com o Firewall do Windows para impedir que essas conexões funcionem.