Proxy Squid com SquidGuard + Controle de Banda e Autenticação NTLM no Samba 4 (CentOS 6.5 - 64 bits Minimal)
Depois de cinco dias brigando na frente do PC e fuçando muito na Internet (lembrando que esse assunto, em especial, ainda tem pouca coisa a respeito), só hoje consegui por em funcionamento. Squid + SquidGuard + autenticação no Samba 4 ou AD (Microsoft). Espero que ajude aos amigos que buscam a mesma solução.
Parte 3: Configurando o SquidGuard
# vi /etc/squid/squidGuard.conf
Baixe as listas dentro do diretório /var/squidGuard/db, eu, particularmente, uso as duas listas abaixo:
Descompacte:
# tar -zxvf bigblacklist.tar.gz
# tar -zxvf shallalist.tar.gz
Criar os bancos:
# squidGuard -b -u -C all
Monitorar os logs do SquidGuard:
# tail -f /var/log/squidGuard/squidGuard.log
Após completar o processo (que, dependendo da quantidade de listas, pode demorar um pouco), vamos dar as permissões devidas:
# chown -R squid:squid /var/squidGuard/db/*
# find /var/squidGuard/db -type f | xargs chmod 644
# find /var/squidGuard/db -type d | xargs chmod 755
# squid -k reconfigure
Criando uma whitelist autorizando o acesso aos sites manualmente:
Adicione uma nova ACL:
# vi /etc/squid/squidGuard.conf
A ACL white será lida primeiro e o acesso às páginas especificadas no arquivo será liberado.
Criar a pasta e os arquivos:
# mkdir /var/lib/squidguard/db/white
# touch /var/lib/squidguard/db/white/domains
# touch /var/lib/squidguard/db/white/urls
Onde:
Obs.: em qualquer alteração feita nos arquivos dbs, se faz necessário atualizar a conversão das listas e reiniciar o Squid:
# chown -R squid:squid /var/squidGuard/db/*
# find /var/squidGuard/db -type f | xargs chmod 644
# find /var/squidGuard/db -type d | xargs chmod 755
# squidGuard -b -u -C all
# squid -k reconfigure
# Diretorio das Listas de Bloqueio
dbhome /var/squidGuard/db
logdir /var/log/squidGuard
# Autenticacao LDAP
ldapbinddn cn=squid,ou=INTERNET,dc=palacio,dc=local
ldapbindpass password
ldapcachetime 60
# Grupos de Bloqueio
src ACESSOLIVRE {
ldapusersearch ldap://192.168.100.11:3268/dc=palacio,dc=local?sAMAccountName?sub?(&(sAMAccountName=%s)(memberOf=CN=ACESSOLIVRE%2cou=INTERNET%2cdc=palacio%2cdc=local))
}
src ACESSOREDESSOCIAIS {
ldapusersearch ldap://192.168.100.11:3268/dc=palacio,dc=local?sAMAccountName?sub?(&(sAMAccountName=%s)(memberOf=CN=ACESSOREDESSOCIAIS%2cou=INTERNET%2cdc=palacio%2cdc=local))
}
src ACESSOVIDEOS {
ldapusersearch ldap://192.168.100.11:3268/dc=palacio,dc=local?sAMAccountName?sub?(&(sAMAccountName=%s)(memberOf=CN=ACESSOVIDEOS%2cou=INTERNET%2cdc=palacio%2cdc=local))
}
## Listas de Bloqueio ( Filtragem ) Usando duas listas Bigblaclist e Shallalist
# Big Blacklist
dest [*****] {
domainlist blacklists/[*****]/domains
urllist blacklists/[*****]/urls
# expessionlist blacklists/[*****]/expressions
}
dest audio-video {
domainlist blacklists/audio-video/domains
urllist blacklists/audio-video/urls
}
# Shallalist
dest porn2 {
domainlist BL/[*****]/domains
urllist BL/[*****]/urls
}
dest socialnet {
domainlist BL/socialnet/domains
urllist BL/socialnet/urls
}
# Controle de Acessos ( ACLs )
acl {
ACESSOLIVRE {
pass ![*****] !porn2
}
ACESSOREDESSOCIAIS {
pass socialnet ![*****] !porn2 !audio-video
}
ACESSOVIDEOS {
pass audio-video ![*****] !porn2 !socialnet
}
default {
pass ![*****] !porn2 !socialnet !audio-video
redirect http://192.168.100.16/cgi-bin/squidGuard-simple.cgi?clientaddr=%a&clientname=%n&clientuser=%i&clientgroup=%s&targetgroup=%t&url=%u
}
}
dbhome /var/squidGuard/db
logdir /var/log/squidGuard
# Autenticacao LDAP
ldapbinddn cn=squid,ou=INTERNET,dc=palacio,dc=local
ldapbindpass password
ldapcachetime 60
# Grupos de Bloqueio
src ACESSOLIVRE {
ldapusersearch ldap://192.168.100.11:3268/dc=palacio,dc=local?sAMAccountName?sub?(&(sAMAccountName=%s)(memberOf=CN=ACESSOLIVRE%2cou=INTERNET%2cdc=palacio%2cdc=local))
}
src ACESSOREDESSOCIAIS {
ldapusersearch ldap://192.168.100.11:3268/dc=palacio,dc=local?sAMAccountName?sub?(&(sAMAccountName=%s)(memberOf=CN=ACESSOREDESSOCIAIS%2cou=INTERNET%2cdc=palacio%2cdc=local))
}
src ACESSOVIDEOS {
ldapusersearch ldap://192.168.100.11:3268/dc=palacio,dc=local?sAMAccountName?sub?(&(sAMAccountName=%s)(memberOf=CN=ACESSOVIDEOS%2cou=INTERNET%2cdc=palacio%2cdc=local))
}
## Listas de Bloqueio ( Filtragem ) Usando duas listas Bigblaclist e Shallalist
# Big Blacklist
dest [*****] {
domainlist blacklists/[*****]/domains
urllist blacklists/[*****]/urls
# expessionlist blacklists/[*****]/expressions
}
dest audio-video {
domainlist blacklists/audio-video/domains
urllist blacklists/audio-video/urls
}
# Shallalist
dest porn2 {
domainlist BL/[*****]/domains
urllist BL/[*****]/urls
}
dest socialnet {
domainlist BL/socialnet/domains
urllist BL/socialnet/urls
}
# Controle de Acessos ( ACLs )
acl {
ACESSOLIVRE {
pass ![*****] !porn2
}
ACESSOREDESSOCIAIS {
pass socialnet ![*****] !porn2 !audio-video
}
ACESSOVIDEOS {
pass audio-video ![*****] !porn2 !socialnet
}
default {
pass ![*****] !porn2 !socialnet !audio-video
redirect http://192.168.100.16/cgi-bin/squidGuard-simple.cgi?clientaddr=%a&clientname=%n&clientuser=%i&clientgroup=%s&targetgroup=%t&url=%u
}
}
Baixe as listas dentro do diretório /var/squidGuard/db, eu, particularmente, uso as duas listas abaixo:
- Shalla's Blacklists :: http://www.shallalist.de/
- URLBlacklist :: http://urlblacklist.com/?sec=download
Descompacte:
# tar -zxvf bigblacklist.tar.gz
# tar -zxvf shallalist.tar.gz
Criar os bancos:
# squidGuard -b -u -C all
Monitorar os logs do SquidGuard:
# tail -f /var/log/squidGuard/squidGuard.log
Após completar o processo (que, dependendo da quantidade de listas, pode demorar um pouco), vamos dar as permissões devidas:
# chown -R squid:squid /var/squidGuard/db/*
# find /var/squidGuard/db -type f | xargs chmod 644
# find /var/squidGuard/db -type d | xargs chmod 755
# squid -k reconfigure
Criando uma whitelist autorizando o acesso aos sites manualmente:
Adicione uma nova ACL:
# vi /etc/squid/squidGuard.conf
dest white {
domainlist white/domains
urllist white/urls
}
default {
pass white ![*****] !porn2 !socialnet !audio-video
redirect http://192.168.100.16/cgi-bin/squidGuard-simple.cgi?clientaddr=%a&clientname=%n&clientuser=%i&clientgroup=%s&targetgroup=%t&url=%u
}
}
domainlist white/domains
urllist white/urls
}
default {
pass white ![*****] !porn2 !socialnet !audio-video
redirect http://192.168.100.16/cgi-bin/squidGuard-simple.cgi?clientaddr=%a&clientname=%n&clientuser=%i&clientgroup=%s&targetgroup=%t&url=%u
}
}
A ACL white será lida primeiro e o acesso às páginas especificadas no arquivo será liberado.
Criar a pasta e os arquivos:
# mkdir /var/lib/squidguard/db/white
# touch /var/lib/squidguard/db/white/domains
# touch /var/lib/squidguard/db/white/urls
Onde:
- Arquivo domains para domínios liberados por completo. Exemplo: "google.com.br".
- Arquivo urls para páginas. Exemplo: "vivaolinux.com.br/contribuir/artigo/", sempre um por linha.
Obs.: em qualquer alteração feita nos arquivos dbs, se faz necessário atualizar a conversão das listas e reiniciar o Squid:
# chown -R squid:squid /var/squidGuard/db/*
# find /var/squidGuard/db -type f | xargs chmod 644
# find /var/squidGuard/db -type d | xargs chmod 755
# squidGuard -b -u -C all
# squid -k reconfigure
Amigo, tenho uma dúvida. Quando o Squid não está integrado com o AD, a troca de permissões, acessos é instantâneo, porém quando integrei com o AD, quando eu mudo o grupo do usuário no AD, leva alguns minutos para surtir efeito.
É correto isso?
Outra coisa... já peguei vários caso em tive que reiniciar o Wimbind porque o navegador não detectava o proxy e/ou não solicitava usuário e senha...
Isso acontece com você ou é alguma configuração que está faltando?
Valeuu