Fórum Debian
Bloquear lista de sites com o iptables - Versão para Impressão

+- Fórum Debian (http://www.forumdebian.com.br)
+-- Fórum: Debian (/forum-4.html)
+--- Fórum: Segurança (/forum-18.html)
+--- Tópico: Bloquear lista de sites com o iptables (/thread-1327.html)



Bloquear lista de sites com o iptables - dalveson - 24/06/2010 08:44

salve galera, ak tenho o squid rodando perfeitamente, porem por mais que eu bloquei alguns sites como orkut, alguns usuarios sempre dao um jeito de achar um outro metodo para acessa-lo, agora gostaria de saber como eu faço para bloquear uma lista de site que se encontra em um arquivo via iptables.
Andei pesquisando e encontrei o seguinte:

for i in `cat lista.txt`; do
iptables -A FORWARD -d $i -j DROP
done

Mais me retornou o seguinte erro:
Try `iptables -h' or 'iptables --help' for more information.

alguem ae pode me dar essa força


Re: Bloquear lista de sites com o iptables - spikey - 24/06/2010 21:23

Olá,

Aqui teste e foi normal, somente adicionei as primeiras linhas #!/bin/bash

Código:
#!/bin/bash

for i in `cat lista.txt`; do
iptables -A FORWARD -d $i -j DROP
done



Re: Bloquear lista de sites com o iptables - fabio2paolini - 27/06/2010 03:25

Talvez o erro esteja na lista de sites "lista.txt".
Provavelmente você já saiba, mas nesta lista é necessário ter os números de IP no lugar dos nomes dos sites. Qualquer dúvida, poste parte deste arquivo aqui.

Caso você queira bloquear uma região de IPs você pode fazer algo assim:
Código:
iptables  -A FORWARD -m  iprange --dst-range  <IP min>-<IP max>  -j DROP
man iptables para maiores detalhes
Por fim, caso os usuários estejam usando números de IP para acessar sites, você pode simplesmente bloquear o acesso a números de IP através do Squid. Para isso, use uma regra similar a esta
Código:
acl regra_padroes  url_regex  -i "/etc/squid/word_rules.acl"
e dentro do arquivo /etc/squid/word_rules.acl ponha algo assim:
Código:
^http://[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/.*
^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/.*
e pronto, creio que IP nenhum vai passar pelo Squid. Nunca fiz, mas você poderia também liberar certas faixas de IP a terem acesso liberado, usando uma segunda regra similar a esta.


Re: Bloquear lista de sites com o iptables - spikey - 28/06/2010 14:05

Olha só:

Código:
r2d2:~# cat lista.txt
www.uol.com.br
r2d2:~# ./teste.sh
r2d2:~# iptables-save |grep DROP
-A FORWARD -d 200.147.35.142/32 -j DROP
-A FORWARD -d 200.221.2.45/32 -j DROP
-A FORWARD -d 200.147.3.142/32 -j DROP

Aqui ele bloqueou todos os ip's que respondem www.uol.com.br...


Re: Bloquear lista de sites com o iptables - dalveson - 30/06/2010 08:26

spikey consegui deu certo, nao sei te dizer o certo o que aconteceu, mais deu certo vlw pela força.


Re: Bloquear lista de sites com o iptables - dalveson - 30/06/2010 08:28

fabio2paolini Escreveu:Talvez o erro esteja na lista de sites "lista.txt".
Provavelmente você já saiba, mas nesta lista é necessário ter os números de IP no lugar dos nomes dos sites. Qualquer dúvida, poste parte deste arquivo aqui.

Caso você queira bloquear uma região de IPs você pode fazer algo assim:
Código:
iptables  -A FORWARD -m  iprange --dst-range  <IP min>-<IP max>  -j DROP
man iptables para maiores detalhes
Por fim, caso os usuários estejam usando números de IP para acessar sites, você pode simplesmente bloquear o acesso a números de IP através do Squid. Para isso, use uma regra similar a esta
Código:
acl regra_padroes  url_regex  -i "/etc/squid/word_rules.acl"
e dentro do arquivo /etc/squid/word_rules.acl ponha algo assim:
Código:
^http://[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/.*
^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/.*
e pronto, creio que IP nenhum vai passar pelo Squid. Nunca fiz, mas você poderia também liberar certas faixas de IP a terem acesso liberado, usando uma segunda regra similar a esta.


fabio2paolini, me explica melhor o lance de nenhum ip passas pelo squid com essa regra eu nunca tinha visto, vc me explicar melhor?


Re: Bloquear lista de sites com o iptables - fabio2paolini - 30/06/2010 10:30

Bom, a acl do tipo url_regex trabalha com expressões regulares, certo?. A expressão
Código:
^http://[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/.*
se encaixa com toda linha que começa com
Código:
http://xxx.xxx.xxx.xxx/
sendo x qualquer número. Enquanto a linha
Código:
^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/.*
se encaixa com toda linha que começa com
xxx.xxx.xxx.xxx/
Na verdade é um pouco mais geral do que isto, pois o termo {1,3}, que vem depois dos números '[0-9]', faz com que possa ter de 1 até 3 números em cada sequência.
Concluindo se você usa estas linhas:
Código:
acl regra_word url_regex  -i "/etc/squid/word_rules.acl"
http_access deny regra_word
e no arquivo /etc/squid/word_rules.acl você por as duas expressões acima. Então o squid irá bloquear qualquer tentativa de se acessar sites diretamente pelo número de IP, que acredito ser a maneira mais comum de se tentar contornar o bloqueio do Squid.
Resumindo, é um método de bloqueio usual através de expressão regular, sendo que neste caso a "expressão regular" é a forma geral de um número de IP.


Re: Bloquear lista de sites com o iptables - dalveson - 01/07/2010 09:02

hum entendi, realmente essa acl é uma mão na roda mesmo!
Mais me pintou outra duvida, sabe aqueles sites que as vezes te redireciona para algun serviço dele que ao inves de ter o nome so site no link, aparece o ip, eles seriam bloqueados tbm automaticamente?

tipo assim:
uma situação hipotetica, o link principal é esse:
http://www.forumdebian.com.br

ae sei la vamos supor que para alguem acessar este topico que estamos discutindo ak
Bloquear lista de sites com o iptables

quando ele clicar emcima do link ao inves dele te direciona para o link normal, ele faz algo mais ou menos parecido com isso:
http://111.111.111.111/Bloquear_lista_d ... o_iptables

a acl iria automaticamente bloquear ele tbm ne?
ae lhe pergunto como eu faria para que ele nao fosse bloqueado?
eu teria que criar uma outra regra antes dessa para mim inserir todos os ips que nao quero q sejam bloquados, ou tem outra maneira?


Re: Bloquear lista de sites com o iptables - fabio2paolini - 01/07/2010 12:00

Citar:Mais me pintou outra duvida, sabe aqueles sites que as vezes te redireciona para algun serviço dele que ao inves de ter o nome so site no link, aparece o ip, eles seriam bloqueados tbm automaticamente?
Esse é o lado ruim, eles serão bloqueados sim.
Caso você coloque a regra que bloqueie todos os números de ip então eu acho que a única forma de liberar números ou regiões específicas seria liberando elas antes como você mencionou.

Mas há uma outra maneira menos radical de bloquear ips ainda pelo squid. Por exemplo para bloquear o orkut: Antes eu executo
Código:
whois 74.125.113.85
(sendo que 74.125.113.85 foi o número que eu obtive para o Orkut usando o ping)
para obter a região de ip. O resultado é, entre outras coisas,
Código:
NetRange:   74.125.0.0 - 74.125.255.255
CIDR:       74.125.0.0/16
NetName:    GOOGLE
Neste caso seria necessário colocar uma expressão regular menos geral, como
Código:
^http://74\.125\.[0-9]{1,3}\.[0-9]{1,3}.*
^74\.125\.[0-9]{1,3}\.[0-9]{1,3}.*
De certo modo isso acaba sendo similar (em termos da complexidade do procedimento) a criar regras no iptables.


Re: Bloquear lista de sites com o iptables - dalveson - 06/07/2010 14:23

opa, desculpa a ausencia!
To pasando para agradecer a força fabio2paolini, vlw ae por ter me ajudado
abraço