Pontos mais importantes:
No bloco abaixo, definimos quais IPs podem contornar o squid, solucionando alguns problemas de acesso.
acl direto src "/etc/squid/regras/ipslivres"
http_access allow direto
always_direct allow direto
No bloco abaixo, definimos quais sites podem contornar o Squid, solucionando alguns problemas de acesso.
acl liberados dstdomain "/etc/squid/regras/liberados"
always_direct allow liberados
http_access allow liberados
Aqui vamos definir como será feita a autenticação, apontando o arquivo utilizado para esse processo, no nosso caso, devido a versão do squid utilizada, teremos o /usr/lib/squid/basic_ldap_auth para fazer a autenticação, e posteriormente os parâmetros external_acl_type e ldap_group, informando o Squid que o nível de permissão será definido de acordo com o grupo a qual o usuário pertence.
O expediente aqui é de 6 horas corridas, então defini a validade da credencial por 6 horas com o parâmetro auth_param basic credentialsttl, depois, utilizo o parâmetro acl autenticados proxy_auth REQUIRED para requisitar a senha do usuário.
#############################################################################
# autenticacao
#############################################################################
# Texto da autenticacao no pop-up
auth_param basic realm .::. EMPRESA - Controle de acessos .::.
# Autenticacao com usuario ad do windows com pop up
auth_param basic program /usr/lib/squid/basic_ldap_auth -v 3 -b dc=empresa,dc=local -D cn=squid,cn=Users,dc=empresa,dc=local -w senha -f "sAMAccountName=%s" -u uid -P 10.10.10.2:389 -R
# Autenticacao por grupos do ad do windows
external_acl_type ldap_group %LOGIN /usr/lib/squid/ext_ldap_group_acl -R -b dc=empresa,dc=local -D cn=squid,cn=Users,dc=empresa,dc=local -w senha -f "(&(objectclass=person)(sAMAccountName=%v)(memberof=cn=%a,ou=internet,dc=empresa,dc=local))" -h 10.10.10.2:389
auth_param basic credentialsttl 6 hours
acl autenticados proxy_auth REQUIRED
Agora vamos definir onde estão as listas que queremos usar para permitir/bloquear.
Como exemplo, vamos usar a primeira regra:
acl usuarios_master external ldap_group usuarios_master
1. criação da acl: acl usuarios_master
2. dizer onde a acl irá buscar as informações: external ldap_group usuarios_master
Onde:
- usuarios_master (o primeiro, do começo da regra) é o nome da acl
- external ldap_group é o método para recuperar a lista de usuários que fazem parte desta acl
- usuarios_master (o segundo, do final da regra) é o nome do grupo dentro do AD que tem a lista de usuários que fará parte desta acl
Faremos isso para os outros grupos de usuários.
Depois vamos definir também as listas de bloqueios. Usando a primeira lista, teremos o seguinte:
acl webproxy url_regex -i "/etc/squid/regras/bloqueios/webproxy"
Onde:
- webproxy é o nome da acl;
- url_regex -i é o método para recuperar a lista de sites a serem permitidos ou bloqueados;
- "/etc/squid/regras/bloqueios/webproxy" é a localização do arquivo que contém a lista de sites.;
Também deve ser feito para todas as regras que você julgar necessário criar.
Agora o mais importante, aqui a mágica acontece!
Aqui definimos a hierarquia de acesso, entenda que as permissões de acesso se dão pela ordem das regras, então se faz necessário obedecer a sequência.
Primeiro, vamos liberar o acesso dos administradores da rede, para que consigam acessar tudo e também poder fazer a verificação se o que está sendo acessado condiz com a política de uso do local em que o acesso acontece.
http_access allow usuarios_master
Depois, negamos acesso a grupos de sites que geralmente são bloqueados a todos os outros usuários, lembrando que definimos quais sites seriam esses em seus respectivos arquivos:
http_access deny webproxy
http_access deny pornografia
http_access deny streaming
Feito isso, daremos acesso aos usuários com permissão para acesso a redes sociais:
http_access allow usuarios_redes_sociais
Agora vamos bloquear os sites de redes sociais definidos no arquivo correspondente:
http_access deny redes_sociais
Permitimos acesso aos usuários do grupo usuarios_youtube:
http_access allow usuarios_youtube
Negamos acesso as urls correspondentes ao youtube:
http_access deny youtube
Agora vamos liberar o acesso a internet dos demais usuários:
http_access allow usuarios_comuns
E por fim, negamos os acessos dos usuários que mesmo autenticados, não fazem parte de nenhum grupo que é utilizado para as permissões de acesso a internet.
http_access deny autenticados
Permitimos acesso do computador que funciona como proxy e também de dentro da nossa rede local:
http_access allow redelocal
http_access allow localhost
Negamos todos os acessos que não se encaixam em nenhuma alternativa acima:
http_access deny all