Bloquear sites com regras iptables é uma idéia muito ruim, principalmente porque o iptables (como a maioria dos firewalls) lida com os endereços IP, e a relação entre um site e seus endereços IP é bastante frouxa :
-
Um site pode ter muitos endereços IP, que podem ser alterados com bastante frequência. Uma vez que as regras do iptables são criadas, mesmo que você especifique o nome de um site como parte de uma regra, o primeiro endereço IP naquele momento é usado. Se o endereço do site mudar, suas regras do iptables estarão desatualizadas.
-
Um endereço IP pode hospedar muitos sites (e isso acontece com frequência). Isso só será mais frequente, devido à escassez de endereços IP. Se você bloquear um endereço IP, bloqueará todos os sites hospedados nele.
Portanto, mesmo que outras respostas expliquem como você o faz, peço-lhe que procure outra solução. Por exemplo, a instalação de um proxy http transparente conseguirá o que você precisa. Este transparente HTTP proxy HOWTO está um pouco desatualizado, mas ajudará você a começar.
Uma vez que você tenha um proxy transparente, você pode adicionar regras arbitrárias a ele para bloquear sites específicos, você nem precisa usar o recurso de cache do squid, se você não quiser.
Existem outras maneiras de lidar com o bloqueio de sites (outros firewalls, proxies, etc.), mas as regras do iptables são praticamente uma das piores formas possíveis de lidar com isso.