Você precisa de um proxy (que pode ser incorporado em firewalls normais, ou pode ser um dispositivo especial, ou pode ser um firewall com "reconhecimento de aplicativos").
Algo como o squid é muito, muito comum. Você pode configurá-lo como um firewall transparente se estiver em seu gateway (em um firewall como, por exemplo, pfsense). Outro em comum no mundo do Windows é o ISA / TMG .
Todas essas soluções funcionam inspecionando o tráfego à medida que ele passa pelo dispositivo. O simples bloqueio de endereços IP não é uma solução particularmente boa, porque o endereço IP de um site pode mudar ou pode haver literalmente milhares de sites em um único endereço IP. Ao inspecionar o tráfego, você pode bloquear:
- Nome do domínio (por exemplo, bloco facebook.com)
- String de solicitação (por exemplo, bloquear qualquer coisa com? myrequest = asdf no URL)
- Conteúdo retornado (por exemplo, bloquear qualquer coisa com a palavra "frango" na página)
- Cabeçalhos de conteúdo (tipos mime, por exemplo, bloco RAR / ZIP)
- Comprimento do conteúdo (por exemplo, downloads de bloco > 5mb de tamanho)
- Conteúdo de vírus (por exemplo, você pode fazer a varredura de vírus enquanto o arquivo é baixado, bloqueando-o na borda da rede, não na máquina local)
etc etc. A maioria dos dispositivos irá até mesmo compilar um bom relatório para você dar uma análise dos hábitos de navegação de seus usuários. Principais sites, horários do dia, tipos de conteúdo, etc.
A maioria deles (como o squid e o TMG) também inclui armazenamento em cache, portanto, solicitações frequentes não precisam sair na Internet e voltar o tempo todo (por exemplo, a página inicial do Google)