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
"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