Pesquisar

7.2. Configurando o Squid como um proxy de cache com autenticação LDAP

download PDF

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 pacote squid. 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

  1. Instale o pacote squid:

    # yum instalar lula
  2. Edite o arquivo /etc/squid/squid.conf:

    1. 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 atributo uid e que a entrada do diretório contém a classe de objeto person.

      • -ZZ faz cumprir uma conexão criptografada por TLS sobre o protocolo LDAP usando o comando STARTTLS. 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.
    2. 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
      Importante

      Especifique estas configurações antes da regra http_access deny todas.

    3. 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
    4. 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
    5. 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ções acl 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 em Safe_ports ACLs.

    6. 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.

  3. Se você definir um diretório de cache diferente de /var/spool/squid/ no parâmetro cache_dir:

    1. Criar o diretório do cache:

      # mkdir -p path_to_cache_directory
    2. Configurar as permissões para o diretório do cache:

      # chown squid:lula path_to_cache_directory
    3. Se você executar o SELinux no modo enforcing, defina o contexto squid_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 pacote policycoreutils-python-utils.

  4. 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
  5. Abra a porta 3128 no firewall:

    # firewall-cmd --permanent --add-port=3128/tcp
    # firewall-cmd --reload
  6. 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:

  1. 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
  2. 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.

Red Hat logoGithubRedditYoutubeTwitter

Aprender

Experimente, compre e venda

Comunidades

Sobre a documentação da Red Hat

Ajudamos os usuários da Red Hat a inovar e atingir seus objetivos com nossos produtos e serviços com conteúdo em que podem confiar.

Tornando o open source mais inclusivo

A Red Hat está comprometida em substituir a linguagem problemática em nosso código, documentação e propriedades da web. Para mais detalhes veja oBlog da Red Hat.

Sobre a Red Hat

Fornecemos soluções robustas que facilitam o trabalho das empresas em plataformas e ambientes, desde o data center principal até a borda da rede.

© 2024 Red Hat, Inc.