Configurando o Squid Proxy Server com acesso restrito e configuração de clientes para usar proxy - Parte 5

Configurando o Squid Proxy Server com acesso restrito e configuração de clientes para usar proxy - Parte 5

A Engenheiro Certificado da Fundação Linux é um profissional qualificado que tem a experiência de instalar, gerenciar e solucionar problemas de serviços em sistemas Linux e é responsável pelo design, implementação e manutenção contínua da arquitetura em todo o sistema.

Engenheiro Certificado da Fundação Linux - Parte 5

Apresentando o Programa de Certificação da Fundação Linux.

Em Parte 1 Desta série, mostramos como instalar o Squid, um servidor de cache proxy para clientes da web. Consulte esse post (link abaixo) antes de prosseguir se você ainda não instalou a lula em seu sistema.

  1. Parte 1 - Instale os serviços de rede e configure a inicialização automática em inicialização

Neste artigo, mostraremos como configurar o servidor proxy da lula para conceder ou restringir o acesso à Internet e como configurar um cliente HTTP, ou navegador da Web, para usar esse servidor proxy.

Minha configuração de ambiente de teste

Servidor de lula
Sistema Operacional: Debian Wheezy 7.5 Endereço IP: 192.168.0.15 nome de host: dev2.GABRIELCANCANEPA.com.ar 
Máquina cliente 1
Sistema Operacional: Ubuntu 12.04 Endereço IP: 192.168.0.104 HostName: Ubuntuos.GABRIELCANCANEPA.com.ar 
Máquina cliente 2
Sistema Operacional: CentOS-7.0-1406 Endereço IP: 192.168.0.17 Nome do host: dev1.GABRIELCANCANEPA.com.ar 

Lembremos que, em termos simples, um servidor proxy da web é um intermediário entre um (ou mais) computadores clientes e um determinado recurso de rede, o mais comum é acesso à Internet. Em outras palavras, o servidor proxy está conectado de um lado diretamente à Internet (ou a um roteador conectado à Internet) e, por outro lado, a uma rede de computadores clientes que acessarão a World Wide Web através dele.

Você pode estar se perguntando, por que eu gostaria de adicionar mais um software à minha infraestrutura de rede?

Aqui estão os três principais motivos:

1. Squid armazena arquivos de solicitações anteriores para acelerar transferências futuras. Por exemplo, suponha Client1 Transferências CentOS-7.0-1406-X86_64-DVD.ISO da internet. Quando Client2 Solicita acesso ao mesmo arquivo, a lula pode transferir o arquivo de seu cache em vez de baixá -lo novamente da Internet. Como você pode adivinhar, você pode usar esse recurso para acelerar as transferências de dados em uma rede de computadores que exigem algum tipo de atualização frequente de algum tipo.

2. ACLs (Listas de controle de acesso) nos permite restringir o acesso aos sites e / ou monitorar o acesso por usuário. Você pode restringir o acesso com base no dia da semana ou hora do dia, ou domínio, por exemplo.

3. Ignorando os filtros da Web é possível com o uso de um proxy da Web para quais solicitações são feitas e quais devoluções solicitadas conteúdo a um cliente, em vez de fazer com que o cliente o solicite diretamente à Internet.

Por exemplo, suponha que você esteja conectado em Client1 e quero acessar www.Facebook.com através do roteador da sua empresa. Como o site pode ser bloqueado pelas políticas da sua empresa, você pode se conectar a um servidor de proxy da Web e solicitar ao acesso ao acesso a www.Facebook.com. O conteúdo remoto é então devolvido a você através do servidor proxy da web novamente, ignorando as políticas de bloqueio do roteador da sua empresa.

Configurando a lula - o básico

O esquema de controle de acesso do servidor proxy da Web Squid consiste em dois componentes diferentes:

  1. O Elementos ACL são linhas diretivas que começam com a palavra “ACL”E representa tipos de testes que são realizados em qualquer transação de solicitação.
  2. O Regras da lista de acesso consiste em um permitir ou negar Ação seguida por vários elementos da ACL e é usada para indicar que ação ou limitação deve ser aplicada para um determinado pedido. Eles são verificados em ordem, e a pesquisa de lista termina assim que uma das regras for uma correspondência. Se uma regra tiver vários elementos da ACL, ela é implementada como um booleano e operação (todos os elementos da ACL da regra devem ser uma correspondência para que a regra seja uma correspondência).

O principal arquivo de configuração de Squid é /etc/lula/lula.conf, qual é ~ 5000 Linhas de tempo, pois inclui diretivas de configuração e documentação. Por esse motivo, criaremos um novo lula.conf Arquivo apenas com as linhas que incluem diretivas de configuração para nossa conveniência, deixando de fora linhas vazias ou comentadas. Para fazer isso, usaremos os seguintes comandos.

# mv/etc/lula/lula.conf/etc/lula/lula.conf.BKP 

E então,

# grep -eiv '(^# |^$)'/etc/squid/squid.conf.bkp ou # grep -Ve ^ # -Ve ^$/etc/squid/squid.conf.bkp>/etc/lula/lula.conf 
Arquivo de configuração de lula de backup

Agora, abra o recém -criado lula.conf arquivar e procure (ou adicione) o seguinte ACL elementos e listas de acesso.

LocalHost da ACL SRC 127.0.0.1/32 ACL Localnet SRC 192.168.0.0/24 

As duas linhas acima representam um exemplo básico do uso de ACL elementos.

  1. A primeira palavra, ACL, indica que esta é uma linha de diretiva de elemento ACL.
  2. A segunda palavra, LocalHost ou Localnet, Especifique um nome para a diretiva.
  3. A terceira palavra, src Nesse caso, é um tipo de elemento ACL usado para representar um endereço IP ou intervalo de endereços do cliente, respectivamente. Você pode especificar um único host por IP (ou nome de host, se você tiver algum tipo de resolução DNS implementada) ou por endereço de rede.
  4. O quarto parâmetro é um argumento de filtragem que é “alimentado”Para a diretiva.

As duas linhas abaixo são Lista de acesso regras e representar uma implementação explícita do ACL Diretivas mencionadas anteriormente. Em poucas palavras, eles indicam que Acesso HTTP deve ser concedido se a solicitação vier da rede local (Localnet), ou de LocalHost. Especificamente qual é a rede local ou endereços de host local permitidos? A resposta é: aqueles especificados nas diretrizes de localhost e local da LocalNET.

http_access Demitir LocalNet http_access Demitir localhost 
Lista de lulas permitir que a lista de acesso

Neste ponto, você pode reiniciar Lula Para aplicar quaisquer alterações pendentes.

# Service Squid Reiniciar [Distribuições baseadas em Upstart / Sysvinit] # SystemCtl Reiniciar lulas.Serviço [Distribuições baseadas em Systemd] 

e depois configure um navegador de clientes na rede local (192.168.0.104 no nosso caso) para acessar a Internet através do seu proxy da seguinte maneira.

Em Firefox

1. Vou ao Editar menu e escolha o Preferências opção.

2. Clique em Avançado, então no Rede guia, e finalmente em Configurações..

3. Verificar Configuração manual de proxy e entre no endereço de IP do servidor proxy e o porta onde está ouvindo conexões.

Configurar proxy no Firefox

Observação Isso por padrão, a lula ouve na porta 3128, Mas você pode substituir esse comportamento editando o Lista de acesso regra que começa com http_port (por padrão, ele lê http_port 3128).

4. Clique OK Para aplicar as mudanças e você está pronto para ir.

Verificando que um cliente está acessando a Internet

Agora você pode verificar se o cliente de rede local está acessando a Internet através do seu proxy da seguinte maneira.

1. Em seu cliente, abra um terminal e tipo,

# Endereço IP Mostrar ETH0 | grep -ei '(INET.*eth0) '' 

Esse comando exibirá o atual endereço de IP do seu cliente (192.168.0.104 na imagem a seguir).

2. Em seu cliente, use um navegador da web para abrir qualquer site de qualquer site (www.Tecmint.com nesse caso).

3. No servidor, execute.

# cauda -f/var/log/squid/acesso.registro 

E você terá uma visão ao vivo dos pedidos sendo servidos Lula.

Verifique a navegação por proxy

Restringindo o acesso pelo cliente

Agora, suponha que você queira negar explicitamente o acesso a esse endereço IP do cliente específico, mantendo o acesso para o restante da rede local.

1. Defina um novo ACL diretiva como segue (eu o nomeei Ubuntuos Mas você pode nomear o que quiser).

ACL Ubuntuos SRC 192.168.0.104 

2. Adicione o ACL Diretiva para o LocalNet Access Lista que já está em vigor, mas precedi -la com um sinal de exclamação. Isso significa, "Permitir acesso à Internet a clientes que correspondem à diretiva LocalNet ACL, exceto àquela que corresponde à diretiva Ubuntuos”.

http_access Deixe o LocalNet !Ubuntuos 

3. Agora precisamos reiniciar a lula para aplicar mudanças. Então, se tentarmos navegar para qualquer site, descobriremos que o acesso é negado agora.

Bloqueie o acesso à Internet

Configurando a lula - ajuste fino

Restringir o acesso por domínio e / ou por hora do dia / dia da semana

Para restringir o acesso à lula por domínio, usaremos o DSTDOMAIN palavra -chave em a ACL diretiva, como segue.

ACL proibido dstdomain "/etc/squid/proibidden_domains" 

Onde proibido_domains é um arquivo de texto simples que contém os domínios que desejamos negar o acesso.

Bloqueie o acesso a domínios

Finalmente, devemos conceder acesso à lula para solicitações que não correspondam à diretiva acima.

http_access Deixe o LocalNet !proibido 

Ou talvez apenas queremos permitir o acesso a esses sites durante uma certa hora do dia (10:00 até 11:00) apenas em Segunda -feira (M), Quarta -feira (W), e Sexta -feira (F).

ACL algum dia MWF 10: 00-11: 00 http_access permitir proibido algum dia http_access negar proibido 

Caso contrário, o acesso a esses domínios será bloqueado.

Restringindo o acesso por autenticação do usuário

Squid supõe vários mecanismos de autenticação (BASIC, NTLM, DIGEST, SPNEGO e OAUTH) e HELHEDERS (banco de dados SQL, LDAP, NIS, NCSA, para citar alguns). Neste tutorial, usaremos a autenticação básica com NCSA.

Adicione as seguintes linhas ao seu /etc/lula/lula.conf arquivo.

autent_param Basic Program/usr/lib/squid/ncsa_auth/etc/squid/passwd auth_param básico credencialsttl 30 minutos Auth_Param Basic CaseseSitive no auth_param básico realma squid proxy-caching servidor web para o servidor lfcEact ncsa de Tecmint ncsa proxy_auth htped htp_snt ° 

Observação: Em CENTOS 7, O plugin ncsa para lula pode ser encontrado em /usr/lib64/squid/basic_nsca_auth, Portanto, mude de acordo com a linha acima.

Ativar autenticação NCSA

Alguns esclarecimentos:

  1. Precisamos dizer à lula qual programa auxiliar de autenticação para usar com o auth_param Diretiva especificando o nome do programa (provavelmente, /usr/lib/squid/ncsa_auth ou /usr/lib64/squid/basic_nsca_auth), além de qualquer opção de linha de comando (/etc/lula/passwd neste caso) se necessário.
  2. O /etc/lula/passwd O arquivo é criado através htpasswd, uma ferramenta para gerenciar a autenticação básica através de arquivos. Isso nos permitirá adicionar uma lista de nomes de usuário (e suas senhas correspondentes) que poderão usar a lula.
  3. CREDENCIALSTTL 30 minutos exigirá que você digite seu nome de usuário e senha a cada 30 minutos (você pode especificar esse intervalo de tempo com horas).
  4. maiúsculas e minúsculas On indica que os nomes de usuário e as senhas são sensíveis ao maiúsculas de minúsculas.
  5. reino representa o texto da caixa de diálogo de autenticação que será usada para autenticar para lula.
  6. Finalmente, o acesso é concedido apenas quando a autenticação de proxy (proxy_auth necessário) consegue.

Execute o seguinte comando para criar o arquivo e adicionar credenciais para o usuário Gacanepa (omita o -c sinalizador se o arquivo já existir).

# htpasswd -c/etc/squid/passwd gacanepa 
Restringir o acesso da lula aos usuários

Abra um navegador da web na máquina cliente e tente navegar para qualquer site.

Ativar autenticação de lula

Se a autenticação for bem -sucedida, o acesso será concedido ao recurso solicitado. Caso contrário, o acesso será negado.

Usando o cache para acelerar a transferência de dados

Uma das características distintivas de Squid é a possibilidade de os recursos de cache solicitados da Web para o disco, a fim de acelerar solicitações futuras desses objetos pelo mesmo cliente ou outros.

Adicione as seguintes diretivas em seu lula.conf arquivo.

cache_dir ufs/var/cache/squid 1000 16 256 maximum_object_size 100 mb refresh_pattern .*\.(MP4 | ISO) 2880 

Alguns esclarecimentos das diretivas acima.

  1. ufs é o formato de armazenamento da lula.
  2. /var/cache/lula é um diretório de nível superior, onde os arquivos de cache serão armazenados. Este diretório deve existir e ser escrito pela lula (a lula não criará este diretório para você).
  3. 1000 é a quantidade (em MB) para usar neste diretório.
  4. 16 é o número de subdiretórios de 1º nível, enquanto 256 é o número de subdiretórios de 2º nível /var/spool/lula.
  5. O Maximum_Object_size Diretiva especifica o tamanho máximo dos objetos permitidos no cache.
  6. refresh_pattern diz a Squid como lidar com tipos de arquivos específicos (.MP4 e .ISO neste caso) e por quanto tempo ele deve armazenar os objetos solicitados em cache (2880 minutos = 2 dias).

O primeiro e o segundo 2880 são limites inferiores e superiores, respectivamente, quanto tempo objetos sem um tempo de validade explícitos serão considerados recentes e, portanto, serão servidos pelo cache, enquanto 0% é a porcentagem da idade dos objetos (tempo desde a última modificação) de que cada objeto sem tempo de validade explícito será considerado recente.

Estudo de caso: baixando um .arquivo mp4 de 2 clientes diferentes e testando o cache

Primeiro cliente (IP 192.168.0.104) Downloads a 71 MB .MP4 Arquivo em 2 minutos e 52 segundos.

Ativar armazenamento em cache na lula

Segundo cliente (IP 192.168.0.17) Downloads o mesmo arquivo em 1.4 segundos!

Verifique o cache da lula

Isso porque o arquivo foi servido do Cache da lula (indicado por Tcp_hit/200) no segundo caso, em oposição à primeira instância, quando foi baixado diretamente da Internet (representado por TCP_MISS/200).

O BATER e PERDER palavras -chave, junto com o 200 http Código de resposta, indique que o arquivo foi servido com sucesso nas duas vezes, mas o cache foi atingido e perdido, respectivamente. Quando uma solicitação não pode ser atendida pelo cache por algum motivo, as tentativas de lula de servir na Internet.

Códigos HTTP de lula

Conclusão

Neste artigo, discutimos como configurar um Lula Web Caching Proxy. Você pode usar o servidor proxy para filtrar o conteúdo usando um critério escolhido e também para reduzir a latência (uma vez que solicitações de entrada idênticas são servidas no cache, que está mais próximo do cliente do que o servidor da Web que realmente serve o conteúdo, resultando em mais rápido transferências de dados) e tráfego de rede também (reduzindo a quantidade de largura de banda usada, que economiza dinheiro se você estiver pagando pelo tráfego).

Você pode consultar o site da Squid para mais documentação (verifique também o wiki), mas não hesite em entrar em contato conosco se tiver alguma dúvida ou comentário. Ficaremos mais do que felizes em ouvir de você!

Torne -se um engenheiro certificado Linux