Em contribuição a comunidade livre, resolvi escrever aqui minha experiência na integração do squid autenticado usando a base de usuários do KyaPanel.

Dependendo da distribuição que você use, após instalar o squid procure por ldap_auth.

No caso do Slackware: /etc/squid/libexec/squid_ldap_auth

No Ubuntu: /usr/lib/squid/ldap_auth

Teste de autenticação

Agora iremos fazer o teste de autenticação na base ldap usando o ldap_auth. Consegui fazer essa autenticação de duas formas. Uma delas é o pelo email todo do usuário e outra pelo login (tudo antes do @).

Testando – Primeira Forma

/etc/squid/libexec/squid_ldap_auth -b ou=seudominio.com.br,ou=mail,ou=jegue_panel,dc=seudominio -h ipdoldap -p 389 -v 3

Note que ao usarmos o comando acima não fará nada e via esperar você digitar o login e senha separados por um espaço:

admin@seudominio.com.br senha

Ao digitar esse login e senha irá te retornar o resultado. Se tudo ocorrer bem retorna OK, senão retorna ERR.

Testando – Segunda Forma

/etc/squid/libexec/squid_ldap_auth -b ou=seudominio.com.br,ou=mail,ou=jegue_panel,dc=seudominio -h ipdoldap -p 389 -v 3 -f "uid=%s@seudominio.com.br"

E digitará o login e senha:

admin senha

E retornará o resultado.

OK

Como sou bonzinho com meus usuários, eles somente precisam digitar na sua autenticação seu login (o que vem antes do @) e sua senha.

Feito este teste, já comprovamos o funcionamento da autenticação.

No squid.conf será necessário adicionar as linhas referentes a autenticação

auth_param basic program /etc/squid/libexec/squid_ldap_auth -b ou=seudominio.com.br,ou=mail,ou=jegue_panel,dc=seudominio -h ipdoldap -p 389 -v 3 -f "uid=%s@seudominio.com.br"
acl senha proxy_auth REQUIRED
http_access deny !senha
http_access allow senha
http_access deny all

Salve o arquivo, pois iremos testar as configurações e também criar o cache

squid -z

Se tudo ocorrer bem retornará:

Creating Swap Directories*

Pronto! já configuramos um squid autenticado agora é somente inicializar o serviço:

/etc/init.d/squid start

Agora podemos acompanhar os acessos:

tail -f access.log

Testando o funcionamento

Para testar o acesso teremos que ir a uma estação de trabalho e configurar o proxy no navegador com o ip do servidor e porta 3128.

Então tente acessar um site e imediatamente deverá aparecer uma telinha pedindo nome de usuário e senha é só digitar e navegar. Se voltar essa telinha novamente é porque você digitou algo errado em um dos campos.

Ajustes finais

Para que nenhum usuário de sua rede navegue usando o proxy é necessário configurar o proxy no navegador e até mesmo redirecionar o tráfego web para o proxy:

iptables -t nat -A PREROUTING -p tcp -m multiport –dport 80,3128 -i eth1 -j DNAT –to 192.168.0.1:3128

Antes de iniciar vamos setar alguns parâmetros

ulimit -HSn 16384
echo "5000 64000" > /proc/sys/net/ipv4/ip_local_port_range

Compilar o squid

wget -c http://www.squid-cache.org/Versions/v2/2.7/squid-2.7.STABLE3.tar.gz
tar -zxvf squid-2.7.STABLE3.tar.gz
cd squid-2.7.STABLE3
./configure --sysconfdir=/etc/squid/ --enable-storeio=aufs,coss,diskd,ufs \
--enable-poll --enable-delay-pools --enable-linux-netfilter --enable-htcp \
--enable-carp --with-pthreads --enable-underscores --enable-external \
--enable-arp-acl --with-maxfd=16384
make
make install

Criando links simbólicos

cd /usr/sbin/
ln -s /usr/local/squid/sbin/squid
cd /usr/bin/
ln -s /usr/local/squid/sbin/squid

Criando espaço para cache

mkdir /squid/
chmod 777 *
chmod 777 /squid/ -R

Vamos criar o arquivo /etc/squid/squid.conf com configurações bem simples

max_filedescriptors 16384
http_port 3128 transparent
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
cache_mem 2000 MB
maximum_object_size 20480 KB
minimum_object_size 0 KB
maximum_object_size_in_memory 256 KB
cache_dir diskd /squid/cache1 5000 16 256
cache_dir diskd /squid/cache2 5000 16 256
cache_dir diskd /squid/cache3 5000 16 256
cache_dir diskd /squid/cache4 5000 16 256
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
##############
cache_replacement_policy heap LRU
cache_effective_user nobody
cache_effective_group nobody
################### ACLS
acl all src 0.0.0.0/0.0.0.0
acl rede src 192.168.0.0/255.255.255.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563
acl Safe_ports port 80 # http
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 3135
acl Safe_ports port 8080
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 CONNECT method CONNECT
###################
http_access allow manager localhost
http_access deny manager
http_access deny CONNECT !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow rede
http_access deny all
icp_access allow all
###################
visible_hostname nomedohost
cache_mgr emaildo@admin.com

Vamos criar a pasta e os arquivos de log

mkdir /var/log/squid
cd /var/log/squid
touch access.log store.log cache.log
chmod 777 *

Criar o arquivo /etc/rc.d/rc.squid

#!/bin/sh
ulimit -HSn 16384
echo "5000 64000" > /proc/sys/net/ipv4/ip_local_port_range
# Start squid:
squid_start() {
if [ -x /usr/sbin/squid ]; then
echo "Starting SQUID..."
/usr/sbin/squid -D
#/usr/sbin/squid -d 1
fi
}

# Stop squid:
squid_stop() {
killall squid
}

# Restart squid:
squid_restart() {
squid_stop
squid_stop
sleep 1
squid_stop
squid_stop
sleep 1
squid_stop
squid_stop
sleep 1
squid_start
}

case “$1” in
‘start’)
squid_start
;;
‘stop’)
squid_stop
squid_stop
squid_stop
;;
‘restart’)
squid_restart
;;
*)
echo “usage $0 start|stop|restart”
esac

Colocando o squid na inicialização

chmod +x /etc/rc.d/rc.squid
echo "/etc/rc.d/rc.squid start
" >> /etc/rc.d/rc.local

Vale a pena salientar a importância do parâmetro max_filedescriptors 16384 para proxy com um número muito grande de requisições.

Colocado em Kyapanel, Ldap, Linux, Squid.
Comente!.

-->