Nota: Eu escrevi isso horas atrás, mas eu estou no caminho de Sandy, então eu fui embora e esqueci de pressionar o botão enviar
Portanto, existem duas maneiras de conseguir isso e ambas fazem algo diferente. Será impossível bloquear realmente o Facebook, pois qualquer um poderia usar um site proxy e contornar suas restrições. Eles também podem enviar um SSH para um servidor que não seja restrito. Nenhum-a-menos aqui vamos nós ...
iptables
bash$ sudo iptables -A OUTPUT -p tcp -d 69.171.247.21 --dport 443 -j REJECT
bash$ sudo iptables -A OUTPUT -p tcp -d 66.220.149.88 --dport 443 -j REJECT
bash$ sudo iptables -A OUTPUT -p tcp -d 66.220.152.16 --dport 443 -j REJECT
bash$ sudo iptables -A OUTPUT -p tcp -d 69.171.234.21 --dport 443 -j REJECT
bash$ sudo iptables -A OUTPUT -p tcp -d 69.171.237.16 --dport 443 -j REJECT
O problema é que isso não impede o Facebook de adicionar um novo endereço IP para o facebook.com resolver. Você pode escrever um script para executar constantemente e obter as últimas informações:
#!/bin/bash
for i in $(host facebook.com | grep "has address " | cut -d' ' -f4)
do iptables -A OUTPUT -p tcp -d $i --dport 443 -j REJECT
done
Nota: isso precisa de uma pequena modificação, pois pode produzir erros
dns
Esta solução também não é perfeita. DNS é apenas a base do sistema de nomenclatura, acertando o endereço IP diretamente ganharia. Se você possui o servidor de nomes Interno para sua rede, você pode configurar uma entrada para facebook.com para resolver em outro lugar. Eu usaria isso em conjunto com o iptables acima.
sslstrip - não recomendado em todos os
Poderíamos até dar um passo adiante. Se você possui todas as máquinas na rede que você está tentando bloquear o Facebook, você pode gerar um certificado CA raiz, instalar a chave pública em todas as máquinas. Man-in-the-middle todo o tráfego SSL renunciar todos os sites com seus certs e matar ativamente as conexões do Facebook. No entanto, essa é uma ideia perigosa e tem implicações de privacidade (especialmente em um ambiente corporativo).