Você está na página 1de 5

cristianofurtado.eti.br

Configurando Squid com SquidGuard

Enviado por jasonnfedora

09-Jan-2008

Atualizado em 22-Jan-2008

Squidguard

-

Introdução

O

Squidguard é um plugin redirecionador, controlador de acesso e filtro para o Web Proxy Cache Squid. O Squidguard

além de ser livre (segue a licença GPL) é muito flexível, extremamente rápido, fácil de instalar e portável (roda em

AIX, Dec-Unix, FreeBSD, Linux e Solaris).

O Squidguard pode ser usado para:

- limitar o acesso à servidores web para alguns usuários a partir de uma lista de URLs ou servidores conhecidos;

- bloquear o acesso à algumas URLs de acordo com uma lista de expressões regulares ou palavras para alguns

usuários;

- redirecionar URLs bloqueadas para uma página informativa;

- redirecionar usuários não registrados para uma página de registro;

- redirecionar os downloads mais populares para uma cópia local;

- redirecionar banners para um GIF vazio;

- ter diferentes regras de acesso de acordo com o dia, dia da semana, hora e etc;

- ter diferentes regras de acesso para diferentes tipos de usuários.

Portabilidade:

Uma das características do Squidguard é a sua portabilidade. Apesar de ter sido desenvolvido num sistema Sun Solaris 2.8, foi compilado e testado com sucesso nos sistemas:

- AIX;

- Dec-Unix;

- FreeBSD;

- RedHat;

- Solaris.

Como funciona o Squidguard?

Toda vez que o Squid é iniciado ele gera um número configurável de subprocessos do Squidguard. Quando o Squid recebe a requisição de acesso a uma URL, manda uma linha com o formato URL ip-address/fqdn ident method\n através de um pipe para a entrada padrão de um subprocesso Squidguard. Este então checa a informação de acordo com as suas lista e decide se a URL deve passar sem mudanças ou não.

A primeira atitude que o Squidguard toma ao receber a requisição é procurar um grupo para o cliente baseado no

endereço ip, num nome de domínio opcional e um id de usuário. Se o cliente não pertence a nenhum grupo, então a ação definida como padrão é tomada. Depois de achado o grupo o filtro aplica as regras de reescrita de acordo com o grupo, caso elas não existam, ele aplica a regra padrão. Se a URL foi modificada por uma regra de reescrita, então a nova URL e as informações complementares são retornadas. Caso não haja modificação na URL, uma linha em branco é retornada.

Depois de todos esse procedimentos o squid recebe a linha com o retorno através de um pipe. Para URLs que foram "aprovadas" o retorno é um \n, para as bloqueadas ou modificadas o retorno é uma linha como new_URL ip- address/fqdn ident method\n. Finalmente o Squid redireciona a página sem que o usuário ou o browser percebam.

cristianofurtado.eti.br

Há também como fazer com que o usuário perceba o redirecionamento pedindo para o browser requisitar a nova URL.

Distribuição Testada:

- Fedora 8

Dependências Necessárias

- squid-2.6.STABLE17-1.fc8

- squidGuard-1.2.0-15.fc7

- iptables-1.3.8-6.fc8

- iptables-ipv6-1.3.8-6.fc8

1- Passo

Para fazer a instalação dos pacotes digite o comando:

[root@localhost ~]#yum install squid squidGuard iptables iptables-ipv6 -y

2- Passo

Para começarmos vamos fazer a configuração do squid. Como root acesse ao arquivo squid.conf e insira as linhas abaixo:

#vim /etc/squid/squid.conf

acl all src 0.0.0.0/0.0.0.0

acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl to_localhost dst 127.0.0.0/8 acl rede_local src 192.168.0.0/24 acl SSL_ports port 443

acl Safe_ports port 80

# http

acl Safe_ports port 21

# ftp

acl Safe_ports port 443

# https

acl Safe_ports port 70

# gopher

acl Safe_ports port 210

# wais

acl Safe_ports port 1025-65535 # unregistered ports

acl Safe_ports port 280 acl Safe_ports port 488 acl Safe_ports port 591 acl Safe_ports port 777

acl CONNECT method CONNECT

# http-mgmt # gss-http # filemaker # multiling http

http_access allow rede_local http_access allow manager localhost http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports

http_access allow localhost http_access deny all

icp_access allow all

http_port 192.168.0.1:3128 transparent

hierarchy_stoplist cgi-bin ?

access_log /var/log/squid/access.log squid

acl QUERY urlpath_regex cgi-bin \?

http://www.jasonnfedora.eti.br

Fornecido por Joomla!

Produzido em: 3 August, 2009, 12:01

cristianofurtado.eti.br

cache deny QUERY

refresh_pattern ^ftp:

1440

20%

10080

refresh_pattern ^gopher:

1440

0%

1440

refresh_pattern .

0

20%

4320

acl apache rep_header Server ^Apache broken_vary_encoding allow apache

visible_hostname ipx

coredump_dir /var/spool/squid

#

redirect_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf redirect_children 8 redirector_bypass on

3- Passo

Agora vamos configurar o squidGuard. Insira o arquivo squidGuard.conf como informado abaixo:

#

#

CONFIG FILE FOR SQUIDGUARD

#

dbhome /var/squidGuard/blacklists logdir /var/log/squid

#

#

TIME RULES:

#

abbrev for weekdays:

#

s = sun, m = mon, t =tue, w = wed, h = thu, f = fri, a = sat

time workhours { weekly mtwhf 08:00 - 18:00

}

#

#

REWRITE RULES:

#

rew dmz { s@://admin/@://admin.foo.bar.no/@i s@://foo.bar.no/@://www.foo.bar.no/@i

}

#

#

SOURCE ADDRESSES:

#

src admin { ip

10.114.60.1

#

user within

root foo bar workhours

}

src rede_local { ip

192.168.0.0/24

}

src bar-clients { ip

10.114.60.5

}

http://www.jasonnfedora.eti.br

Fornecido por Joomla!

Produzido em: 3 August, 2009, 12:01

cristianofurtado.eti.br

#

# DESTINATION CLASSES:

#

dest good {

}

dest local {

}

dest adult { domainlist

blacklists/porn/domains

urllist

blacklists/porn/urls

}

expressionlist blacklists/porn/expressions

redirect

http://192.168.0.1/index.html

dest mail { domainlist urllist redirect

}

blacklists/mail/domains blacklists/mail/urls

http://192.168.0.1/index.html

acl {

admin {

}

pass

any

rede_local { pass } else { pass any

}

good !in-addr !adult !mail any

bar-clients {

pass

local none

}

default {

pass

local none

rewrite dmz redirect http://admin.foo.bar.no/cgi/blocked?clientaddr=%a+clientname=%n+clientident=%i+srcclass=%s+targetclass=%t+url=%u

}

}

Vou explicar o que é cada diretório:

dbhome - Diretório do banco de dados do squidGuard

logdir - Diretório de log do squid e squidGuard

time workhours - Controle de horário de acesso

rew dmz - Rede dmz

src admin - ip de origem do administrador

src rede_local - ip de origem da rede local

src bar-clients - ip origem de uma segunda rede

http://www.jasonnfedora.eti.br

Fornecido por Joomla!

Produzido em: 3 August, 2009, 12:01

cristianofurtado.eti.br

dest adult - Local dos arquivos de bloqueio de rede adult (sexo, gays (lembrei de um amigo meu do rio)).

dest mail - Local dos arquivos de bloqueio de emails (gmail, yahoo, hotmail, e outros).

Agora vamos para a melhor parte as ACL's

admin {

pass

any - Internet 100% liberada para os ips que estão na lista admin

rede_local {

pass

good !in-addr !adult !mail any - Fazendo o controle da rede local. e segue da seguinte forma, tudo que for difer

de !in-addr !adult !mail seja liberado.

bar-clients {

pass

default {

pass

local none - Liberando lista de acesso para a segunda rede. Neste caso não esta em funcionamento.

local none

rewrite dmz redirect http://admin.foo.bar.no/cgi/blocked?clientaddr=%a+clientname=%n+clientident=%i+srcclass=%s+targetclass=%t+url=%u (CONFIGURAÇÃO DEFAULT)