7.2. Configurando o Squid como um proxy de cache com autenticação LDAP
Esta seção descreve uma configuração básica do Squid como um proxy de cache que usa LDAP para autenticar usuários. O procedimento configura que somente os usuários autenticados podem usar o proxy.
Pré-requisitos
-
O procedimento pressupõe que o arquivo
/etc/squid/squid.conf
é o fornecido pelo pacotesquid
. Se você editou este arquivo antes, remova o arquivo e reinstale o pacote. -
Um usuário de serviço, como o
uid=proxy_user,cn=users,cn=accounts,dc=example,dc=com
, existe no diretório LDAP. A Squid usa esta conta apenas para procurar o usuário que se autentica. Se o usuário autenticador existir, Squid se vincula como este usuário ao diretório para verificar a autenticação.
Procedimento
Instale o pacote
squid
:# yum instalar lula
Edite o arquivo
/etc/squid/squid.conf
:Para configurar o utilitário helper
basic_ldap_auth
, adicione a seguinte entrada de configuração ao topo do site/etc/squid/squid.conf
:auth_param basic program /usr/lib64/squid/basic_ldap_auth -bcn=users,cn=accounts,dc=example,dc=com" -D "uid=proxy_user,cn=users,cn=accounts,dc=example,dc=com" -W /etc/squid/ldap_password -f "(&(objectClass=person)(uid=%s))" -ZZ -H ldap://ldap_server.example.com:389
A seguir descrevemos os parâmetros passados para o utilitário helper
basic_ldap_auth
no exemplo acima:-
-B base_DN
define a base de busca LDAP. -
-D proxy_service_user_DN
define o nome distinto (DN) da conta que a Squid usa para procurar o usuário que se autentica no diretório. -
-W path_to_password_file
define o caminho para o arquivo que contém a senha do usuário do serviço de proxy. O uso de um arquivo de senha impede que a senha seja visível na lista de processos do sistema operacional. -f LDAP_filter
especifica o filtro de busca LDAP. O Squid substitui a variável%s
pelo nome de usuário fornecido pelo usuário que se autentica.O filtro
(&(objectClass=person)(uid=%s))
no exemplo define que o nome do usuário deve corresponder ao valor definido no atributouid
e que a entrada do diretório contém a classe de objetoperson
.-ZZ
faz cumprir uma conexão criptografada por TLS sobre o protocolo LDAP usando o comandoSTARTTLS
. Omitir o-ZZ
nas seguintes situações:- O servidor LDAP não suporta conexões criptografadas.
- A porta especificada no URL utiliza o protocolo LDAPS.
- O parâmetro -H LDAP_URL especifica o protocolo, o nome do host ou endereço IP, e a porta do servidor LDAP no formato URL.
-
Adicione a seguinte ACL e regra para configurar que o Squid permite que somente usuários autenticados possam usar o proxy:
acl ldap-auth proxy_auth REQUIRED http_access allow ldap-auth
ImportanteEspecifique estas configurações antes da regra
http_access deny
todas.Remover a seguinte regra para desativar a autenticação por proxy a partir de faixas IP especificadas em
localnet
ACLs:http_access permite rede local
A seguinte ACL existe na configuração padrão e define
443
como uma porta que usa o protocolo HTTPS:acl Porta SSL_port 443
Se os usuários devem ser capazes de usar o protocolo HTTPS também em outras portas, acrescente uma ACL para cada uma dessas portas:
acl SSL_port porto_número_de_porta
Atualizar a lista de regras
acl Safe_ports
para configurar com quais portas a Squid pode estabelecer uma conexão. Por exemplo, para configurar que os clientes que utilizam o proxy só podem acessar recursos nas portas 21 (FTP), 80 (HTTP) e 443 (HTTPS), mantenha apenas as seguintes declaraçõesacl Safe_ports
na configuração:acl Safe_ports port 21 acl Safe_ports port 80 acl Safe_ports port 443
Por padrão, a configuração contém a regra
http_access deny !Safe_ports
que define a negação de acesso a portos que não estão definidos emSafe_ports ACLs
.Configure o tipo de cache, o caminho para o diretório de cache, o tamanho do cache e outras configurações específicas do tipo de cache no parâmetro
cache_dir
:cache_dir ufs /var/spool/squid 10000 16 256
Com estas configurações:
-
A lula usa o tipo de cache
ufs
. -
A Squid armazena seu cache no diretório
/var/spool/squid/
. -
O cache cresce até
10000
MB. -
A Squid cria subdiretórios de nível 1 em
16
no diretório/var/spool/squid/
. A Squid cria subdiretórios
256
em cada diretório de nível 1.Se você não definir uma diretiva
cache_dir
, a Squid armazena o cache na memória.
-
A lula usa o tipo de cache
Se você definir um diretório de cache diferente de
/var/spool/squid/
no parâmetrocache_dir
:Criar o diretório do cache:
# mkdir -p path_to_cache_directory
Configurar as permissões para o diretório do cache:
# chown squid:lula path_to_cache_directory
Se você executar o SELinux no modo
enforcing
, defina o contextosquid_cache_t
para o diretório do cache:# semanage fcontext -a -t squid_cache_t "path_to_cache_directory(/.*)?" # restorecon -Rv path_to_cache_directory
Se o utilitário
semanage
não estiver disponível em seu sistema, instale o pacotepolicycoreutils-python-utils
.
Armazene a senha do usuário do serviço LDAP no arquivo
/etc/squid/ldap_password
, e defina as permissões apropriadas para o arquivo:# echo "password" > /etc/squid/ldap_password # chown root:squid /etc/squid/ldap_password # chmod 640 /etc/squid/ldap_password
Abra a porta
3128
no firewall:# firewall-cmd --permanent --add-port=3128/tcp # firewall-cmd --reload
Habilite e inicie o serviço
squid
:# systemctl habilita --agora lula
Etapas de verificação
Para verificar se o proxy funciona corretamente, baixe uma página da web usando o utilitário curl
:
# curl -O -L"https://www.redhat.com/index.html" -x"user_name:password@proxy.example.com:3128"
Se o curl não exibir nenhum erro e o arquivo index.html
tiver sido baixado para o diretório atual, o proxy funciona.
Passos para a solução de problemas
Para verificar se o utilitário auxiliar funciona corretamente:
Inicie manualmente o utilitário auxiliar com as mesmas configurações que você usou no parâmetro
auth_param
:/usr/lib64/squid/basic_ldap_auth -bcn=users,cn=accounts,dc=example,dc=com" -Duid=proxy_user,cn=users,cn=accounts,dc=example,dc=com" -W /etc/squid/ldap_password -f"(&(objectClass=person)(uid=%s))" -ZZ -H ldap://ldap_server.example.com:389
Digite um nome de usuário e senha válidos, e pressione Enter:
user_name password
Se o utilitário auxiliar retornar
OK
, a autenticação será bem sucedida.