Servidor Proxy: mudanças entre as edições

De Wiki Cursos IFPR Foz
Ir para navegaçãoIr para pesquisar
 
(30 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 13: Linha 13:


==Squid==
==Squid==
;Instalação: No Linux um '''servidor Proxy''' é implementado pelo pacote '''Squid''', instalado com o comando:
;Instalação: No Linux um '''servidor Proxy''' é implementado pelo pacote '''[https://help.ubuntu.com/lts/serverguide/squid.html.en Squid]''', instalado com o comando:
  sudo apt-get install squid
  sudo apt install squid


;Arquivo de configuração: A configuração do '''Squid''' feita no arquivo
;Arquivo de configuração: A configuração do '''Squid''' feita no arquivo
  /etc/squid3/squid.conf
  /etc/squid/squid.conf
:Antes de editar o arquivo de configuração, faça uma '''cópia backup''' do arquivo original para recuperar as configurações originais, caso necesário:
:Antes de editar o arquivo de configuração, faça uma '''cópia backup''' do '''arquivo original''' para recuperar as configurações originais, caso necesário:
  sudo cp /etc/squid3/squid.conf /etc/squid3/squid.conf.bak
  sudo cp /etc/squid/squid.conf /etc/squid/squid.conf-original


O arquivo  '''squid.conf''' é bastante extenso e complexo, entretanto, com uma configuração mínima já é possível de ser utilizado.  
O arquivo  '''squid.conf''' é bastante extenso e complexo, entretanto, com uma configuração mínima já é possível de ser utilizado. Procure no arquivo as TAGS abaixo e retire os comentários caso seja necessário para habilitar os seguintes parâmetros básicos:
 
Procure no arquivo '''/etc/squid3/squid.conf''' as TAGS abaixo, e retire os comentários caso seja necessário para habilitar os seguintes parâmetros básicos:
  #  TAG: http_port
  #  TAG: http_port
  http_port 3128
  http_port 3128
Linha 29: Linha 27:


  #  TAG: cache_dir
  #  TAG: cache_dir
  cache_dir ufs /var/spool/squid3 100 16 256
  cache_dir ufs /var/spool/squid 100 16 256
  # '''Deve ser descomentado'''.  
  # '''Deve ser descomentado'''.  
  # Define o '''diretório cache''' do Squid ('''/var/spool/squid3''')
  # Define o '''diretório cache''' do Squid ('''/var/spool/squid3''')
Linha 39: Linha 37:


===Listas de controle de acesso===
===Listas de controle de acesso===
Com o Squid é possível o bloqueio ou liberação de acesso a determinados sítios, redes, em determinados dias e horários.
Com o '''Squid''' é possível '''bloquear''' ou '''liberar  acesso''' a determinados sites ou redes, em determinados dias e horários.


O '''controle de acesso''' é realizado através das chamadas listas '''ACL''' (''Access Control List'').
O '''controle de acesso''' é realizado através das chamadas listas '''ACL''' (''Access Control List'').
Linha 50: Linha 48:
:Verifique os '''tipos de regras acl''' ('''acltype''') disponíveis procurando no arquivo '''squid.conf''':
:Verifique os '''tipos de regras acl''' ('''acltype''') disponíveis procurando no arquivo '''squid.conf''':
  #      ***** ACL TYPES AVAILABLE *****
  #      ***** ACL TYPES AVAILABLE *****
<!--
 
Algumas regras default são pré definidas:
Algumas regras default são pré definidas:
  # ACLs all, manager, localhost, and to_localhost-->
  # ACLs all, manager, localhost, and to_localhost


'''Recomendação mínima''' de configuração para permitir acesso dos computadores a partir da '''rede local''':
'''Recomendação mínima''' de configuração para permitir acesso dos computadores a partir da '''rede local''':
  acl localnet src 192.168.0.0/16
  acl localnet src 192.168.70.0/23
:Localizar e descomentar esta ACL de acordo com o '''endereçamento IP''' da '''rede local'''.
:'''Localizar e descomentar''' esta ACL de acordo com o '''endereçamento IP''' da '''rede local'''.
 
Verifique logo abaixo no arquivo '''squid.conf''' a configuração padrão para as listas ACL permitindo somente acesso as '''portas específicas''':
acl SSL_ports port 443
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443        # https
acl Safe_ports port 1025-65535  # unregistered ports
acl CONNECT method CONNECT
#Bloqueia se não for porta segura
http_access deny !Safe_ports
#Bloqueia se não for conexão SSL
http_access deny CONNECT !SSL_ports


====Inserção de regras ACL de controle de acesso====
====Inserção de regras ACL de controle de acesso====
Linha 62: Linha 73:
  # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
  # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS


;Exemplos de regras ACL: <ref name=VALLE/>
'''Aqui são inseridas novas regras para permitir acesso a clientes'''
*Permitir acesso a todos:
 
acl all src 0.0.0.0/0.0.0.0
:A ordem das regras é importante, pois o Squid interpreta as regras na ordem em que são colocadas no arquivo. Se você permite que o computador X acesse o Proxy, ele acessa, mesmo que uma regra mais abaixo diga que não <ref name=MORIMOTO>MORIMOTO, C. E. Seridores Linux: Guia prático, Sul Editores, Porto Alegre, 2013.</ref>.
http_access allow all
 
*Permitir acesso somente da rede local:
Logo abaixo, '''procure e retire o comentário''' da regra para permitir acesso a partir de sua '''rede local''', juntamente com a permissão do acesso pelo '''localhost''' (já habilitado por default):
acl localnet src 192.168.0.0/16
  http_access allow localnet
  http_access allow localnet
*Bloquear acesso a computadores da rede local:
http_access allow localhost
  acl host src 192.168.1.10/32 192.168.1.11/32
 
  http_access deny host
Finalmente, deve-se bloquear todos os demais acessos ao Proxy, o que é está configurado por default:
*Bloquear acesso a sites indesejáveis:
# And finally deny all other access to this proxy
http_access deny all
 
===Exemplos de regras ACL===
Referência <ref name=VALLE/>.
;Permitir acesso somente da rede local:
acl localnet src 192.168.70.0/23
http_access allow localnet
;Bloquear acesso a determinados computadores da rede local:
  acl hosts src 192.168.70.10/32 192.168.70.11/32
  http_access deny hosts
;Bloquear acesso a sites indesejáveis:
  acl sites dstdomain "/etc/squid3/acl/sites-deny"
  acl sites dstdomain "/etc/squid3/acl/sites-deny"
  http_access deny sites
  http_access deny sites
:Neste caso deve-se criar o arquivo '''/etc/squid3/acl/sites-deny''' e inserir os sites indesejados, um por linha.
:Neste caso deve-se criar o arquivo '''/etc/squid/acl/sites-deny''' e inserir os sites indesejados, um por linha.
*Restringir horário de acesso:
;Restringir horário de acesso:
  acl horario time MTWHF 08:00-18:00
  acl horario time MTWHF 08:00-18:00
  http_access allow localnet horario
  http_access allow localnet horario
Linha 82: Linha 103:
:Onde: S=domingo, M=segunda, T=terça, W=quarta, H=quinta, F=sexta e A=sábado.
:Onde: S=domingo, M=segunda, T=terça, W=quarta, H=quinta, F=sexta e A=sábado.


;Acesso permitido apenas a portas específicas: Verifique no arquivo '''/etc/squid3/squid.conf''' a configuração padrão para as listas ACL permitindo somente acesso as portas específicas:
===Reiniciar o serviço de Proxy===
  acl SSL_ports port 443
 
acl Safe_ports port 80          # http
Depois de realizar modificações no arquivo /etc/squid/squid.conf, o serviço de '''Proxy''' deve ser reiniciado com o comando:  
acl Safe_ports port 21          # ftp
  sudo systemctl restart squid.service
acl Safe_ports port 443        # https
acl Safe_ports port 1025-65535  # unregistered ports
acl CONNECT method CONNECT
#Bloqueia se não for porta segura
http_access deny !Safe_ports
#Bloqueia se não for conexão SSL
http_access deny CONNECT !SSL_ports


===Configuração e teste do navegador para utilizar servidor Proxy===
==Tarefa: Servidor Proxy==
Cada '''navegador''' que for utilizar o '''servidor Proxy''' deve ser configurado.
Cada '''navegador''' que for utilizar o '''servidor Proxy''' deve ser configurado.


No '''Firefox''' a configuração do Proxy é acessada por '''Editar -> Preferências -> Avançado -> Rede''':
No '''Firefox''' a configuração do Proxy é acessada por '''Preferências -> Geral -> Configurações de Rede -> Configurar conexão''':
*Modifique a configuração do Proxy e acrescente em '''HTTP''': <IP_do_Servidor_Proxy> e '''Porta''': 3128 e clique em '''Usar este proxy para todos os protocolos'''.
 
[[Arquivo:ConfigProxy.png|500px]]
 
Modifique a configuração do '''Proxy''' e acrescente em '''HTTP''': <IP_do_Servidor_Proxy> e '''Porta''': 3128 e clique em '''Usar este proxy para todos os protocolos'''.
 
*Testar o acesso a um site Web.
*Testar o acesso a um site Web.
*Testar o bloqueio de acesso a determinados computadores da rede local.
*Testar o bloqueio de acesso a determinados sites Web.


Os arquivos e páginas acessadas são armazenados no diretório '''/var/spool/squid3/'''.
Os arquivos e páginas acessadas são armazenados no diretório '''/var/spool/squid/''' e são criptografados pelo Squid, não sendo possível verificar os dados em ''cache''.


==Referências==
==Referências==

Edição atual tal como às 17h39min de 31 de maio de 2021

Servidor Proxy

Um servidor Proxy é uma espécie de memória cache comunitária na qual cada página Web que um usuário acessar ficará armazenada na cache do servidor. Quando um usuário acessa um conteúdo o navegador primeiro faz a requisição ao servidor Proxy. Se a página requisitada estiver na cache o servidor Proxy entrega imediatamente. Se a página não estiver na cache o servidor Proxy faz a consulta na Internet, requisita o conteúdo, e armazena em sua cache [1].

[1]

Ao utilizar um Proxy, além da configuração do servidor é necessário configurar cada um dos navegadores e outros programas que vão acessar a Internet via servidor Proxy.

Squid

Instalação
No Linux um servidor Proxy é implementado pelo pacote Squid, instalado com o comando:
sudo apt install squid
Arquivo de configuração
A configuração do Squid feita no arquivo
/etc/squid/squid.conf
Antes de editar o arquivo de configuração, faça uma cópia backup do arquivo original para recuperar as configurações originais, caso necesário:
sudo cp /etc/squid/squid.conf /etc/squid/squid.conf-original

O arquivo squid.conf é bastante extenso e complexo, entretanto, com uma configuração mínima já é possível de ser utilizado. Procure no arquivo as TAGS abaixo e retire os comentários caso seja necessário para habilitar os seguintes parâmetros básicos:

#  TAG: http_port
http_port 3128
# Especifica a porta padrão de escuta do squid.
#  TAG: cache_dir
cache_dir ufs /var/spool/squid 100 16 256
# Deve ser descomentado. 
# Define o diretório cache do Squid (/var/spool/squid3)
# Por padrão tem tamanho máximo de 100 MB, com 16 diretórios, cada um com 256 sub-diretórios.

Listas de controle de acesso

Com o Squid é possível bloquear ou liberar acesso a determinados sites ou redes, em determinados dias e horários.

O controle de acesso é realizado através das chamadas listas ACL (Access Control List).

#  TAG: acl

O formato geral de uma ACL é:

#          acl aclname acltype argument ...
#          acl aclname acltype "file" ...
O aclname é o nome escolhido para a regra, acltype define a origem, destino, tempo, etc, o argument define números IP, máscara de rede etc, e file deve conter o caminho e nome do arquivo que definirá uma coleção de máquinas ou sites Web, etc.
Verifique os tipos de regras acl (acltype) disponíveis procurando no arquivo squid.conf:
#       ***** ACL TYPES AVAILABLE *****

Algumas regras default são pré definidas:

# ACLs all, manager, localhost, and to_localhost

Recomendação mínima de configuração para permitir acesso dos computadores a partir da rede local:

acl localnet src 192.168.70.0/23 
Localizar e descomentar esta ACL de acordo com o endereçamento IP da rede local.

Verifique logo abaixo no arquivo squid.conf a configuração padrão para as listas ACL permitindo somente acesso as portas específicas:

acl SSL_ports port 443
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
acl Safe_ports port 1025-65535  # unregistered ports
acl CONNECT method CONNECT

#Bloqueia se não for porta segura
http_access deny !Safe_ports
#Bloqueia se não for conexão SSL
http_access deny CONNECT !SSL_ports

Inserção de regras ACL de controle de acesso

Procure no arquivo squid.conf o local adequado para inserir regras ACL de controle de acesso para usuários do Proxy:

# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS

Aqui são inseridas novas regras para permitir acesso a clientes

A ordem das regras é importante, pois o Squid interpreta as regras na ordem em que são colocadas no arquivo. Se você permite que o computador X acesse o Proxy, ele acessa, mesmo que uma regra mais abaixo diga que não [2].

Logo abaixo, procure e retire o comentário da regra para permitir acesso a partir de sua rede local, juntamente com a permissão do acesso pelo localhost (já habilitado por default):

http_access allow localnet
http_access allow localhost

Finalmente, deve-se bloquear todos os demais acessos ao Proxy, o que é está configurado por default:

# And finally deny all other access to this proxy
http_access deny all

Exemplos de regras ACL

Referência [1].

Permitir acesso somente da rede local
acl localnet src 192.168.70.0/23
http_access allow localnet
Bloquear acesso a determinados computadores da rede local
acl hosts src 192.168.70.10/32 192.168.70.11/32
http_access deny hosts
Bloquear acesso a sites indesejáveis
acl sites dstdomain "/etc/squid3/acl/sites-deny"
http_access deny sites
Neste caso deve-se criar o arquivo /etc/squid/acl/sites-deny e inserir os sites indesejados, um por linha.
Restringir horário de acesso
acl horario time MTWHF 08:00-18:00
http_access allow localnet horario
http_access deny localnet
Onde: S=domingo, M=segunda, T=terça, W=quarta, H=quinta, F=sexta e A=sábado.

Reiniciar o serviço de Proxy

Depois de realizar modificações no arquivo /etc/squid/squid.conf, o serviço de Proxy deve ser reiniciado com o comando:

sudo systemctl restart squid.service

Tarefa: Servidor Proxy

Cada navegador que for utilizar o servidor Proxy deve ser configurado.

No Firefox a configuração do Proxy é acessada por Preferências -> Geral -> Configurações de Rede -> Configurar conexão:

Modifique a configuração do Proxy e acrescente em HTTP: <IP_do_Servidor_Proxy> e Porta: 3128 e clique em Usar este proxy para todos os protocolos.

  • Testar o acesso a um site Web.
  • Testar o bloqueio de acesso a determinados computadores da rede local.
  • Testar o bloqueio de acesso a determinados sites Web.

Os arquivos e páginas acessadas são armazenados no diretório /var/spool/squid/ e são criptografados pelo Squid, não sendo possível verificar os dados em cache.

Referências

  1. 1,0 1,1 1,2 VALLE, O. T. Adminstração de Redes com Linux: Fundamentos e práticas, IFSC, Florianópolis, 2010.
  2. MORIMOTO, C. E. Seridores Linux: Guia prático, Sul Editores, Porto Alegre, 2013.

--Evandro.cantu (discussão) 11h10min de 22 de fevereiro de 2016 (BRT)