
O Squid é um poderoso servidor proxy que
suporta conexões HTTP e HTTPS entre outros, ele reduz incrivelmente a
utilização de link e melhora o tempo de resposta fazendo cache das requisições
mais frequentes de páginas da internet em redes de computadores, entretanto
usar ele em ambientes de médio e grande porte torna-se um pouco complicado uma
vez que temos diversos usuários com politicas diferentes de acesso aos sites,
neste artigo demonstrarei como integrar o Squid ao Active Directory do Windows
2008 permitindo e liberando o acesso a sites por grupos de usuários.
Esse ambiente foi testado utilizando um
Windows 2008 R2 e um servidor Ubuntu 10.04 LTS com o Squid 2.7.
1. Primeiramente vamos preparar o ambiente
Windows, demonstrar como fazer em detalhes as configurações no AD não faz parte
do escopo do artigo mas no google diversos artigos demonstram como fazer.
Dentro de Active Directory Users and
Computers vamos primeiramente criar uma OU com o nome squid, criar dentro dela
o usuário squid e determinar uma senha forte para ele, criar também dois grupos
de usuários, INTERNET_LIBERADA e INTERNET_RESTRITA.
Essas configurações foram tudo o que precisam
ser feitas no Windows, daqui para diante será tudo no servidor Linux e Squid.
Para entendermos melhor a ideia e o porque do
que foi feito no AD veja:
O usuário squid será apenas para que o
servidor squid possa se autenticar no AD e ter acesso as contas de usuários e
grupos.
O grupo INTENRET_LIBERADA como sugerido pelo
próprio nome deverá conter os usuários que poderão ter acesso a internet, mais
adiante veremos ainda que para eles todos os sites serão liberados menos os que
estiverem classificados como sites proibidos dentro do server Squid.
O grupo INTERNET_RESTRITA deverá ter dentro
de si os usuários que terão todos os sites da internet bloqueados menos os
sites que estiverem liberados pelo administrador.
Obs.: A imaginação será o limite para as
regras que poderão ser criadas, mais grupos com finalidades diferentes poderão
ser incluídos de acordo com a necessidade de cada administrador.
2. Vamos instalar agora o Squid no servidor
Linux, para isso execute.
$ sudo apt-get install squid
3. Depois de instalado vamos configurar o
squid.conf que fica dentro de /etc/squid, vamos fazer uma cópia de segurança do
arquivo original do squid.conf
$ sudo cp squid.conf squid.conf.old
vamos então editar o arquivo squid.conf
alterando os parametros padrões e adicionando os novos deixando exatamente
assim:
##########################################################################
# SQUID 2.7 em Ubuntu 10.04LTS - Integrado
com Active Directory
#seudominio.local deverá ser substituído pelo seu
domínio válido exemplo empresa.br
#seuip deverá ser substituído pelo seu
endereço de IP do Controlador de domínio
#senha – Senha definida por você para o
usuário squid criado no AD.
##########################################################################
#Configurações de cache do Squid
#Cache de Ram
cache_mem 1024 MB # Determina o espaço da
memoria ram que será reservada para o cache.
maximum_object_size_in_memory 256 KB #
Determina o tamanho maximo que um unico objeto poderá ter para ficar no cache
ram.
#Cache em Disco
maximum_object_size 750 MB # Espaço do disco
destinado a ser usado como cache do squid
minimum_object_size 0
KB
cache_swap_low 90
cache_swap_high 95 # Limite máximo do cache
que ele pode chegar, depois disso começa a deletar cache mais antigo.
#Diretorio de armazenamento do Cache
cache_dir ufs /var/spool/squid 4096 16 256
#Linguagem de mensagem de erro do Squid
error_directory
/usr/share/squid/errors/Portuguese/
# Configuração da integração do Squid com o
AD
auth_param basic program
/usr/lib/squid/ldap_auth -R -b dc=seudominio,dc=local -f sAMAccountName=%s -hseuip -D cn=squid,ou=squid,dc=seudominio,dc=local -w senha
# Mensagem da popup que será aberta quando
algum site não estiver liberado, só irá aceitar as contas de usuário que forem
membro do grupo INTERNET_LIBERADA
auth_param basic children 5
auth_param basic realm Site nao liberado,
entre com usuario e senha.
auth_param basic credentialsttl 2 hour
auth_param basic casesensitive off
external_acl_type ldap_group %LOGIN
/usr/lib/squid/squid_ldap_group -R -b dc=seudominio,dc=local -D cn=squid,ou=squid,dc=seudominio,dc=local -w senha -f
(&(objectclass=person)(sAMAccountName=%v)(memberof=cn=%a,ou=squid,dc=seudominio,dc=local)) -h seuip
#ACL Restringe acesso a Internet por Grupos
do AD
acl proxyadmins external ldap_group
INTERNET_LIBERADA
acl proxyusers external ldap_group
INTERNET_RESTRITA
acl sites_sem_autenticacao dstdom_regex -i
/etc/squid/rules/sites_sem_autenticacao
acl sites_proibidos dstdom_regex -i
/etc/squid/rules/sites_proibidos
acl sites_restritos dstdom_regex
/etc/squid/rules/sites_restritos
acl password proxy_auth REQUIRED
# Lista de IP's externos liberados
acl ips_liberados dst
/etc/squid/rules/ips_liberados
#Recommended minimum
configuration:
acl all src all
acl manager proto
cache_object
acl localhost src
127.0.0.1/32
acl to_localhost dst
127.0.0.0/8
# Example rule
allowing access from your local networks.
# Adapt to list your
(internal) IP networks from where browsing
# should be allowed
acl localnet src
10.0.0.0/8 # RFC1918 possible internal network
acl localnet src
172.16.0.0/12 # RFC1918 possible internal network
acl localnet src
192.168.0.0/16 # RFC1918 possible internal network
acl SSL_ports port
443 # https
acl SSL_ports port
563 # snews
acl SSL_ports port
873 # rsync
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 Safe_ports port
631 # cups
acl Safe_ports port
873 # rsync
acl Safe_ports port
901 # SWAT
acl purge method
PURGE
acl CONNECT method
CONNECT
# Configuracao das
regras de acesso
http_access deny
sites_proibidos
http_access deny
sites_restritos !proxyadmins
http_access allow ips_liberados
all
http_access allow sites_sem_autenticacao
http_access allow
proxyadmins
http_access allow
proxyusers
http_access allow
localhost
# Only allow purge
requests from localhost
http_access allow
purge localhost
http_access deny
purge
# Deny requests to
unknown ports
http_access deny
!Safe_ports
# Deny CONNECT to
other than SSL ports
http_access deny
CONNECT !SSL_ports
#http_access allow
localnet
http_access allow
localhost
#Libera acesso para usuários convencionais
http_access allow proxyusers
# And finally deny
all other access to this proxy
http_access deny all
#Allow ICP queries
from local networks only
icp_access allow
localnet
icp_access deny all
# Por padrão Squid escuta pelas na porta 3128
para ele também escutar na porta 8080 foi adicionado nova httpport.
http_port 3128
http_port 8080
#We recommend you to
use at least the following line.
hierarchy_stoplist cgi-bin ?
#Arquivo de logs de acesso do Squid
access_log
/var/log/squid/access.log squid
#Suggested default:
refresh_pattern ^ftp:
40 20% 10080
refresh_pattern
^gopher: 40 0% 1440
refresh_pattern -i
(/cgi-bin/|\?) 0 0% 0
refresh_pattern
(Release|Package(.gz)*)$ 0 20% 2880
refresh_pattern . 0
20% 4320
# Don't upgrade
ShoutCast responses to HTTP
acl shoutcast
rep_header X-HTTP09-First-Line ^ICY.[0-9]
upgrade_http0.9 deny
shoutcast
# Apache mod_gzip and
mod_deflate known to be broken so don't trust
# Apache to signal
ETag correctly on such responses
acl apache rep_header
Server ^Apache
broken_vary_encoding
allow apache
# TAG:
extension_methods
# Squid only knows
about standardized HTTP request methods.
# You can add up to
20 additional extension methods here.
extension_methods
REPORT MERGE MKACTIVITY CHECKOUT
#Default:
# hosts_file
/etc/hosts
hosts_file /etc/hosts
# Leave coredumps in
the first cache dir
coredump_dir /var/spool/squid
#Fim da configuracao do squid.conf
Salve e saia do arquivo de configuração.
4. Vamos agora criar as listas de sites
proibidos, liberados e outros, em /etc/squid crie uma pasta chamada rules e
dentro dessa pasta os arquivos conforme abaixo.
$ sudo mkdir /etc/squid/rules
$ sudo touch /etc/squid/rules/sites_sem_autenticacao
$ sudo touch /etc/squid/rules/sites_proibidos
$ sudo touch /etc/squid/rules/sites_restritos
$ sudo touch /etc/squid/rules/ips_liberados
Vamos entender oque cada arquivo de regras deverá fazer.
$ sudo mkdir /etc/squid/rules
$ sudo touch /etc/squid/rules/sites_sem_autenticacao
$ sudo touch /etc/squid/rules/sites_proibidos
$ sudo touch /etc/squid/rules/sites_restritos
$ sudo touch /etc/squid/rules/ips_liberados
Vamos entender oque cada arquivo de regras deverá fazer.
sites_sem_autenticacao - Todos os sites
contidos nesse documento estarão liberados por padrão para todo mundo, nele
poderá ser colocado por exemplo o endereço da intranet da empresa, site da
empresa e demais sites que podem ser acessados por qualquer um.
sites_proibidos – Todos os sites que não
serão acessados nem pelas pessoas que estarão no grupo INTERNET_LIBERADA sites
como sites de sexo, badalas e etc são sugestões.
ips_liberados – Todos os endereços Ips
válidos colocados aqui dentro serão liberados para todos da empresa sem
necessidade de autenticação, é similar a regra sites_sem autenticacao mas é
para endereços IP.
5. Vamos agora criar o cache para o Squid e reiniciar o serviço squid para que as regras entrem em funcionamento.
$ sudo squid -z
$ sudo service squid restart
6. Agora devemos colocar no bronser das estações o IP e porta do servidor squid, isso pode ser feito manualmente ou via regra do próprio AD.
5. Vamos agora criar o cache para o Squid e reiniciar o serviço squid para que as regras entrem em funcionamento.
$ sudo squid -z
$ sudo service squid restart
6. Agora devemos colocar no bronser das estações o IP e porta do servidor squid, isso pode ser feito manualmente ou via regra do próprio AD.
No internet explorer
Ferramentas->Opções da
Internet->Conexões->Configurações da LAN
No Firefox
Ferramentas->Opções->Avançado->Rede->Configurar
Conexão
0 comentários:
Postar um comentário