7.3. Configurando o Squid como um proxy de cache com autenticação de kerberos
Esta seção descreve uma configuração básica do Squid como um proxy de cache que autentica os usuários a um Active Directory (AD) usando Kerberos. O procedimento configura que somente 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. -
O servidor no qual você deseja instalar o Squid é um membro do domínio AD. Para detalhes, veja Configurando o Samba como membro do domínio na documentação do Red Hat Enterprise Linux 8
Deploying different types of servers.
Procedimento
Instale os seguintes pacotes:
yum instalar estação de trabalho squid krb5
yum instalar estação de trabalho squid krb5Copy to Clipboard Copied! Toggle word wrap Toggle overflow Autenticar como administrador do domínio AD:
parente administrador@AD.EXAMPLE.COM
# parente administrador@AD.EXAMPLE.COMCopy to Clipboard Copied! Toggle word wrap Toggle overflow Crie uma tabela de chaves para o Squid e armazene-a no arquivo
/etc/squid/HTTP.keytab:export KRB5_KTNAME=FILE:/etc/squid/HTTP.keytab net ads keytab CREATE -U administrator
# export KRB5_KTNAME=FILE:/etc/squid/HTTP.keytab # net ads keytab CREATE -U administratorCopy to Clipboard Copied! Toggle word wrap Toggle overflow Acrescente o principal serviço
HTTPao keytab:net ads keytab ADD HTTP -U administrador
# net ads keytab ADD HTTP -U administradorCopy to Clipboard Copied! Toggle word wrap Toggle overflow Defina o proprietário do arquivo keytab para o usuário do
squid:chown squid /etc/squid/HTTP.keytab
# chown squid /etc/squid/HTTP.keytabCopy to Clipboard Copied! Toggle word wrap Toggle overflow Opcionalmente, verifique se o arquivo keytab contém o principal do serviço
HTTPpara o nome de domínio totalmente qualificado (FQDN) do servidor proxy:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Edite o arquivo
/etc/squid/squid.conf:Para configurar o utilitário helper
negotiate_kerberos_auth, adicione a seguinte entrada de configuração ao topo do site/etc/squid/squid.conf:auth_param negociar programa /usr/lib64/squid/negociar_kerberos_auth -k /etc/squid/HTTP.keytab -s HTTP/proxy.ad.example.com@AD.EXAMPLE.COM
auth_param negociar programa /usr/lib64/squid/negociar_kerberos_auth -k /etc/squid/HTTP.keytab -s HTTP/proxy.ad.example.com@AD.EXAMPLE.COMCopy to Clipboard Copied! Toggle word wrap Toggle overflow A seguir descrevemos os parâmetros passados para o utilitário helper
negotiate_kerberos_authno exemplo acima:-
-k filedefine o caminho para o arquivo da aba chave. Note que o usuário da lula deve ter permissões de leitura neste arquivo. -s HTTP/host_name@kerberos_realmdefine o Kerberos principal que a Lula usa.Opcionalmente, você pode habilitar o registro passando um ou ambos os parâmetros a seguir para o utilitário auxiliar:
-
-iregistra mensagens informativas, como o usuário que se autentica. -dpermite o registro de depuração.O Squid registra as informações de depuração do utilitário auxiliar no arquivo
/var/log/squid/cache.log.
-
Adicione a seguinte ACL e regra para configurar que o Squid permite que somente usuários autenticados possam usar o proxy:
acl kerb-auth proxy_auth REQUIRED http_access allow kerb-auth
acl kerb-auth proxy_auth REQUIRED http_access allow kerb-authCopy to Clipboard Copied! Toggle word wrap Toggle overflow ImportanteEspecifique estas configurações antes da regra
http_access deny all.Remover a seguinte regra para desativar a autenticação por proxy a partir de faixas IP especificadas em
localnetACLs:http_access permite rede local
http_access permite rede localCopy to Clipboard Copied! Toggle word wrap Toggle overflow A seguinte ACL existe na configuração padrão e define
443como uma porta que usa o protocolo HTTPS:acl Porta SSL_port 443
acl Porta SSL_port 443Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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 Porta SSL_ports port_number
acl Porta SSL_ports port_numberCopy to Clipboard Copied! Toggle word wrap Toggle overflow Atualizar a lista de regras
acl Safe_portspara 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_portsna configuração:acl Safe_ports port 21 acl Safe_ports port 80 acl Safe_ports port 443
acl Safe_ports port 21 acl Safe_ports port 80 acl Safe_ports port 443Copy to Clipboard Copied! Toggle word wrap Toggle overflow Por padrão, a configuração contém a regra
http_access deny !Safe_portsque define a negação de acesso às portas que não estão definidas emSafe_portsACLs.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
cache_dir ufs /var/spool/squid 10000 16 256Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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é
10000MB. -
A Squid cria subdiretórios de nível 1 em
16no diretório/var/spool/squid/. A Squid cria subdiretórios
256em 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
# mkdir -p path_to_cache_directoryCopy to Clipboard Copied! Toggle word wrap Toggle overflow Configurar as permissões para o diretório do cache:
chown squid:lula path_to_cache_directory
# chown squid:lula path_to_cache_directoryCopy to Clipboard Copied! Toggle word wrap Toggle overflow Se você executar o SELinux no modo
enforcing, defina o contextosquid_cache_tpara o diretório do cache:semanage fcontext -a -t squid_cache_t "path_to_cache_directory(/.*)?" restorecon -Rv path_to_cache_directory
# semanage fcontext -a -t squid_cache_t "path_to_cache_directory(/.*)?" # restorecon -Rv path_to_cache_directoryCopy to Clipboard Copied! Toggle word wrap Toggle overflow Se o utilitário
semanagenão estiver disponível em seu sistema, instale o pacotepolicycoreutils-python-utils.
Abra a porta
3128no firewall:firewall-cmd --permanent --add-port=3128/tcp firewall-cmd --reload
# firewall-cmd --permanent --add-port=3128/tcp # firewall-cmd --reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow Habilite e inicie o serviço
squid:systemctl habilita --agora lula
# systemctl habilita --agora lulaCopy to Clipboard Copied! Toggle word wrap Toggle overflow
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" --proxy-negotiate -u : -x"proxy.ad.example.com:3128"
# curl -O -L"https://www.redhat.com/index.html" --proxy-negotiate -u : -x"proxy.ad.example.com:3128"
Se curl não exibir nenhum erro e o arquivo index.html existir no diretório atual, o proxy funciona.
Passos para a solução de problemas
Para testar manualmente a autenticação Kerberos:
Obter um bilhete Kerberos para a conta AD:
parente usuário@AD.EXAMPLE.COM
# parente usuário@AD.EXAMPLE.COMCopy to Clipboard Copied! Toggle word wrap Toggle overflow Opcionalmente, exibir o bilhete:
klist
# klistCopy to Clipboard Copied! Toggle word wrap Toggle overflow Use o utilitário
negotiate_kerberos_auth_testpara testar a autenticação:/usr/lib64/squid/negociar_kerberos_auth_test proxy.ad.example.com
/usr/lib64/squid/negociar_kerberos_auth_test proxy.ad.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow Se o utilitário auxiliar devolver um token, a autenticação foi bem sucedida:
Token: YIIFtAYGKwYBBQUCoIIFqDC...
Token: YIIFtAYGKwYBBQUCoIIFqDC...Copy to Clipboard Copied! Toggle word wrap Toggle overflow