Bloqueio permanente de um domínio no iptables

2

Suponha que eu queira bloquear o Facebook permanentemente. Para fazer isso, segui os seguintes processos:

#host -t a www.facebook.com

Exemplo de saída:

www.facebook.com has address 69.171.224.40

Encontre o CIDR

#whois 69.171.224.40 | grep CIDR

Exemplo de saída:

CIDR: 69.171.224.0/19

Para evitar o acesso de saída a www.facebook.com

Abordagem 1:

#iptables -I FORWARD -p tcp -d 69.171.224.0/19 -j DROP

Abordagem 2:

#iptables -I FORWARD -p tcp -d www.facebook.com -j DROP

Ambas as abordagens funcionam bem. Na abordagem 1 , o endereço IP pode ser alterado para que não bloqueie o Facebook permanentemente. Eu não sei sobre a abordagem 2 se bloqueará o Facebook permanentemente ou não. Se as abordagens acima não são o caminho certo para bloquear um domínio permanentemente, como posso fazê-lo?

    
por Jerry 16.02.2012 / 08:17

3 respostas

5

Usando o lema seguinte, se você usar, faça o mesmo.

# Mon to Fry time
acl blockfacebooktime time MTWHF 8:30-8:30
# Domain name
acl blockfacebookdotcom  dstdomain .facebook.com
    
por 16.02.2012 / 08:26
2

A abordagem 2 NÃO funcionará como você pode pensar. Você pode ler isto em iptables manual:

[!] -s, --source address[/mask]
          Source specification. Address can be either a network name, a hostname (please note that specifying any name to be resolved with a remote query  such
          as  DNS  is  a  really bad idea), a network IP address (with /mask), or a plain IP address.

Naturalmente, o mesmo se aplica à opção de destino -d . Isso ocorre porque iptables fará a pesquisa de DNS apenas uma vez e usará o IP recuperado na regra. Então, não vai funcionar se o IP for alterado depois disso.

Uma abordagem melhor é usar um servidor proxy como sugerido por @neolix. No entanto, seus usuários podem tentar ignorar seu proxy, a menos que você tenha regras realmente estritas para evitar isso.

    
por 16.02.2012 / 09:18
-1

Você pode usar a cadeia de autoscripting para bloquear todos os IPs do domínio. isto é, liste todos os IPs do domínio e bloqueie-os um a um. Se o IP já existir na tabela, a inserção será apenas ignorada. Faça o seguinte:

# nslookup www.facebook.com|grep "^Address: [1-9]"| while read l; do ip=$(sed "s/Address://" <<< "$l"); if [ -z "$(iptables -n -L FORWARD|grep $ip)" ]; then iptables -I FORWARD -j DROP -d $ip; echo Blocked $ip; fi; done

Esse script pode ser chamado de cron , por exemplo, cada minuto / hora, para renovar os endereços.

    
por 17.04.2017 / 09:52