Breve descrição
O Squid é um servidor proxy que suporta HTTP, HTTPS, FTP e outros. Ele reduz a utilização da conexão e melhora os tempos de resposta fazendo cache de requisições freqüentes de páginas web numa rede de computadores. Ele pode também ser usado como um proxy reverso.
O Squid foi escrito originalmente para rodar em sistema operacional tipo Unix, mas ele também funciona em sistemas Windows desde sua versão 2.6.STABLE4.
Proxy manualmente configurado
Em um proxy manualmente configurado, o browser sabe que é necessário fazer uma requisição ao servidor proxy, então, temos uma série de funções que o browser pode solicitar, como forçar a atualização do cache, verificar se as credenciais de autenticação foram fornecidas previamente, ou seja, o cliente sabe que deve falar com um proxy e fará a requisição direto a este. Além disso, o servidor, por sua vez, possui o número IP do cliente que fez aquela requisição, o que possibilita criar ACL’s especificas e contrloes de log mais apurados.
Proxy Transparente
Em um proxy transparente, não há necessidade de configurarmos o browser. O cliente fara sua requisição ao gateway padrão daquela rede, e então, com uma regra e firewall previamente configurada, o gateway fará o redirecionamento para o proxy, que por usa vez realizará seu trabalho.
A maior vantagem deste modelo é que não temos a necessidade de configurar os browsers manualmente, o que seria justificável em uma rede aonde não temos o poder de manipular o computador dos usuários ( como um provedor de internet, por exemplo).
Em compensação, perderemos a flexibilidade dos logs e autenticação, já que o navegador web não está passando por um proxy, e também teremos que fazer NAT para acessos para sites que utilizam HTTPS, já que o squid não sabe lidar com este tipo de conteúdo quando esta trabalhando de forma transparente.
Para implementarmos esse redirecionamento precisamos apenas inserir no Iptables, que é o software para criação de firewall em Linux, a seguinte regra:
Se o redirecionamento for para uma máquina diferente
#iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 80 -j DNAT –to 192.168.1.10:3128
Se o redirecionamento for para a mesma máquina
#iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 80 -j REDIRECT –to-port 3128
Estas regras dizem ao firewall que todas a requisições que entrarem pela interface eth0 (interface usada neste caso apenas como exemplo), no nosso caso esta é a interface onde está ligada nossa rede interna, destinadas a porta 80, que é a porta padrão do serviço WWW, e que o protocolo seja o TCP, devem ser redirecionadas para a porta 3128, que é onde nosso servidor proxy está ouvindo. No primeiro caso como o Squid não está instalado na mesma máquina onde está o firewall este redirecionamento é feito para a máquina com IP 192.168.1.10.
Feito o redirecionamento o Squid assume o controle da conexão e aplica suas regras de forma que sejam liberados os acessos apenas de acordo com as regras nele definidas.
Tipos comuns de ACL’s
Basicamente, as ACLS’s disponíveis no squid para utilização na maioria dos casos podem ser agrupadas na seguinte lista:
- ACL’s de origem
- ACL’s de destino
- ACL’s de horário
acl <nome-da-acl> < tipo-da-acl> <padrão-da-acl>
Vamos comentar estes três tipos nas seções seguintes:
ACL’s de origem
ACL’s de origem são utilizadas para controlar todo e qualquer acesso que tenha como origem um determinado padrão.
Essa origem, geralmenteé um endereço de host ou endereço de rede. Também pode ser configurado um domínio, mas tenha em mente que, neste caso, é necessário que seu servidor proxy esteja completamente hábil a resolver estes endereços.
exemplo:
acl rede_interna src 192.168.1.0/24
ACL’s destino
ACL’s destino são mais comuns e frequentemente utilizadas para criar padrões que casem com determinados endereços de rede, endereço de domínios, partes de um domínio e também por expressões regulares. Vamos dar uma olhada na construção desses ACL’s.
exemplo:
acl domínios_liberados dstdomain .uol.com.br .terra.com.br
ACL’s de horário
ACL’s de horário são muito úteis. quando queremos, por exemplo, permitir acesso a sites de relacionamento durante o horário de almoço ou fora do horário de expediente. Vamos ver uma ACL’s que poderíamos utilizar para especificar o horário de almoço, e outra para especificar o horário da manhã.
acl almoco time 12:00 – 13:00
acl manha time 08:00 – 11:59
acl almoco time MTWHF 12:00-13:30
Segue tabela de abreviação dos dias.
Abreveação | Dia da semana
S – domingo
M – segunda-feira
T – terça-feira
W – quarta-feira
H – quinta-feira
F -sexta-feira
A – sábado
Filtros
Outro recurso interessante para o uso de um proxy é o conceito de filtro de conteúdo, que possibilita a filtragem do conteúdo web dos usuários. Para realizar essa configuração, podemos usar os seguintes filtros.
- src – filtro por rede ou endereço IP
- time – filtro por hora e dia da semana
- urlpath_regex – filtro de complemento de uma url
- url_regex – filtro de um string na url
- dstdomain – filtro de uma url
- proxy_auth – filtro por usuários autenticados
- arp – filtro por MAC address
- proto – filtro por protocolos
- port – filtro por porta
Filtrando acessos com o squid
Uma das obrigações de um Administrador de Sistemas em alguns ambientes é controlar o que deve ou não ser acessível na internet a partir da rede interna. Então, para que possamos entender como trabalhar com ACL’s, vamos criar o seguinte cenário, onde devemos criar um conjunto de ACL’s que resulte na seguinte situação, qualquer host na minha rede deve ser impedido de navegar em qualquer domínio.com, tendo como única exceção o site www.gnulinuxbr.com. Como fazer isso?
acl rede_interna src 192.168.1.0/24
acl dominios_com dstdomain .com
acl dominio_com_l dstdomain .gnulinuxbr.com
http_access allow dominio_com_l
http_access deny dominios_com
http_access allow rede_interna
http_access deny all
Outro ponto importante, é o ajuste do cahce em disco.
No caso abaixo, estou especificando: 512MB de cache, com 128 diretórios e 256 subdiretórios.
cache_dir ufs /var/spool/squid 512 128 256
Definindo o cache que será armazenado em memória
cache_mem 20 MB
Instalando o squid no CentOS.
O primeiro passo para instalação do squid no CentOS, é configurar um repositório de pacotes.
Abaixo o link para adicionar um repositório no CentOS.
http://gnulinuxbr.com/category/tutoriais-diversos/adicionando-reposit-orio-no-centos/
Adicionado o repositórios, vamos a sua instalação:
# yum install squid
2
3
4
Configurações iniciais
A configuração padrão do squid permite nenhum tipo de navegação, por medidas de segurança. A primeira coisa que devemos fazer é especificar qual rede o squid deve ouvir, e também devemos especificar um ACL do tipo origem que case com o nosso endereço IP.
Veja o exemplo do meu arquivo bem simples, sem nenhum tipo de autenticação.
# mkdir -p /etc/squid/regras
# touch /etc/squid/regras/dominios_liberados.txt
# touch /etc/squid/regras/dominios_bloqueados.txt
# touch /etc/squid/regras/ip_bloqueados.txt
# touch /etc/squid/regras/palavras_bloqueadas.txt
# vim squid.conf
# DEFINDO O HOSTNAME
visible_hostname squid-simples
# DEFININDO AS ACLS
# ACL PARA REDE INTERNA
acl rede_interna src 192.168.1.0/24
# LIBERANDO O SISTEMA
acl sites_internos dstdomain www.dominio.om.br webmail.dominio.com.br
# DOMINIOS LIBERADOS
acl dominios_liberados dstdomain -i “/etc/squid/regras/dominios_liberados.txt”
# DOMINIOS BLOQUEADOS
acl dominios_bloqueados dstdomain -i “/etc/squid/regras/dominios_bloqueados.txt”
# PALAVRAS BLOQUEADAS
acl palavras_bloqueadas url_regex -i “/etc/squid/regras/palavras_bloqueadas.txt”
# IPs BLOQUEADOS
acl ips_bloqueados src “/etc/squid/regras/ip_bloqueados.txt”
# BARRAR ARQUIVOS DE SOM E VIDEO EM GERAL
acl videos_audios urlpath_regex -i \.avi$ \.mpeg$ \.mpg$ \.mp3$ \.mp2$ \.mp2v$ \.ogg$ \.wav$ \.wma$ \.wmv$ \.rar$
# ACESSO DIRETO PARA O SISTEMA INTERNO
acl DOMINIO-INTERNO dstdomain www.DOMINIO.com.br webmail.DOMINIO.com.br
always_direct allow DOMINIO-INTERNO
http_access allow DOMINIO-INTERNO
# LIBERANDO E BLOQUEANDO OS GRUPOS
http_access allow sites_internos
http_access allow dominios_liberados
http_access deny ips_bloqueados
http_access deny dominios_bloqueados
http_access deny palavras_bloqueadas
http_access deny videos_audios
http_access allow rede_interna
http_access deny all
Após a configuração do conf, não esqueça de alimentar os arquivos criados.
# squid -z
# /etc/init.d/squid restart
Conf comentado
#Está porta é usada para troca de informações entre servidores proxy.
#Não use o ICP se você tem um único proxy-pai que você sempre usa.
#Para desabilitar, bastacolocar um 0. Padrão: 3130
icp_port 0
#Especifica o número da porta através do qual o Squid irá receber e
#enviar requisições HTCP de e para caches vizinhos. Para desabilitar,
#colocar 0. O padrão é 4827.
htcp_port 0
#Ela é responsável por dizer ao Squid que ele deve buscar os dados diretamente
#na origem, sem passar pelos vizinhos na hierarquia. Padrao do squid
hierarchy_stoplist cgi-bin ?
#Esta ACL diz ao squid para não armazenar em cache o conteúdo dos CGI’s, pois
#obviamente não é interessante por tratar-se de conteúdo dinâmico
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
#Quantidade de memoria usada pelo squid
cache_mem 256 MB
#esvazia o cache
cache_swap_low 80
cache_swap_high 85
#tamanho maximo para gravacao no cache squid
maximum_object_size 64 MB
#tamanho minimo para gravacao no cache squid
minimum_object_size 0 KB
# Tamanho maximo dos objetos mantidos em memoria.
maximum_object_size_in_memory 128 KB
ipcache_size 3072
ipcache_low 90
ipcache_high 93
# politica de substituicao dos objetos quando se esgota o espaco destinado ao cache em disco.
# lru: mantem os objetos referenciados recentemente.
# heap GDSF: otimiza o “hit rate” por manter objetos pequenos e
# e populares no cache, guardando assim um numero maior de objetos.
# heap LFUDA: otimiza o “byte hit rate” por manter objetos populares
# no cache sem levar em conta o tamanho. Se for utilizado este, o
# maximum_object_size devera ser aumentado para otimizar o LFUDA.
cache_replacement_policy heap LFUDA
#define a politica de substituicao dos objetos em memoria
#da mesma forma como o cache_replacement_policy
memory_replacement_policy heap GDSF
#Esta TAG determina onde e como será feito o cache e o tamanho
#a cada 1GB (1024), deve separar 15mb de memoria
cache_dir ufs /var/spool/squid/cache1 2048 16 64
# Log de requisicoes.
cache_access_log /var/log/squid/access.log
# Log do cache.
###################################
Bom, essa foi uma configuração simples do serviço squid. No próximo tutorial, irei comentar sobre algumas formas de autenticação por usuários/grupos.
até!
A autenticação poderá ser feita de várias maneiras, como por exemplo, no formato NCSA (geralmente associado ao utilitário htpasswd, o mesmo utilizado pelo Apache), ou ainda através de um servidor LDAP, um PDC Windows NT/2000, ou módulos PAM, etc. A maneira mais comum de realizar autenticação é com o uso do formato NCSA que usa o módulo ncsa_auth. Para este trabalho nossa implementação foi baseada neste método.
O cadastro dos usuários para acesso ao Squid é feito com o uso do utilitário htpasswd, conforme podemos ver no exemplo abaixo, lembrando apenas que a opção -c deve ser usada apenas caso o arquivo de senhas ainda não exista, pois ela instrui o utilitário a criá-lo.
# htpasswd -c arquivo_de_senhas usuario
Para que o Squid forneça suporte a autenticação devemos habilitar estas configurações no arquivo squid.conf através da TAG auth_param. É nela que são realizadas as mudanças necessárias para que o esquema de autenticação comece a funcionar, já que por padrão ele não vem habilitado. No próprio arquivo tem comentários que mostram como isso deve ser feito para cada tipo escolhido. Como vamos utilizar o método básico, nossa configuração ficou assim.
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic realm Servidor Proxy Squid ARL
auth_param basic credentialsttl 2 hours
A linha auth_param basic program /usr/lib/squid/ncsa_auth
/etc/squid/passwd especifica qual módulo será usado, no caso /usr/lib/squid/ncsa_auth é onde se encontra o arquivo com os usuários e senhas gerado conforme comentado acima. Em auth_param basic children 5estamos definindo quantos processos filhos do módulo de autenticação poderão existir, esse número é o padrão do Squid, entretanto em redes maiores pode haver a necessidade de um incremento deste, devido ao número provavelmente maior de usuários que precisarão se autenticar simultaneamente. Em auth_param basic realm Servidor Proxy Squid ARL configura-se a mensagem que aparecerá na tela onde são fornecidas as informações do usuário para autenticação. Esta opção é interessante para que possamos personalizar este mensagem da tela delogin do nosso servidor. E por último auth_param basic credentialsttl 2 hours especifica a validade de uma autenticação bem sucedida.?
No exemplo abaixo, vou realizar a configuração do Squid autenticando no Windows 2008R2.
1 – O primeiro passo, é atualizar o repositório de pacotes do CentOS.
http://gnulinuxbr.com/2010/01/04/adicionando-repositorios-no-centos/
2 – Segundo passo, é configurar a autenticação do CentOS no domínio do Windows 2008R2.
Para isso, vamos precisar configurar o resolv.conf, hosts, winbind, nsswitch.conf e o Samba.
Antes:
GUNTHER, 192.168.1.6 e 192.168.1.9 = SERVIDOR WINDOWS 2008R2
DOOR.LOCAL = MEU DOMÍNIO LOCAL
CENTOS-SQUID, 192.168.1.73 = SERVIDOR CENTOS
Partindo da configuração do resolv.conf
# vim /etc/resolv.conf
; generated by /sbin/dhclient-script
search dominio.local
nameserver 192.168.1.6
nameserver 192.168.1.9
# vim /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
192.168.1.73 centos-squid centos-squid.dominio.local
192.168.1.9 servidor-windows.dominio.local servidor-windows
192.168.1.9 dominio.local dominio.local
::1 localhost6.localdomain6 localhost6
FAÇA A CONFIGURAÇÃO DO NSSWITCH.CONF PARA FAZER A INTEGRAÇÃO DE AUTENTICAÇÃO
Edite o arquivo /etc/nsswitch.conf e modifique as linhas de acordo com o exemplo baixo:
# /etc/nsswitch.conf
passwd: files winbind
shadow: files winbind
group: files winbind
protocols: files winbind
services: files winbind
netgroup: files winbind
automount: files winbind
Partiremos agora para a configuração do winbind.
# vim /etc/krb5.conf
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = DOMINIO.LOCAL
dns_lookup_realm = true
dns_lookup_kdc = false
[realms]
DOMINIO.LOCAL = {
admin_server = nome-do-servidor-windows.dominio.local
default_domain = dominio.local
kdc = IP-DO-SERVIDOR-WINDOWS
}
[domain_realm]
.dominio.local = DOMINIO.LOCAL
dominio.local = DOMINIO.LOCAL
[kdc]
profile = /var/kerberos/krb5kdc/kdc.conf
[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}
3 – Instale o samba no servidor Squid.
# yum install samba
OBS: Lembre-se sempre de fazer uma cópia do arquivo original do smb.conf, antes de alterá-lo.
cp smb.conf smb.conf.original
egrep -v “^#|^$” smb.conf.original > smb.conf
# vim /etc/samba/smb.conf
[global]
workgroup = DOMINIO
server string = NOME-DO-SRV-CENTOS
netbios name = NOME-DO-SRV-CENTOS
realm = DOMINIO.LOCAL
passdb backend = tdbsam
interfaces = eth0 IP-DO-SRV-CENTOS
password server = IP-DO-SRV-WINDOWS-2008R2
idmap uid = 600-20000
idmap gid = 600-20000
security = ads
wins server = NOME-DO-SRV-WINDOWS-2008R2.DOMINIO.local
; domain master = yes
; domain logons = yes
winbind enum users = yes
winbind enum groups = yes
winbind use default domain = yes
winbind nested groups = yes
winbind cache time = 86400
max connections = 0
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
unix charset = iso-8859-1
template shell = /bin/false
template homedir = /dev/null
enhanced browsing = no
hosts allow = 127. 192.168.1.
log file = /var/log/samba/%m.log
max log size = 1000
syslog = 0
encrypt passwords = true
preferred master = no
dns proxy = no
load printers = no
map to guest = bad user
No meu caso, no momento da inicialização do winbind, foi descomentado as seguintes linhas abaixo no arquivo dosmb.conf
; domain master = yes
; domain logons = yes
após inicialização do arquivo winbind, comentei essas linhas novamente, para não interferir com o domínio do WINDOWS 2008R2.
Feito todas essas configurações, vamos colocar o nosso servidor squid no domínio do Windows 2008R2
COLOCANDO A MÁQUINA NO DOMINIO:
Acerte o horário da máquina com o servidor AD, o kerberos não irá aceitar autenticação de estações com atrasos superiores a 5 minutos.
# net time set -I 192.168.1.9
Agora vamos adicionar nosso servidor Linux ao domínio, para isso usaremos o
comando abaixo:
# net ads join -U administrador
Com o servidor Squid adicionado no domínio do Windows 2008R2, vamos realizar alguns testes verificar se tudo está correto.
# /etc/ini.d/winbind restart
Verificando a integridade do srviço
# wbinfo -t
Verificando os grupos do servidor Windows 2008R2
# wbinfo -g
Verificando os usuários do servidor Windows 2008R2
# wbinfo -u
# Verificando usuários nos grupos
# getent group | grep -i internet_users
Partindo para instalação do Squid
# mkdir -p /etc/squid/regras
touch /etc/squid/regras/dominios_liberados.txt
touch /etc/squid/regras/dominios_bloqueados.txt
touch /etc/squid/regras/palavras_bloqueadas.txt
touch /etc/squid/regras/msn.txt
# yum install squid
OBS: Lembre-se sempre de fazer uma cópia do arquivo original do squid.conf, antes de alterá-lo.
# cp squid.conf squid.conf.original
# egrep -v “^#|^$” squid.conf.original > squid.conf
# CONFIGURAÇÃO DO SQUID ATUTENTICANDO NO 2008R2 ATRAVÉS DO LDAP E CONSULTADO GRUPOS ATRAVÉS DO WINBIND.
# CONFIGURAÇÃO DO SQUID ATUTENTICANDO NO 2008R2 ATRAVÉS DO LDAP
# PORTA DE CONEXÃO A SER CONFIGURADA NOS NAVEGADORES
http_port 192.168.1.73:3128
# HOSTNAME A SER VISIVEL
visible_hostname centos-squid.dominio.local
# COMUNICAÇÃO ENTRE SERVIDORES PROXY EM MODO HIERARQUICO
hierarchy_stoplist cgi-bin ?
# ACESSO NAO ARMAZENADOS EM CACHE
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
# DEFININDO O CACHE QUE SERA ARMAZENADO EM MEMORIA
cache_mem 20 MB
# DNS INTERNOS
dns_nameservers 192.168.1.6
dns_nameservers 192.168.1.9
# CORRIGE HEADER HTTP DE SERVIDORES APACHE
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
# DIRETORIO DE CACHE DO SQUID
cache_dir ufs /var/log/squid/cache 512 128 256
maximum_object_size_in_memory 64 KB
# LOG COM TODOS OS ACESSOS DOS USUARIOS
access_log /var/log/squid/access.log squid
# DESATIVADO POR NAO TER UTILIDADE PRATICA
cache_store_log none
# ARQUIVO HOSTS PARA RESOLUÇÃO ESTATICA DE NOMES
hosts_file /etc/hosts
# DEFININDO MECANISMO DE AUTENTICACAO DE USUARIOS NO LDAP ATRAVES DO WIN-2008-R2 – CONSULTANDO O SERVIDOR GUNTHER 1.9
auth_param basic program /usr/lib/squid/squid_ldap_auth -R -b “dc=door,dc=local” -D “cn=user_proxy,cn=Users,dc=door,dc=local” -w “SENHA-AQUI” -f sAMAccountName=%s -h 192.168.1.9
auth_param basic children 5
auth_param basic realm SERVIDOR DE AUTENTICACAO
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
# PARAMETRO PARA CONSULTAR GRUPOS E USUARIOS NO AD-2008-R2 ATRAVES DO WINBIND – NECESSARIO ESTAR CONFIGURADO O WINBIND PARA CONSULTA.
external_acl_type GROUP ttl=3600 children=8 %LOGIN /usr/lib/squid/wbinfo_group.pl
# MENSAGENS DE ADVERTENCIA OU ERRO DO SQUID EM PORTUGUES
error_directory /usr/share/squid/errors/Portuguese
# EM CASO DE TRAVAMENTE OS ARQUIVOS CORE SERAO COLOCADOS NESTA PASTA
coredump_dir /var/spool/squid
# SITES DE FTP E GOPHER POSSUEM TEMPO DE REFRESH DO CACHE DEFINIDOS NESTA DIRETIVA
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
# LISTA DE CONTRLOES DE ACESSO BASICO PREDEFINIDOS
# PARA QUE O SQUID SE COMPORTE DE FORMA SEGURA
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 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 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 443 # https
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 901 # swat
acl Safe_ports port 1025-65535 # unregistered ports
acl purge method PURGE
acl CONNECT method CONNECT
acl autenticacao proxy_auth REQUIRED src 192.168.1.0/24 192.168.2.0/24 10.10.10.0/24
# DEFININDO A COMUNICACAO DE ACLs E GRUPOS DO LDAP NO WIN2008-R2
# EXEMPLO – PRIMEIRO REFERE-SE AO NOME DA ACL DO SQUID – SEGUNDO GRUPO REFERE-SE O GRUPO EXISTENTE NO LDAP
acl INTERNET_LIBERADA external GROUP internet_liberada
acl INTERNET_USERS external GROUP internet_users
acl INTERNET_MSN external GROUP internet_msn
acl TI external GROUP ti
# LIBERANDO O SISTEMA
acl sites_internos dstdomain www.dominio.com.br webmail.dominio.com.br
# DOMINIOS LIBERADOS
acl dominios_liberados dstdomain -i “/etc/squid/regras/dominios_liberados.txt”
# DOMINIOS BLOQUEADOS
acl dominios_bloqueados dstdomain -i “/etc/squid/regras/dominios_bloqueados.txt”
# PALAVRAS BLOQUEADAS
acl palavras_bloqueadas url_regex -i “/etc/squid/regras/palavras_bloqueadas.txt”
# MSN
acl msn url_regex -i “/etc/squid/regras/msn.txt”
# IPs BLOQUEADOS
acl ips_bloqueados src “/etc/squid/regras/ip_bloqueados.txt”
### LIMITANDO A BANDA DE INTERNET PARA OS USUARIOS AUTENTICADOS
# ACL QUE DEFINE TIPOS DE ARQUIVOS html
acl html rep_mime_type text/html
# DOWNLOAD SEM RESTRIÇÕES PARA A ACL HTML
reply_body_max_size 0 allow html
# LIBERANDO ATE 9GB PARA INTERNET_LIBERADA
reply_body_max_size 995242880 allow INTERNET_LIBERADA
# LIMITANDO 3MB PARA INTERNET_USERS
reply_body_max_size 3145728 allow INTERNET_USERS
# BARRAR ARQUIVOS DE SOM E VIDEO EM GERAL
acl videos_audios urlpath_regex -i \.avi$ \.mpeg$ \.mpg$ \.mp3$ \.mp2$ \.mp2v$ \.ogg$ \.wav$ \.wma$ \.wmv$ \.rar$
# ACESSO DIRETO PARA O DOMÍNIO INTERNO
acl DOMINIO dstdomain www.dominio.com.br webmail.dominio.com.br
always_direct allow DOMINIO
http_access allow DOMINIO
# ATIVACAO DAS ACLs BASICAS
http_access allow localhost
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
# LIBERANDO E BLOQUEANDO OS GRUPOS
http_access allow sites_internos
http_access allow dominios_liberados
http_access deny ips_bloqueados
http_access deny videos_audios !INTERNET_LIBERADA !TI
http_access deny dominios_bloqueados !INTERNET_LIBERADA !TI
http_access deny palavras_bloqueadas !INTERNET_LIBERADA !TI
http_access deny videos_audios !INTERNET_LIBERADA !TI
http_access deny msn !INTERNET_MSN !INTERNET_LIBERADA !TI
http_reply_access deny all !sites_internos !INTERNET_USERS !INTERNET_LIBERADA !TI
http_access allow autenticacao
http_access deny all
#####################################################
Não esqueça de adicionar os usuários nos grupos corretos, dentro do servidor Windows 2008R2, e também alimentar os arquivos criados dentro do diretório /etc/squid/regras/.
No grupo INTERNET_USERS – cadastre apenas os usuários que terão acesso a internet, caso o usuário não tenha acesso a internet, ele somente poderá acessar os domínios que estiverem no arquivo de sites_internos. Isso foi definido na seguinte regra abaixo:
http_reply_access deny all !sites_internos !INTERNET_USERS !INTERNET_LIBERADA !TI
No meu caso, estou usando o Ldap para fazer a autenticação do usuários no Windows 2008R2. Já para consulta de grupos estou usando o Winbind. O motivo para isso, foi devido uma melhor performance entre os serviços. ( opinião minha ).
Caso você queira usar o método de consulta de grupos através do Ldap use a seguinte linha abaixo:
# PARAMETRO PARA CONSULTAR GRUPOS E USUARIOS NO AD-2008-R2 ATRAVES DO LDAP – CONSULTANDO O SERVIDOR GUNTHER 1.9
#external_acl_type GROUP %LOGIN /usr/lib/squid/squid_ldap_group -b dc=door,dc=local -f (&(cn=%a)(memberUid=%v)) -h 192.168.1.9
A grande vantagem de usar o método de consulta através de Ldap, é que não é necessário fazer toda a configuração de Winbind + Samba.
A desvantagem para mim, é que não fica perfeito a consulta grupos/usuários dentro de ACL’s.
Faça os testes você mesmo e veja qual é a melhor opção.
Bom, já temos um servidor Squid autenticado bem configurado.
Próximo passo, vou postar um servidor Squid, Samba e LDAP no CentOS.
até!
Fonte: http://gnulinuxbr.com
No responses yet