Conforme amplamente difundido na internet, o Squid é o servidor proxy mais usado no mundo, sua configuração é relativamente simples, não vou entrar muito em detalhes da sua instalação pois existem diversos artigos que tratam bem o assunto. A configuração que é o escopo desse, com autenticação dos usuários do Squid no Active Directory. Vamos instalar o Squid a partir dos repositórios oficiais do Debian:
# apt-get install squid3
Agora vamos fazer uma cópia do squid.conf substituindo-o pelo conteúdo abaixo:
# cd /etc/squid3
# cp -rpvf squid.conf squid.conf.default
# echo "" > squid.conf
# vi squid.conf
# /etc/squid3/squid.conf
#
# Autor: Leandro Moreira
#
# Licença: GPL - http://www.gnu.org/licenses/gpl.html
# Solicito apenas que informe a fonte original.
#
# Descrição:
# - Arquivo para configuração do squid
#
##########################################
# Portas (padrão 3128)
#########################################
http_port 172.16.10.253:3128
# OTIMIZANDO CONEXÕES
#########################################
hierarchy_stoplist cgi-bin ?
###acl QUERY urlpath_regex cgi-bin \? \& \%
###no_cache deny QUERY
####hosts_file /etc/hosts
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
# Logs
########################################
#logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %h" "%{User-Agent}>h" %Ss:%Sh
#access_log /var/log/squid3/access.log combined
access_log /var/log/squid3/access.log
cache_log /var/log/squid3/cache.log
# ACLs
#########################################
# acls de origem
# =======================================
# qualquer rede
#acl all src 0.0.0.0/0.0.0.0
# rede loopback
acl localhost src 127.0.0.1/32
# rede dmz (rede servidores)
#acl dmz src 192.168.0.0/24
# rede administrativo (rede setor administrativo)
acl administrativo src 172.16.10.0/24
# rede acadêmica (rede setor acadêmico)
#acl academica src 172.16.0.0/24
### admins (IPs com acesso administrador do squid - não usam proxy para navegar)
#acl admins src 172.16.10.180/32
# acls de destino
# =======================================
acl allDest dst 0.0.0.0/0.0.0.0
acl to_localhost dst 127.0.0.0/8
# acls de portas
# =======================================
# portas seguras
acl SSL_ports port 443 563
# demais serviços
acl Safe_ports port 80 # http
acl Safe_ports port 8080 # tomcat
acl Safe_ports port 8443 # tomcat - ssl
acl Safe_ports port 10000 # webmin
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
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 631 # cups
acl Safe_ports port 777 # multiling http
#acl Safe_ports port 901 # SWAT
acl Safe_ports port 4500 # Biblioteca USP dedalus
acl Safe_ports port 2083 # CPANEL
acl Safe_ports port 2631 # Conectividade Social
acl Safe_ports port 1494 # Sigov
acl Safe_ports port 8333 # WMWARE SERVER
# acls default squid
# ========================================
acl purge method PURGE
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
# acls de segurança
# =======================================
# proteção do cache
acl manager proto cache_object
# ========================================
# 1 - acl controlar sites (sites-proibidos)
# ----------------------------------------
acl sites_deny dstdomain -i "/etc/squid3/acls/sites-proibidos"
acl sites_allow dstdomain -i "/etc/squid3/acls/sites-permitidos"
acl caixa dstdomain -i .caixa.gov.br
# 2 - acl controlar palavras de sexo, baixo calão, etc
# ----------------------------------------
acl palavras_deny url_regex -i "/etc/squid3/acls/palavras-deny"
acl palavras_allow url_regex -i "/etc/squid3/acls/palavras-allow"
# 3 - acl controlar horário de expediente
# ----------------------------------------
#acl horario_allow url_regex -i "/etc/squid3/horario_allow"
#acl fora_expediente time MTWHFA 20:01-23:59
#acl fora_expediente2 time MTWHFA 00:00-05:59
# 4 - acl liberacao Windowsupdate
# ----------------------------------------
acl update dstdomain -i Windowsupdate.microsoft.com au.download.Windowsupdate.com
# acls de sites locais
# =======================================
acl sites_locais dst 192.168.0.100
#acl sites_locais dstdomain 192.168.0.100
# HTTP ACCESS
##########################################
# regras das acls de origem
# ========================================
# libera os administradores
#http_access allow admins
# regras das acls de portas
# ========================================
# bloqueia todas as portas não listadas
http_access deny !Safe_ports
# bloqueia conexões das portas seguras não listadas
http_access deny CONNECT !SSL_ports
# regras das acls de controle (bloqueio e políticas de rede)
# ========================================
http_access allow all AuthorizedUsers
# 1 - controle de acessos especiais
# ----------------------------------------
# bloqueia tudo com exceção do arquivo excecao
http_access allow update
http_access allow liberaexe
# 2 - controle de acesso de sites proibidos
# ----------------------------------------
http_access deny sites_deny !sites_allow
# 3 - controle de acesso da acl de palavras de sexo, baixo calão, etc
# ---------------------------------------
# bloqueia todas as palavras da lista de proibidas com exceção das
# palavras liberadas
http_access deny palavras_deny !palavras_allow
# 4 - controle de horário de expediente
# ----------------------------------------
# bloqueia utilização fora do expediente
#http_access deny !horario_allow fora_expediente
#http_access deny !horario_allow fora_expediente2
# 5 - controle de acesso ao site da caixa (Conectividade social)
# ---------------------------------------
# permite acesso direto ao site da caixa, sem restrições
http_access allow caixa
always_direct allow caixa
# 6 - controle de acesso da acl de palavras de sexo, baixo calão, etc
# ---------------------------------------
# bloqueia todas as palavras da lista de proibidas com exceção das
# palavras liberadas
http_access deny palavras_deny !palavras_allow
# HTTP REPLY ACCESS
#########################################
http_reply_access allow all
# ICP ACCESS
#########################################
icp_access allow all
# MISS ACCESS
#########################################
miss_access allow all
# MODO DE FTP PASSIVO
#########################################
#ftp_passive on
# DNS
#########################################
dns_nameservers 172.16.10.254
# SNMP
acl snmpro snmp_community local
snmp_access allow snmpro all
snmp_port 3401
# CONFIGS Diversas
########################################
# Email do administrador
cache_mgr leandro@leandromoreira.eti.br
# Host visível
visible_hostname proxy.dominio.local
# Linguagem dos erros
error_directory /usr/share/squid3/errors/Portuguese
# Evita que sejam feitos coredumps.
coredump_dir /var/spool/squid3
# Numero de arquivos de log rotacionados a guardar.
logfile_rotate 4
#
# Autor: Leandro Moreira
#
# Licença: GPL - http://www.gnu.org/licenses/gpl.html
# Solicito apenas que informe a fonte original.
#
# Descrição:
# - Arquivo para configuração do squid
#
##########################################
# Portas (padrão 3128)
#########################################
http_port 172.16.10.253:3128
# OTIMIZANDO CONEXÕES
#########################################
hierarchy_stoplist cgi-bin ?
###acl QUERY urlpath_regex cgi-bin \? \& \%
###no_cache deny QUERY
####hosts_file /etc/hosts
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
# Logs
########################################
#logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %
#access_log /var/log/squid3/access.log combined
access_log /var/log/squid3/access.log
cache_log /var/log/squid3/cache.log
# ACLs
#########################################
# acls de origem
# =======================================
# qualquer rede
#acl all src 0.0.0.0/0.0.0.0
# rede loopback
acl localhost src 127.0.0.1/32
# rede dmz (rede servidores)
#acl dmz src 192.168.0.0/24
# rede administrativo (rede setor administrativo)
acl administrativo src 172.16.10.0/24
# rede acadêmica (rede setor acadêmico)
#acl academica src 172.16.0.0/24
### admins (IPs com acesso administrador do squid - não usam proxy para navegar)
#acl admins src 172.16.10.180/32
# acls de destino
# =======================================
acl allDest dst 0.0.0.0/0.0.0.0
acl to_localhost dst 127.0.0.0/8
# acls de portas
# =======================================
# portas seguras
acl SSL_ports port 443 563
# demais serviços
acl Safe_ports port 80 # http
acl Safe_ports port 8080 # tomcat
acl Safe_ports port 8443 # tomcat - ssl
acl Safe_ports port 10000 # webmin
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
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 631 # cups
acl Safe_ports port 777 # multiling http
#acl Safe_ports port 901 # SWAT
acl Safe_ports port 4500 # Biblioteca USP dedalus
acl Safe_ports port 2083 # CPANEL
acl Safe_ports port 2631 # Conectividade Social
acl Safe_ports port 1494 # Sigov
acl Safe_ports port 8333 # WMWARE SERVER
# acls default squid
# ========================================
acl purge method PURGE
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
# acls de segurança
# =======================================
# proteção do cache
acl manager proto cache_object
# ========================================
# 1 - acl controlar sites (sites-proibidos)
# ----------------------------------------
acl sites_deny dstdomain -i "/etc/squid3/acls/sites-proibidos"
acl sites_allow dstdomain -i "/etc/squid3/acls/sites-permitidos"
acl caixa dstdomain -i .caixa.gov.br
# 2 - acl controlar palavras de sexo, baixo calão, etc
# ----------------------------------------
acl palavras_deny url_regex -i "/etc/squid3/acls/palavras-deny"
acl palavras_allow url_regex -i "/etc/squid3/acls/palavras-allow"
# 3 - acl controlar horário de expediente
# ----------------------------------------
#acl horario_allow url_regex -i "/etc/squid3/horario_allow"
#acl fora_expediente time MTWHFA 20:01-23:59
#acl fora_expediente2 time MTWHFA 00:00-05:59
# 4 - acl liberacao Windowsupdate
# ----------------------------------------
acl update dstdomain -i Windowsupdate.microsoft.com au.download.Windowsupdate.com
# acls de sites locais
# =======================================
acl sites_locais dst 192.168.0.100
#acl sites_locais dstdomain 192.168.0.100
# HTTP ACCESS
##########################################
# regras das acls de origem
# ========================================
# libera os administradores
#http_access allow admins
# regras das acls de portas
# ========================================
# bloqueia todas as portas não listadas
http_access deny !Safe_ports
# bloqueia conexões das portas seguras não listadas
http_access deny CONNECT !SSL_ports
# regras das acls de controle (bloqueio e políticas de rede)
# ========================================
http_access allow all AuthorizedUsers
# 1 - controle de acessos especiais
# ----------------------------------------
# bloqueia tudo com exceção do arquivo excecao
http_access allow update
http_access allow liberaexe
# 2 - controle de acesso de sites proibidos
# ----------------------------------------
http_access deny sites_deny !sites_allow
# 3 - controle de acesso da acl de palavras de sexo, baixo calão, etc
# ---------------------------------------
# bloqueia todas as palavras da lista de proibidas com exceção das
# palavras liberadas
http_access deny palavras_deny !palavras_allow
# 4 - controle de horário de expediente
# ----------------------------------------
# bloqueia utilização fora do expediente
#http_access deny !horario_allow fora_expediente
#http_access deny !horario_allow fora_expediente2
# 5 - controle de acesso ao site da caixa (Conectividade social)
# ---------------------------------------
# permite acesso direto ao site da caixa, sem restrições
http_access allow caixa
always_direct allow caixa
# 6 - controle de acesso da acl de palavras de sexo, baixo calão, etc
# ---------------------------------------
# bloqueia todas as palavras da lista de proibidas com exceção das
# palavras liberadas
http_access deny palavras_deny !palavras_allow
# HTTP REPLY ACCESS
#########################################
http_reply_access allow all
# ICP ACCESS
#########################################
icp_access allow all
# MISS ACCESS
#########################################
miss_access allow all
# MODO DE FTP PASSIVO
#########################################
#ftp_passive on
# DNS
#########################################
dns_nameservers 172.16.10.254
# SNMP
acl snmpro snmp_community local
snmp_access allow snmpro all
snmp_port 3401
# CONFIGS Diversas
########################################
# Email do administrador
cache_mgr leandro@leandromoreira.eti.br
# Host visível
visible_hostname proxy.dominio.local
# Linguagem dos erros
error_directory /usr/share/squid3/errors/Portuguese
# Evita que sejam feitos coredumps.
coredump_dir /var/spool/squid3
# Numero de arquivos de log rotacionados a guardar.
logfile_rotate 4
Salve o arquivo e saia.
# touch /etc/squid3/acls/sites-proibidos
# touch etc/squid3/acls/sites-permitidos
# touch etc/squid3/acls/palavras-deny
# touch etc/squid3/acls/palavras-allow
Vamos testar a configuração do Squid:
# squid3 -k parse
Se o comando acima não retornar erro basta reiniciar o Squid:
# /etc/init.d/squid3
Artigo retirado de: http://www.vivaolinux.com.br/artigo/Integrando-autenticacao-do-Squid-ao-Active-Directory?pagina=4
Autor: Leandro Moreira