Primeiro a parte fácil:o cliente não precisa de nenhuma conexão de entrada, pois não recebe nenhuma conexão (ele as faz), então você pode bloquear com segurança tudo que entra.
Agora para os que saem. O próprio servidor só precisa de TCP acesso na porta que está escutando, então se você tiver uma porta fixa, basta abri-la (por padrão 1433 para uma instância padrão) e pronto.
Mas como você está usando portas dinâmicas, a configuração é um pouco mais difícil. Basicamente, "porta dinâmica" significa que o servidor escuta em uma porta "aleatória" cada vez que é iniciado, e o serviço SQL Browser informa aos clientes em qual porta está escutando cada instância (esta é a configuração padrão para instâncias nomeadas).
Então, para isso, primeiro você precisa permitir conexões de saída para o navegador SQL, que escuta em UDP 1434 . Agora você também precisará da conexão normal do servidor como antes, que ainda está em TCP , mas desta vez a porta é desconhecida (já que é aleatória). Então, no máximo a regra mais restritiva que você pode fazer é permitir todas as portas TCP, talvez também filtradas por programa cliente (ssms.exe por exemplo) ou por qualquer outro parâmetro que seu firewall suporte.