Script bloqueio de sites dinâmicos e https>iptables  [RESOLVIDO]

Fórum de discussão exclusivo para "proxies".

Script bloqueio de sites dinâmicos e https>iptables

Mensagempor cesarjhony » Qui Dez 27, 2012 10:18 pm

Inspirado no nosso Colega JrBraga.
Foi inicialmente feito para bloquear https de sites com conteúdo sexual.
Está com muita gambiarra, mas funciona. huahsuhaushuhaus.
Basta dois arquivos de configuração feitos a mão, como uma lista:

sexo
iplocal
(formato do arquivo sexo:
Código: Selecionar todos
www.site.com
www.site.com.br
)
(formato do arquivo iplocal:
Código: Selecionar todos
10.0.0.2
10.0.0.3
10.1.1.0/24
)

Se eles estiverem no diretório dos .sh aqui mostrados, vai funfa direitinho.
São 4 arquivos de shell (por exemplo: principal.sh , atualizar.sh , semanal.sh , desinstalar.sh)
(para executar digite a linha:
Código: Selecionar todos
sh /caminho/completo/meuscript.sh
"/caminho/completo/" deve ser alterado para a pasta onde estão os arquivos com os codigos
"meuscript.sh" deve ser alterado para o nome do arquivo que queira executar.

"/partition/regrasjhony/fim/organizado/" deve ser alterado para a pasta que contiver os arquivos com esses codigos
Código: Selecionar todos
#!/bin/sh
caminho="/partition/regrasjhony/fim/organizado/"

###############limpa os treco tudo
#rm -f ${caminho}ipsexo
##rm -f ${caminho}limpar_restricao

#vai ficar assim
#dig +short www.f****.com >> ${caminho}ipsexo
#enquanto le o arquivo executa a descoberta de ips
sort ${caminho}sexo | while read p; do

dig +short $p >> ${caminho}ipsexo

done

#remover linha iguais, copiando e colando em cima do mesmo arquivo
sort ${caminho}ipsexo | uniq >> ${caminho}tempipsexo ; rm -f ${caminho}ipsexo ; mv ${caminho}tempipsexo ${caminho}ipsexo
sed '/timed out/d' ${caminho}ipsexo >> ${caminho}tempipsexo ; rm -f ${caminho}ipsexo ; mv ${caminho}tempipsexo ${caminho}ipsexo

#verifica a existencia de regras anteriores e as deleta em FORWARD
iptables -t filter -L >> ${caminho}verifica
if grep -q "RESTRICAO" "${caminho}verifica"
   then {
##########Apagar regras de redirecionar para a chain RESTRICAO
sort ${caminho}iplocalantigo | while read IPantigo; do
/usr/sbin/iptables -D FORWARD -p tcp -s $IPantigo --dport 20:79 -j RESTRICAO
/usr/sbin/iptables -D FORWARD -s $IPantigo -p tcp --dport 81:909 -j RESTRICAO
/usr/sbin/iptables -D FORWARD -s $IPantigo -p tcp --dport 914:8179 -j RESTRICAO
/usr/sbin/iptables -D FORWARD -s $IPantigo -p tcp --dport 8182:65535 -j RESTRICAO
done
#apagar cópia iplocalantigo
rm -f ${caminho}iplocalantigo
   }
fi
if grep -q "RESTRICAO" "${caminho}verifica"
   then {
###########Apagar Chain RESTRICAO
   /usr/sbin/iptables -t filter -F RESTRICAO
   /usr/sbin/iptables -t filter -X RESTRICAO
   }
fi
rm -f ${caminho}verifica
###########Criar nova chain com nome RESTRICAO
   /usr/sbin/iptables -t filter -N RESTRICAO
###########Politica padrão da chain RESTRICAO é accept
   iptables -t filter -A RESTRICAO -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT

###########Destinos bloqueados da RESTRICAO
   sort ${caminho}ipsexo | while read IP2; do
      /usr/sbin/iptables -I RESTRICAO -d $IP2 -j REJECT
done

sort ${caminho}iplocal | while read IP; do
###########Redirecionar para a chain RESTRICAO, os ips locais
/usr/sbin/iptables -I FORWARD -p tcp -s $IP --dport 20:79 -j RESTRICAO >> ${caminho}FORWARD
/usr/sbin/iptables -I FORWARD -s $IP -p tcp --dport 81:909 -j RESTRICAO >> ${caminho}FORWARD
/usr/sbin/iptables -I FORWARD -s $IP -p tcp --dport 914:8179 -j RESTRICAO >> ${caminho}FORWARD
/usr/sbin/iptables -I FORWARD -s $IP -p tcp --dport 8182:65535 -j RESTRICAO >> ${caminho}FORWARD
done

#faz copia de segurança
cp ${caminho}iplocal ${caminho}iplocalantigo



O segundo arquivo deve ficar no cron com intervalo de no max 5 min
Código: Selecionar todos
#!/bin/sh
caminho="/partition/regrasjhony/fim/organizado/"

###############limpa os treco tudo
#rm -f ${caminho}ipsexo
##rm -f ${caminho}limpar_restricao

#vai ficar assim
#dig +short www.f****.com >> ${caminho}ipsexo
#enquanto le o arquivo executa a descoberta de ips
sort ${caminho}sexo | while read p; do

dig +short $p >> ${caminho}ipsexo

done

#remover linha iguais, copiando e colando em cima do mesmo arquivo
sort ${caminho}ipsexo | uniq >> ${caminho}tempipsexo ; rm -f ${caminho}ipsexo ; mv ${caminho}tempipsexo ${caminho}ipsexo
sed '/timed out/d' ${caminho}ipsexo >> ${caminho}tempipsexo ; rm -f ${caminho}ipsexo ; mv ${caminho}tempipsexo ${caminho}ipsexo


e outro executado semanal ou mensalmente:
Código: Selecionar todos
#!/bin/sh
caminho="/partition/regrasjhony/fim/organizado/"
###############limpa os treco tudo
rm -f ${caminho}ipsexo


Para "desinstalar" (antes de excluir qualquer arquivo do conjunto)
Código: Selecionar todos
#!/bin/sh
caminho="/partition/regrasjhony/fim/organizado/"
##########Apagar regras de redirecionar para a chain RESTRICAO
sort ${caminho}iplocalantigo | while read IPantigo; do
/usr/sbin/iptables -D FORWARD -p tcp -s $IPantigo --dport 20:79 -j RESTRICAO
/usr/sbin/iptables -D FORWARD -s $IPantigo -p tcp --dport 81:909 -j RESTRICAO
/usr/sbin/iptables -D FORWARD -s $IPantigo -p tcp --dport 914:8179 -j RESTRICAO
/usr/sbin/iptables -D FORWARD -s $IPantigo -p tcp --dport 8182:65535 -j RESTRICAO
done
#apagar cópia iplocalantigo
rm -f ${caminho}iplocalantigo

###########Apagar Chain RESTRICAO
   /usr/sbin/iptables -t filter -F RESTRICAO
   /usr/sbin/iptables -t filter -X RESTRICAO

Lembrando, já está em andamento a homologação de um addon deste tipo oficial:
http://www.brazilfw.com.br/forum/viewtopic.php?f=77&t=85276&p=304859&hilit=iptables+rc.local#p304762
Agradecimentos ao vivaolinux http://www.vivaolinux.com.br/topico/Shell-Script/Como-fazer-Script-de-loop-de-uma-linha-com-duas-variaveis-chamadas-a-partir-de-arquivos-distintos
Obs: este código foi de minha total autoria, e pode ser editado ao gosto de quem quiser XD :mrgreen:
Editado pela última vez por cesarjhony em Sáb Dez 29, 2012 3:08 am, em um total de 4 vezes.
Avatar do usuário
cesarjhony
BFW Novice
 
Mensagens: 93
Registrado em: Qua Abr 14, 2010 4:14 am
BrazilFW Box: Celeron(R) 2.53, 1,36GB DDR2, HD 80, 1 Placa de rede onboard e 1 offboard. BFW 3.0.x, QoS, link de 2 Mbps

Re: Script bloqueio de sites dinâmicos e https>iptables

Mensagempor Eduardo » Sex Dez 28, 2012 9:33 am

Tópico movido para proxies.
Apos testes e report de usuários se ele se mostrar estável movemos para Tutoriais.

Caro autor, o BFW usado aqui é o 3.x?
Links úteis:
Regras do Fórum
Ajude-nos a ajuda-lo (Como Postar dúvidas/testes)
Tutorial "Aprendendo a Postar"
Como encerrar corretamente seu tópico
-----------------------------------------------------------------------------------------------------------------
* Voce ganha dinheiro com o Projeto BrazilFW? Então contribua com o Projeto BFW, faça uma doação clicando aqui
Avatar do usuário
Eduardo
BFW Moderator
BFW Beneméritos
BFW Manager
 
Mensagens: 3688
Registrado em: Dom Jul 12, 2009 1:27 pm
Localização: São Paulo (Zona Sul) - SP - Brasil
BrazilFW Box: Não usando o BFW no momento.

Re: Script bloqueio de sites dinâmicos e https>iptables

Mensagempor carlos_silvasantos » Sex Dez 28, 2012 11:45 am

Bom dia,

Boa iniciativa! !+

Estou acompanhando o tópico.

Att
Carlos Silva
Técnico em Informática | Bacharel em Informática | Especialista em Engenharia de Sistemas
E-mail: carlos.al.silva@live.com

"O dia está na minha frente esperando para ser o que eu quiser. E aqui estou eu, o escultor que pode dar forma a este dia." Albert Einstein
Avatar do usuário
carlos_silvasantos
BFW Intermediate
 
Mensagens: 692
Registrado em: Qua Jul 20, 2011 11:01 am
Localização: São Francisco de Assis - RS
BrazilFW Box: BFW 3.0.x 32 bits PAE
AMD Phenom(tm) II X4 3.215 GHz
4 GB DDR3 HD 500 GB SATA
Squid-DG-Haro-Layer7-MACxIP-QOS-BFW Cache 2.0-MySar-BandwidthD-SqStat

Re: Script bloqueio de sites dinâmicos e https>iptables  [RESOLVIDO]

Mensagempor cesarjhony » Sex Dez 28, 2012 7:26 pm

Passo a passo, bem simples pra quem não tá a fim de entender o script, e não manja muito do linux (nem eu manjo direito :/ )

No windão (win xp, 7, vista)
Baixar o winscp portable
http://winscp.net/eng/download.php
Desconpactar e executar o winscp.
No WinSCP, preencher campos:
Código: Selecionar todos
Host = endereço local do BFW (exemplo:192.168.0.1)
User name = nome deusuário (padrão = root)
Password = senha
Protocolo = SFTP
O restante deixe como está
Navegue até partition, e dentro desta, crie uma pasta exclusiva para o script (sem espaço no nome da pasta e nos nomes dos arquivos).
Neste tuto será "bloquear" sem aspas.
Dentro dessa nova pasta, crie um arquivo chamado principal.sh , e cole este código:
Código: Selecionar todos
#!/bin/sh
caminho="/partition/bloquear/"

###############limpa os treco tudo
#rm -f ${caminho}ipsexo
##rm -f ${caminho}limpar_restricao

#vai ficar assim
#dig +short www.f****.com >> ${caminho}ipsexo
#enquanto le o arquivo executa a descoberta de ips
sort ${caminho}sexo | while read p; do

dig +short $p >> ${caminho}ipsexo

done

#remover linha iguais, copiando e colando em cima do mesmo arquivo
sort ${caminho}ipsexo | uniq >> ${caminho}tempipsexo ; rm -f ${caminho}ipsexo ; mv ${caminho}tempipsexo ${caminho}ipsexo
sed '/timed out/d' ${caminho}ipsexo >> ${caminho}tempipsexo ; rm -f ${caminho}ipsexo ; mv ${caminho}tempipsexo ${caminho}ipsexo

#verifica a existencia de regras anteriores e as deleta em FORWARD
iptables -t filter -L >> ${caminho}verifica
if grep -q "RESTRICAO" "${caminho}verifica"
   then {
##########Apagar regras de redirecionar para a chain RESTRICAO
sort ${caminho}iplocalantigo | while read IPantigo; do
/usr/sbin/iptables -D FORWARD -p tcp -s $IPantigo --dport 20:79 -j RESTRICAO
/usr/sbin/iptables -D FORWARD -s $IPantigo -p tcp --dport 81:909 -j RESTRICAO
/usr/sbin/iptables -D FORWARD -s $IPantigo -p tcp --dport 914:8179 -j RESTRICAO
/usr/sbin/iptables -D FORWARD -s $IPantigo -p tcp --dport 8182:65535 -j RESTRICAO
done
#apagar cópia iplocalantigo
rm -f ${caminho}iplocalantigo
   }
fi
if grep -q "RESTRICAO" "${caminho}verifica"
   then {
###########Apagar Chain RESTRICAO
   /usr/sbin/iptables -t filter -F RESTRICAO
   /usr/sbin/iptables -t filter -X RESTRICAO
   }
fi
###########Criar nova chain com nome RESTRICAO
   /usr/sbin/iptables -t filter -N RESTRICAO
rm -f ${caminho}verifica
###########Politica padrão da chain RESTRICAO é accept
   iptables -t filter -A RESTRICAO -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT

###########Destinos bloqueados da RESTRICAO
   sort ${caminho}ipsexo | while read IP2; do
      /usr/sbin/iptables -I RESTRICAO -d $IP2 -j REJECT
done

sort ${caminho}iplocal | while read IP; do
###########Redirecionar para a chain RESTRICAO, os ips locais
/usr/sbin/iptables -I FORWARD -p tcp -s $IP --dport 20:79 -j RESTRICAO >> ${caminho}FORWARD
/usr/sbin/iptables -I FORWARD -s $IP -p tcp --dport 81:909 -j RESTRICAO >> ${caminho}FORWARD
/usr/sbin/iptables -I FORWARD -s $IP -p tcp --dport 914:8179 -j RESTRICAO >> ${caminho}FORWARD
/usr/sbin/iptables -I FORWARD -s $IP -p tcp --dport 8182:65535 -j RESTRICAO >> ${caminho}FORWARD
done

#faz copia de segurança
cp ${caminho}iplocal ${caminho}iplocalantigo
salve(no diquete desenhado) e feche o arquivo.

Agora crie outro arquivo com o nome atualizar.sh , e cole o código:
Código: Selecionar todos
#!/bin/sh
caminho="/partition/bloquear/"

###############limpa os treco tudo
#rm -f ${caminho}ipsexo
##rm -f ${caminho}limpar_restricao

#vai ficar assim
#dig +short www.f****.com >> ${caminho}ipsexo
#enquanto le o arquivo executa a descoberta de ips
sort ${caminho}sexo | while read p; do

dig +short $p >> ${caminho}ipsexo

done

#remover linha iguais, copiando e colando em cima do mesmo arquivo
sort ${caminho}ipsexo | uniq >> ${caminho}tempipsexo ; rm -f ${caminho}ipsexo ; mv ${caminho}tempipsexo ${caminho}ipsexo
sed '/timed out/d' ${caminho}ipsexo >> ${caminho}tempipsexo ; rm -f ${caminho}ipsexo ; mv ${caminho}tempipsexo ${caminho}ipsexo
salve e feche o arquivo.

Crie o 3° arquivo com o nome limpar.sh , e cole o código:
Código: Selecionar todos
#!/bin/sh
caminho="/partition/bloquear/"

###############limpa os treco tudo
rm -f ${caminho}ipsexo
salve e feche o arquivo.

Crie o 4º arquivo com o nome desinstalar.sh , e cole o código:
Código: Selecionar todos
#!/bin/sh
sed '/bloquear/d' /etc/brazilfw/cron.cfg >> /etc/brazilfw/tempcron.cfg ; rm -f /etc/brazilfw/cron.cfg ; mv /etc/brazilfw/tempcron.cfg /etc/brazilfw/cron.cfg
caminho="/partition/bloquear/"
##########Apagar regras de redirecionar para a chain RESTRICAO
sort ${caminho}iplocalantigo | while read IPantigo; do
/usr/sbin/iptables -D FORWARD -p tcp -s $IPantigo --dport 20:79 -j RESTRICAO
/usr/sbin/iptables -D FORWARD -s $IPantigo -p tcp --dport 81:909 -j RESTRICAO
/usr/sbin/iptables -D FORWARD -s $IPantigo -p tcp --dport 914:8179 -j RESTRICAO
/usr/sbin/iptables -D FORWARD -s $IPantigo -p tcp --dport 8182:65535 -j RESTRICAO
done
#apagar cópia iplocalantigo
rm -f ${caminho}iplocalantigo

###########Apagar Chain RESTRICAO
   /usr/sbin/iptables -t filter -F RESTRICAO
   /usr/sbin/iptables -t filter -X RESTRICAO
salve e feche o arquivo.

Configuração do cron, adicione essas linhas abaixo ao arquivo /etc/brazilfw/cron.cfg :
Código: Selecionar todos
30 * * * * sh /partition/bloquear/principal.sh #adicionar regras ao iptables
5,10,15,20,25,40,45,50,55,1 * * * * sh /partition/bloquear/atualizar.sh #atualizar lista de ip
* 4 * * 0 sh /partition/bloquear/limpar.sh #limpar lista de ip


Agora é só criar os arquivos "sexo" e "iplocal", no diretório "/partition/bloquear"
O arquivo sexo, deverá conter os sites que deverão ser bloqueados (sites que deverão ser bloqueados em modo https), no formato:
File: 
www.site.com
www.site.com.br
pt-br.facebook.com
www.facebook.com

E o arquivo iplocal deve conter os ips que deverão passar pelo filtro (deverão sofrer a restrição de sites em https), no formato:
File: 
10.0.1.5
10.1.0.0/24
192.168.3.17
192.168.1.192/27

A partir de agora pode recarregar o cron, e brincar de bloquear (esse troço bloqueia até o google!!).

Alguma duvida ou algum erro meu, é só dizer.
Tenho a falar a primeira vez que se executa pelo putty o principal.sh, pode dar 2 ou 3 erros, é normal, pois não achou a chain que o comando mandou deletar, alguns IF podem resolver o problema, fiquem a vontade. REVISADO E SEM ERROS
Editado pela última vez por cesarjhony em Seg Fev 04, 2013 10:49 pm, em um total de 2 vezes.
Avatar do usuário
cesarjhony
BFW Novice
 
Mensagens: 93
Registrado em: Qua Abr 14, 2010 4:14 am
BrazilFW Box: Celeron(R) 2.53, 1,36GB DDR2, HD 80, 1 Placa de rede onboard e 1 offboard. BFW 3.0.x, QoS, link de 2 Mbps

Re: Script bloqueio de sites dinâmicos e https>iptables

Mensagempor Eduardo » Sáb Dez 29, 2012 11:40 am

Por favor, alguém pode testar o código do Cesar para confirmar sua eficacia para que possamos trancar esse tópico e move-lo para tutoriais.

Cesar, !+
Links úteis:
Regras do Fórum
Ajude-nos a ajuda-lo (Como Postar dúvidas/testes)
Tutorial "Aprendendo a Postar"
Como encerrar corretamente seu tópico
-----------------------------------------------------------------------------------------------------------------
* Voce ganha dinheiro com o Projeto BrazilFW? Então contribua com o Projeto BFW, faça uma doação clicando aqui
Avatar do usuário
Eduardo
BFW Moderator
BFW Beneméritos
BFW Manager
 
Mensagens: 3688
Registrado em: Dom Jul 12, 2009 1:27 pm
Localização: São Paulo (Zona Sul) - SP - Brasil
BrazilFW Box: Não usando o BFW no momento.

Re: Script bloqueio de sites dinâmicos e https>iptables

Mensagempor rubinhorf » Sáb Jan 26, 2013 11:03 pm

cesarjhony escreveu:Passo a passo, bem simples pra quem não tá a fim de entender o script, e não manja muito do linux (nem eu manjo direito :/ )

No windão (win xp, 7, vista)
Baixar o winscp portable
http://winscp.net/eng/download.php
Desconpactar e executar o winscp.
No WinSCP, preencher campos:
Código: Selecionar todos
Host = endereço local do BFW (exemplo:192.168.0.1)
User name = nome deusuário (padrão = root)
Password = senha
Protocolo = SFTP
O restante deixe como está
Navegue até partition, e dentro desta, crie uma pasta exclusiva para o script (sem espaço no nome da pasta e nos nomes dos arquivos).
Neste tuto será "bloquear" sem aspas.
Dentro dessa nova pasta, crie um arquivo chamado principal.sh , e cole este código:
Código: Selecionar todos
#!/bin/sh
caminho="/partition/bloquear/"

###############limpa os treco tudo
#rm -f ${caminho}ipsexo
##rm -f ${caminho}limpar_restricao

#vai ficar assim
#dig +short www.f****.com >> ${caminho}ipsexo
#enquanto le o arquivo executa a descoberta de ips
sort ${caminho}sexo | while read p; do

dig +short $p >> ${caminho}ipsexo

done

#remover linha iguais, copiando e colando em cima do mesmo arquivo
sort ${caminho}ipsexo | uniq >> ${caminho}tempipsexo ; rm -f ${caminho}ipsexo ; mv ${caminho}tempipsexo ${caminho}ipsexo
sed '/timed out/d' ${caminho}ipsexo >> ${caminho}tempipsexo ; rm -f ${caminho}ipsexo ; mv ${caminho}tempipsexo ${caminho}ipsexo

#verifica a existencia de regras anteriores e as deleta em FORWARD
iptables -t filter -L >> ${caminho}verifica
if grep -q "RESTRICAO" "${caminho}verifica"
   then {
##########Apagar regras de redirecionar para a chain RESTRICAO
sort ${caminho}iplocalantigo | while read IPantigo; do
/usr/sbin/iptables -D FORWARD -p tcp -s $IPantigo --dport 20:79 -j RESTRICAO
/usr/sbin/iptables -D FORWARD -s $IPantigo -p tcp --dport 81:909 -j RESTRICAO
/usr/sbin/iptables -D FORWARD -s $IPantigo -p tcp --dport 914:8179 -j RESTRICAO
/usr/sbin/iptables -D FORWARD -s $IPantigo -p tcp --dport 8182:65535 -j RESTRICAO
done
#apagar cópia iplocalantigo
rm -f ${caminho}iplocalantigo
   }
fi
if grep -q "RESTRICAO" "${caminho}verifica"
   then {
###########Apagar Chain RESTRICAO
   /usr/sbin/iptables -t filter -F RESTRICAO
   /usr/sbin/iptables -t filter -X RESTRICAO
   }
fi
###########Criar nova chain com nome RESTRICAO
   /usr/sbin/iptables -t filter -N RESTRICAO
rm -f ${caminho}verifica
###########Politica padrão da chain RESTRICAO é accept
   iptables -t filter -A RESTRICAO -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT

###########Destinos bloqueados da RESTRICAO
   sort ${caminho}ipsexo | while read IP2; do
      /usr/sbin/iptables -I RESTRICAO -d $IP2 -j REJECT
done

sort ${caminho}iplocal | while read IP; do
###########Redirecionar para a chain RESTRICAO, os ips locais
/usr/sbin/iptables -I FORWARD -p tcp -s $IP --dport 20:79 -j RESTRICAO >> ${caminho}FORWARD
/usr/sbin/iptables -I FORWARD -s $IP -p tcp --dport 81:909 -j RESTRICAO >> ${caminho}FORWARD
/usr/sbin/iptables -I FORWARD -s $IP -p tcp --dport 914:8179 -j RESTRICAO >> ${caminho}FORWARD
/usr/sbin/iptables -I FORWARD -s $IP -p tcp --dport 8182:65535 -j RESTRICAO >> ${caminho}FORWARD
done

#faz copia de segurança
cp ${caminho}iplocal ${caminho}iplocalantigo
salve(no diquete desenhado) e feche o arquivo.

Agora crie outro arquivo com o nome atualizar.sh , e cole o código:
Código: Selecionar todos
#!/bin/sh
caminho="/partition/bloquear/"

###############limpa os treco tudo
#rm -f ${caminho}ipsexo
##rm -f ${caminho}limpar_restricao

#vai ficar assim
#dig +short www.f****.com >> ${caminho}ipsexo
#enquanto le o arquivo executa a descoberta de ips
sort ${caminho}sexo | while read p; do

dig +short $p >> ${caminho}ipsexo

done

#remover linha iguais, copiando e colando em cima do mesmo arquivo
sort ${caminho}ipsexo | uniq >> ${caminho}tempipsexo ; rm -f ${caminho}ipsexo ; mv ${caminho}tempipsexo ${caminho}ipsexo
sed '/timed out/d' ${caminho}ipsexo >> ${caminho}tempipsexo ; rm -f ${caminho}ipsexo ; mv ${caminho}tempipsexo ${caminho}ipsexo
salve e feche o arquivo.

Crie o 3° arquivo com o nome limpar.sh , e cole o código:
Código: Selecionar todos
#!/bin/sh
caminho="/partition/bloquear/"

###############limpa os treco tudo
rm -f ${caminho}ipsexo
salve e feche o arquivo.

Crie o 4º arquivo com o nome desinstalar.sh , e cole o código:
Código: Selecionar todos
#!/bin/sh
sed '/bloquear/d' /etc/brazilfw/cron.cfg >> /etc/brazilfw/tempcron.cfg ; rm -f /etc/brazilfw/cron.cfg ; mv /etc/brazilfw/tempcron.cfg /etc/brazilfw/cron.cfg
caminho="/partition/bloquear/"
##########Apagar regras de redirecionar para a chain RESTRICAO
sort ${caminho}iplocalantigo | while read IPantigo; do
/usr/sbin/iptables -D FORWARD -p tcp -s $IPantigo --dport 20:79 -j RESTRICAO
/usr/sbin/iptables -D FORWARD -s $IPantigo -p tcp --dport 81:909 -j RESTRICAO
/usr/sbin/iptables -D FORWARD -s $IPantigo -p tcp --dport 914:8179 -j RESTRICAO
/usr/sbin/iptables -D FORWARD -s $IPantigo -p tcp --dport 8182:65535 -j RESTRICAO
done
#apagar cópia iplocalantigo
rm -f ${caminho}iplocalantigo

###########Apagar Chain RESTRICAO
   /usr/sbin/iptables -t filter -F RESTRICAO
   /usr/sbin/iptables -t filter -X RESTRICAO
salve e feche o arquivo.

Configuração do cron, adicione essas linhas abaixo ao arquivo /etc/brazilfw/cron.cfg :
Código: Selecionar todos
30 * * * * sh /partition/bloquear/principal.sh #adicionar regras ao iptables
5,10,15,20,25,40,45,50,55,1 * * * * sh /partition/bloquear/atualizar.sh #atualizar lista de ip
* 4 * * 0 sh /partition/bloquear/limpar.sh #limpar lista de ip


Agora é só criar os arquivos "sexo" e "iplocal", no diretório "/partition/bloquear"
O arquivo sexo, deverá conter os sites que deverão ser bloqueados, no formato:
File: 
www.site.com
www.site.com.br
pt-br.facebook.com
www.facebook.com

E o arquivo iplocal deve conter os ips que deverão passar pelo filtro, no formato:
File: 
10.0.1.5
10.1.0.0/24
192.168.3.17
192.168.1.192/27

A partir de agora pode recarregar o cron, e brincar de bloquear (esse troço bloqueia até o google!!).

Alguma duvida ou algum erro meu, é só dizer.
Tenho a falar a primeira vez que se executa pelo putty o principal.sh, pode dar 2 ou 3 erros, é normal, pois não achou a chain que o comando mandou deletar, alguns IF podem resolver o problema, fiquem a vontade. REVISADO E SEM ERROS



Boa noite.
Cesar Tentei exatamente da foma como você explicou, mas aqui não funciono.
uso versão 3.0.258.
Avatar do usuário
rubinhorf
BFW Curious
 
Mensagens: 8
Registrado em: Sáb Jan 26, 2013 7:06 pm
BrazilFW Box:

Re: Script bloqueio de sites dinâmicos e https>iptables

Mensagempor cesarjhony » Sex Fev 01, 2013 11:18 pm

NENHUM ERRO, fiz testes em VM seguindo totalmente o tutorial, não sei o que ouve no seu caso.

O script não bloqueia HTTP e nem o ping (ICMP), só bloqueia HTTPS.
Tente MANUALMENTE, sem a ajuda do cron.
a execução no putty é
Código: Selecionar todos
cd /partition/bloquear
sh principal.sh


Dê alguns atualizar no putty
Código: Selecionar todos
cd /partition/bloquear
sh atualizar.sh


e após, um principal.sh
Código: Selecionar todos
cd /partition/bloquear
sh principal.sh


100% funcional, lembrem-se use com sites com HTTPS, assim https://www.facebook.com/
TESTE NO NAVEGADOR

E lógico, Muito obrigado por testar, rubinhorf.
Avatar do usuário
cesarjhony
BFW Novice
 
Mensagens: 93
Registrado em: Qua Abr 14, 2010 4:14 am
BrazilFW Box: Celeron(R) 2.53, 1,36GB DDR2, HD 80, 1 Placa de rede onboard e 1 offboard. BFW 3.0.x, QoS, link de 2 Mbps

Re: Script bloqueio de sites dinâmicos e https>iptables

Mensagempor rubinhorf » Sáb Fev 02, 2013 7:26 pm

Caro colega Cesar, eu também não sei o que posso estar fazendo de errado, por isso gravei esse vide que mostra exatamente o que eu fiz, por favor de uma olhada nele e veja onde eu errei.

Low quality version

Só para lembrar no video não mostra eu limpando a cache do BFW e nem do navegador, mas acredite eu já fiz isso e também esperei mais de 10 minutos para que o crom rodace, em outros testes e não deu certo também ;-)

Por favor aguardo resposta colega Cesar, estou precisando muito desse script para deixar o BFW redondinho no meu serviço, se você puder acistir o vídeo e me ajudar, fico muito grato por dividir o seu conhecimento comigo e com os colegas do nosso forum.

Abraso Rubens .
Avatar do usuário
rubinhorf
BFW Curious
 
Mensagens: 8
Registrado em: Sáb Jan 26, 2013 7:06 pm
BrazilFW Box:

Re: Script bloqueio de sites dinâmicos e https>iptables

Mensagempor cesarjhony » Seg Fev 04, 2013 10:37 pm

Notei no video que a configuração do arquivo "iplocal" você seguiu a risca a configuração que passei, e foi exatamente por isso que não deu certo.
A maquina XP que você testou tem o ip:
10.1.1.115
e esse ip não está na caixa do tutorial. Basta você apagar os ips que colocou dentro do arquivo iplocal , e colocar "10.1.1.115" , no seu caso.
Obrigado, eu serei mais Claro, nas minhas explicações, pois não evidenciei o uso dos arquivos "sexo" e "iplocal".
Pois, agora os faço:
O arquivo "sexo" deve-se colocar os sites que devem ser bloqueados no modo https.
O arquivo "iplocal" deve-se por os ips que devem ser restringidos (maquinas que não terão acesso aos sites em https).
Ambos aquivos nos formatos citados anteriormente.

Obrigado pela enorme atenção rubinhorf. :o!
Editado pela última vez por cesarjhony em Qua Fev 06, 2013 2:57 pm, em um total de 1 vez.
Avatar do usuário
cesarjhony
BFW Novice
 
Mensagens: 93
Registrado em: Qua Abr 14, 2010 4:14 am
BrazilFW Box: Celeron(R) 2.53, 1,36GB DDR2, HD 80, 1 Placa de rede onboard e 1 offboard. BFW 3.0.x, QoS, link de 2 Mbps

Re: Script bloqueio de sites dinâmicos e https>iptables

Mensagempor rubinhorf » Ter Fev 05, 2013 11:09 am

cesarjhony escreveu:Notei no video que a configuração do arquivo "iplocal" você seguiu a risca a configuração que passei, e foi exatamente por isso que não deu certo.
A maquina XP que você testou tem o ip:
10.1.1.115
e esse ip não está na caixa do tutorial. Basta você apagar os ips que colocou dentro do arquivo ipsexo, e colocar "10.1.1.115" , no seu caso.
Obrigado, eu serei mais Claro, nas minhas explicações, pois não evidenciei o uso dos arquivos "sexo" e "iplocal".
Pois, agora os faço:
O arquivo "sexo" deve-se colocar os sites que devem ser bloqueados no modo https.
O arquivo "iplocal" deve-se por os ips que devem ser restringidos (maquinas que não terão acesso aos sites em https).
Ambos aquivos nos formatos citados anteriormente.

Obrigado pela enorme atenção rubinhorf. :o!


Não esquenta, eu é quem to precisando, tenho sorte de você estar dando sua atenção.
Obrigado pela atenção Cesar, vou fazer as alterações hoje a noite no pc de casa antes de implantar na empresa. E mais uma vez obrigado pela atenção, retorno mais tarde para dizer o que aconteceu.

:D
Avatar do usuário
rubinhorf
BFW Curious
 
Mensagens: 8
Registrado em: Sáb Jan 26, 2013 7:06 pm
BrazilFW Box:

Re: Script bloqueio de sites dinâmicos e https>iptables

Mensagempor cesarjhony » Ter Fev 05, 2013 6:16 pm

Rubinhorf, estou no aguardo.

Para um melhor funcionamento do "programinha" deve-se entender o que ele faz, eis a explicação:
O script atualizar.sh faz a atualização dos endereços IP no arquivo "ipsexo" (na mesma pasta do programa); deve-se executa-lo de 5 em 5 min, ou mais, dependendo do tamanho da sua lista, se ela for grande mais de 20 sites deve-se aumentar o tempo de atualização de 7 a 10min, se maior que 50 sites deve-se aumenta-la para 15 ou mais (acompanhar o uso do cpu, e a demora para responder requisições no brasilfw).
O script limpar.sh remove todas os IPs no arquivo "ipsexo", é necessário pois um dos sites pode deixar de usar algum IP depois de algum tempo; deve-se defir para rodar de mês em mês ou até mesmo semanalmente no "CRON"(agendador de tarefas do BFW).
O script desinstalar.sh serve para limpar as referencia no iptables (apagara a referencia RESTRICAO em FORWARD, apaga a chain RESTRICAO e remove a linhas do cron com que conter a palavra "bloquear").
O script principal.sh, cria a chain RESTRICAO, referencia ela na chain FORWARD aos IPs contidos no arquivo iplocal, cria uma lista de IPs com base no arquivo "sexo" com o nome de "ipsexo", cria 4 regras para cada IP do arquivo "ipsexo" na chain RESTRICAO, verifica se existem regras anteriores na chain RESTRICAO e as deleta, faz uma cópia de seguraça do "iplocal" com o nome "iplocalantigo" (por vezes sem necessidade).
Avatar do usuário
cesarjhony
BFW Novice
 
Mensagens: 93
Registrado em: Qua Abr 14, 2010 4:14 am
BrazilFW Box: Celeron(R) 2.53, 1,36GB DDR2, HD 80, 1 Placa de rede onboard e 1 offboard. BFW 3.0.x, QoS, link de 2 Mbps

Re: Script bloqueio de sites dinâmicos e https>iptables

Mensagempor rubinhorf » Qua Fev 06, 2013 11:43 am

Eu intendi o funcionamento, e pelo que vi no script ele faz exatamente isso, mas o que eu ainda não intendi é por que ainda não funcionou, :-(
Removi os IP's que estavão no arquivo iplocal e coloquei o ip da maquina Virtual que não podia acessar o facebook no caso ip era 10.1.1.155.

Vou fazer a topologia do laboratório
Maquina Física com windows 7, 1 placa física e outra virtual simulando 2 placas físicas no virtualbox, (1ª placa / placa física com internet 192.168.1.101)
(2ª placa - placa virtual / Loopback do windows sem internet, ip 10.1.1.5)
Maquina virtual 1 (maquina rodando BFW, eth0 estático ip 192.168.1.10 com internet / eth1 local ip 10.1.1.1 )
Maquina virtual 2 (maquina rodando WinXP, ip 10.1.1.155).

bom é isso ai, minha duvida é sera que ta tudo certo?
ah.. outra duvida, la no iplocal no seu arquivo tem ums ip's com uma / e logo depois um numero, exemplo: 10.1.1.0/24 , o que seria essa barra com numero logo apos? :?

eu não terminei todos os teste ainda, tive algumas idéias e vou tentar quando voltar para casa, no caso só anoite, mas ainda volto para informa-lo, mais uma vez obrigado pela atenção.

Abraço.
Avatar do usuário
rubinhorf
BFW Curious
 
Mensagens: 8
Registrado em: Sáb Jan 26, 2013 7:06 pm
BrazilFW Box:

Re: Script bloqueio de sites dinâmicos e https>iptables

Mensagempor cesarjhony » Qua Fev 06, 2013 12:34 pm

Em primeiro lugar, /24 , é a mascara de rede, e as regra você pode encontrar facilmente no google.
Vou fazer uma Video aula pra você, usando a configuração 10.1.1.115 , mas tem que ter cuidado, e fazer certinho, e depois que deu certo, ai sim você pode brincar com as configurações.
Por hora procure saber redes (IP v4). Abraçs, logo logo a video aula aki.

Fiz uma cirurgia (retirei um dente) e talvez eu não consiga postar o video hoje, tontura do caramba.
Avatar do usuário
cesarjhony
BFW Novice
 
Mensagens: 93
Registrado em: Qua Abr 14, 2010 4:14 am
BrazilFW Box: Celeron(R) 2.53, 1,36GB DDR2, HD 80, 1 Placa de rede onboard e 1 offboard. BFW 3.0.x, QoS, link de 2 Mbps

Re: Script bloqueio de sites dinâmicos e https>iptables

Mensagempor cesarjhony » Qua Fev 06, 2013 2:55 pm

cesarjhony escreveu:Notei no video que a configuração do arquivo "iplocal" você seguiu a risca a configuração que passei, e foi exatamente por isso que não deu certo.
A maquina XP que você testou tem o ip:
10.1.1.115
e esse ip não está na caixa do tutorial. Basta você apagar os ips que colocou dentro do arquivo ipsexo, e colocar "10.1.1.115" , no seu caso.
Obrigado, eu serei mais Claro, nas minhas explicações, pois não evidenciei o uso dos arquivos "sexo" e "iplocal".
Pois, agora os faço:
O arquivo "sexo" deve-se colocar os sites que devem ser bloqueados no modo https.
O arquivo "iplocal" deve-se por os ips que devem ser restringidos (maquinas que não terão acesso aos sites em https).
Ambos aquivos nos formatos citados anteriormente.

Obrigado pela enorme atenção rubinhorf. :o!

ví um erro meu na explicação, na parte:
" Basta você apagar os ips que colocou dentro do arquivo ipsexo, e colocar" o arquivo é o iplocal .
Avatar do usuário
cesarjhony
BFW Novice
 
Mensagens: 93
Registrado em: Qua Abr 14, 2010 4:14 am
BrazilFW Box: Celeron(R) 2.53, 1,36GB DDR2, HD 80, 1 Placa de rede onboard e 1 offboard. BFW 3.0.x, QoS, link de 2 Mbps

Re: Script bloqueio de sites dinâmicos e https>iptables

Mensagempor rubinhorf » Qua Fev 06, 2013 4:54 pm

Eu vi esse erro e vi também que o ip do vídeo não era 10.1.1.115 e sim 10.1.1.155, mas tudo bem não tem problema, na verdade eu testei nos 2 arquivos ipsexo e no sexo com ip 10.1.1.155.

mas uma coisa me ocorreu eu não coloquei estenção nos arquivos exemplo sexo.sh, eles estão assim sexo , não seria esse o meu erro?

A respeito do dente, só pra você saber também vou arrancar 2 amanhã :cry:

Abraço e melhora ai com sua tontura.
Avatar do usuário
rubinhorf
BFW Curious
 
Mensagens: 8
Registrado em: Sáb Jan 26, 2013 7:06 pm
BrazilFW Box:

Re: Script bloqueio de sites dinâmicos e https>iptables

Mensagempor rubinhorf » Qua Fev 06, 2013 10:05 pm

Boa noite Cesar, depois de vários testes aqui no laboratório cheguei a uma conclusão, o Script que vai no arquivo cron.cfg não está fazendo o papel dele corretamente, sera que você consegue arrumar? Eu vou tentar arrumar aqui mas como eu não entendo muito de linux talvez demore muito ou até eu nem consiga.

Mas vou tentar.

depois volto.
Avatar do usuário
rubinhorf
BFW Curious
 
Mensagens: 8
Registrado em: Sáb Jan 26, 2013 7:06 pm
BrazilFW Box:

Re: Script bloqueio de sites dinâmicos e https>iptables

Mensagempor rubinhorf » Qui Fev 07, 2013 1:47 am

é... pela linha de comondo não roda mesmo, somente pelo terminal esta rodando, o arquivo .sh não e executado pelo cron.cfg. Não rodando pelo cron fica complicado por que dai vou ter que ficara de tempo em tempo executando pelo terminal.

Mas vou ver se descubro um camando que faz com que ele execute direto por linha de comando.

Fui...
Avatar do usuário
rubinhorf
BFW Curious
 
Mensagens: 8
Registrado em: Sáb Jan 26, 2013 7:06 pm
BrazilFW Box:

Re: Script bloqueio de sites dinâmicos e https>iptables

Mensagempor rubinhorf » Qui Fev 07, 2013 9:37 pm

Boa noite Cesar melhorou da dor de cabeça?

Voltei para dizer que o script funcionou, descobri o que estava dando errado, aqui explico.
O arquivo principal.sh criado pelo programa WinSCP no decorrer do tutorial, não da permissão para os arquivos .sh serem executados, então tive que dar um comando via terminal na pasta /partition/bloquear (chmod +x principal.sh) para que ele tivesse permissão de ser executado por linha de comando.

depois disso voa-lá o script funcionou, só dei um ajustes de tempo no agendador de tarefas arquivo cron.cfg.

bom por fim funcionou o script, muito obrigado Cesar pela sua atenção, pode fechar o tópico se preferir

Vlw :aplause: dancing
Avatar do usuário
rubinhorf
BFW Curious
 
Mensagens: 8
Registrado em: Sáb Jan 26, 2013 7:06 pm
BrazilFW Box:

Re: Script bloqueio de sites dinâmicos e https>iptables

Mensagempor cesarjhony » Qui Fev 07, 2013 10:29 pm

Deve ser a versão, o meu aqui deu perfeitinho, já que não "executa" os arquivos, mas o "sh".
na linha de comando do winscp deve se digitar assim:
sh principal.sh
estou mandando um vídeo pra te mostrar , falta 30 min de Upload rsrs.
Fico feliz pela sua ai batalha ter dado certo.... Lembrando isso deve ser melhor aproveito como um complemento ao bloqueio por proxy.
O vídeo foi feito a partir de um BFW 2.258 do ZERO, somente mudando a rede lógica.
Obrigado....
Avatar do usuário
cesarjhony
BFW Novice
 
Mensagens: 93
Registrado em: Qua Abr 14, 2010 4:14 am
BrazilFW Box: Celeron(R) 2.53, 1,36GB DDR2, HD 80, 1 Placa de rede onboard e 1 offboard. BFW 3.0.x, QoS, link de 2 Mbps

Re: Script bloqueio de sites dinâmicos e https>iptables

Mensagempor cesarjhony » Qui Fev 07, 2013 11:21 pm

Como prometido, eis o video com do funcionamento do script.
Low quality versionNo vídeo aparece valores repetidos no comando "iptables -L RESTRICÃO", pois o iptables mostra, por padrão, o hostname ao invés do IP, pode-se verificar no arquivo "ipsexo" que são diferentes, são dinâmicos, cuidado com isso.

Qualquer sugestão para facilitar a vida do usuário é só falar.
Peço que testem a estabilidade em longo prazo, verifiquem sempre o arquivo de ip dos sites (ipsexo), a utilização da CPU, e vulnerabilidades.
Lista muito longa de sites = maior processamento = maior delay
CUIDADO, o script muda o iptables, olhem sempre a quantidade de regras com os comandos (terminal, putty):
Código: Selecionar todos
iptables -L FORWARD

e também
Código: Selecionar todos
iptables -L RESTRICAO


Moderador, se for para mandar esse tópico para a seção de tutoriais, favor colocar o meu SEGUNDO POST no lugar do primeiro, a fim de facilitar o usuário.
Avatar do usuário
cesarjhony
BFW Novice
 
Mensagens: 93
Registrado em: Qua Abr 14, 2010 4:14 am
BrazilFW Box: Celeron(R) 2.53, 1,36GB DDR2, HD 80, 1 Placa de rede onboard e 1 offboard. BFW 3.0.x, QoS, link de 2 Mbps


Voltar para Proxies

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 13 visitantes