Duvidas sobre Crontab, iptables e squid3

Iniciado por Kai Unido, 11 de Outubro de 2013, 13:18

tópico anterior - próximo tópico

Kai Unido

Boa tarde,
sou novo no forum e com servidores.
Ontem configurei meu servidor sozinho na mão apenas pesquisando no google.
Mas me deparei com algumas duvidas que não achei respostas mais especificas.

Minha primeira e mais importante duvida é com o iptables.
Eu encontrei um script na net para bloquear o facebook por IP range com o iptables já que com o proxy transparente eu não estava conseguindo bloquear o HTTPS.
Eu modifiquei o script de acordo com minhas necessidades e também pq aparentava estar faltando um "elif"... rs Segue o código abaixo:


#!/bin/bash

FACEBOOK_IP_RANGE="31.13.64.0-31.13.127.255 31.13.24.0-31.13.31.255 74.119.76.0-74.119.79.255 69.63.176.0-69.63.191.255 69.171.224.0-69.171.255.255 66.220.144.0-66.220.159.255 204.15.20.0-204.15.23.255 173.252.64.0-173.252.127.255"

usage() {
echo "Usage: $0 <libera|bloqueia>

Libera ou bloqueia o acesso ao Facebook através de regras no iptables
"
  exit 1
}

[ -z "$1" ] && usage

op="$1"

if [ "$op" != "libera" -a "$op" != "bloqueia" ]; then
  echo "Erro: operacao invalida. Use libera ou bloqueia." 1>&2
  exit 1
elif [ "$op" == "libera" ]; then
  echo Liberando
  iptables -F FACEBOOK
  exit $?
elif [ "$op" = "bloqueia" ]; then

echo "Bloqueando"

permitidos=$(egrep -v "(^#|^$)" /etc/squid/acessototal)

if ! iptables -nvL FACEBOOK &>/dev/null; then
  iptables -N FACEBOOK

  for face in $FACEBOOK_IP_RANGE; do
iptables -I FORWARD -m tcp -p tcp -m iprange --dst-range $face --dport 443 -j FACEBOOK
iptables -I FORWARD -m tcp -p tcp -m iprange --dst-range $face --dport 80 -j FACEBOOK
  done
else
  iptables -F FACEBOOK
fi

FACEBOOK_ALLOW="$permitidos"

for MSR_LIBERADO in $FACEBOOK_ALLOW; do
iptables -I FACEBOOK -s $MSR_LIBERADO -j ACCEPT
done

iptables -A FACEBOOK -j REJECT

fi


O problema ai é que quando eu uso o comando:
sudo sh firewall.sh libera

Ele da um flush na chain FACEBOOK, mas pelo que vejo ao listar as regras do iptables ele permanece em outra. segue imagem da VM:
Nessa primeira screenshot está as regras normais do servidor, para direcionamento do trafego pro squid e etc:
http://imageshack.us/a/img710/2145/u6vh.png

Nessa segunda imagem é rodando o comando de "bloqueio" (ele realmente bloqueia):
http://imageshack.us/a/img198/6205/fjd6.png

Nessa imagem estou listando as regras atuais:
http://imageshack.us/a/img6/4889/zpbg.png

E nessa última estou listando as regras após usar o comando "libera":
http://imageshack.us/a/img7/1299/1cz8.png

Ele libera mesmo, mas não retira as regras mesmo o script utilizando "iptables -F FACEBOOK".
Isso achei estranho, ele só remove se eu utilizar o "iptables -F". Mas ai remove todas as regras existentes nas chains.

--------------

Minha segunda duvida e mais simples é sobre o crontab.
Pesquisei no google e vi alguns exemplos de como montar o crontab para executar meu script nos horários corretos.
Mas fiquei com uma duvida, se eu utilizar o "crontab -e" para criar a regra ela será definitiva ou irá se apagar ao reiniciar o servidor?
E onde encontro uma documentação mais completa sobre a estrutura dele, pois fiquei com duvidas de como funciona os dias da semana por exemplo.

--------------

E minha duvida sobre o squid3.
No access.log ele lista muita coisa inutil como imagens, arquivos .css e .js, teria como eu listar apenas o link base que a pessoa acessou?

São essas as duvidas... rs

Agradeço deis de já pela ajuda.
Até +

zekkerj

Citarse eu utilizar o "crontab -e" para criar a regra ela será definitiva ou irá se apagar ao reiniciar o servidor?

Todas as operações do crontab são gravadas em arquivo, portanto são definitivas. Essa, especificamente, fica gravada em "/var/spool/cron/<USUARIO>".

CitarE onde encontro uma documentação mais completa sobre a estrutura dele, pois fiquei com duvidas de como funciona os dias da semana por exemplo.

man 5 crontab

CitarE minha duvida sobre o squid3.
No access.log ele lista muita coisa inutil como imagens, arquivos .css e .js, teria como eu listar apenas o link base que a pessoa acessou?

Não, nem deve, nem precisa. Quer ver menos coisa? É só filtrar o que você quer ver, com o comando "grep".
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

zekkerj

Sobre o bloqueio do facebook, eu não gosto de fazer bloqueio de aplicação na camada de rede. Pq se você tenta bloquear o serviço do facebook a partir dos seus IPs, você corre alguns riscos: primeiro, você vai bloquear qualquer host virtual hospedado nos mesmos endereços. Segundo, vai ficar vulnerável a qualquer mudança na lista de endereços. E terceiro, qualquer acesso indireto vai burlar o teu controle.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

Kai Unido

Boa tarde zekkerj.
Obrigado pela ajuda.

Mas fiquei com a duvida de qual seria a melhor alternativa para bloquear o facebook?
Pois o squid faz o bloqueio da porta 80 (HTTP) do facebook.
Mas quando vem pela porta 443 ele deixa passar, o famoso HTTPS.
E para o meu caso eu não posso bloquear tudo que entra pela porta 443 devido a outros sites como de bancos.

Li muito na net sobre essa dificuldade de uma grande maioria, acredito que vi também muitos posts aqui no forum sobre esse assunto.

Cheguei a achar algo na net também sobre o ssl_bump, mas me pareceu bastante complicado o uso.
Pois teria de criar um certificado no server com o openssl e redirecionar pra ele, o que acaba sendo errado pois redireciona o SSL que foi feito para não fazer isso, pelo que entendi.

Obrigado.

zekkerj

CitarMas fiquei com a duvida de qual seria a melhor alternativa para bloquear o facebook?
Pois o squid faz o bloqueio da porta 80 (HTTP) do facebook.
Mas quando vem pela porta 443 ele deixa passar, o famoso HTTPS.
O famoso HTTPS só não é tratado pelo Squid quando o infame proxy transparente está sendo usado. Usando detecção automática de proxy, vc faz todos os acessos passarem pelo Squid e ainda poderá usar autenticação.

A melhor alternativa pra bloquear uma aplicação é dentro da camada de aplicação. O Squid é bom pra isso, e programas de apoio ao squid, como o DansGuardian ou o SquidGuard podem te ajudar bastante.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

Kai Unido

Mais uma vez obrigado pelas duvidas tiradas.

Mas tenho uma ultima antes de começar a pesquisar mais sobre os programas de apoio.
No caso se eu tirar o transparent do proxy ele ainda vai conseguir pegar o log dos usuários?
Em um outro teste que fiz com a distribuição Zentyal (que usei antes do Ubuntu) quando não era transparent ele não colocava nada no access.log

Obrigado.

Arthur Bernardes

Eu prefiro fazer o bloqueio no Squid por palavras!!

zekkerj

CitarNo caso se eu tirar o transparent do proxy ele ainda vai conseguir pegar o log dos usuários?
Você não tem log dos usuários hoje, você tem log do IP de origem e destino.

Quando tirar o proxy transparente e passar a usar detecção automática, aí sim vai poder ter log dos usuários.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D