Sei sulla pagina 1di 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.
http://www.jasonnfedora.eti.br Fornecido por Joomla! Produzido em: 3 August, 2009, 12:01
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 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT

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 root foo bar
within 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 blacklists/mail/domains
urllist blacklists/mail/urls
redirect http://192.168.0.1/index.html
}

acl {
admin {
pass any
}

rede_local {
pass good !in-addr !adult !mail any
} else {
pass 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 local none - Liberando lista de acesso para a segunda rede. Neste caso não esta em funcionamento.

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
(CONFIGURAÇÃO DEFAULT)

http://www.jasonnfedora.eti.br Fornecido por Joomla! Produzido em: 3 August, 2009, 12:01

Potrebbero piacerti anche