Instalando Squid

De TuxTI

Esse tutorial aborda a instalação do squid na versão 3 no sistema operacional Debian 6.0.

O Squid é um programa de proxy que pode ser instalado em Windows, Linux, FreeBSD e outros Unix. Com ele é possível criar filtros de páginas, cache de sites visitados e autenticação para uso da internet.

Em uma instalação padrão do squid os arquivos e pastas principais estão localizados em:

/etc/squid3/: Pasta onde ficam os arquivos de configuração;
/etc/squid3/squid.conf: Arquivo de configuração principal;
/var/log/squid3: Arquivos de log.


Instalação

Para iniciar a instalação do squid execute o comando abaixo com o usuário root:

# aptitude install squid3

Após instalar os pacotes, crie a pasta abaixo para colocar o cache dos sites acessados, e defina permissões de uso para o usuário proxy:

mkdir /var/cache/squid
chown proxy /var/cache/squid


Configuração

Edite o arquivo de configuração do squid /etc/squid3/squid.conf e deixe com o conteúdo abaixo:

#######
### Parâmetros de Configuração
http_port 3128
cache_dir ufs /var/cache/squid/ 300 16 256

######
### Listas de Controle de Acesso
acl manager proto cache_object
acl rede_local src 192.168.0.0/24, 192.168.1.0/24
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1

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

######
### Liberações e Restrições de Acesso
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access allow rede_local
http_access deny all

Primeira Parte

A primeira parte da configuração contém parâmetros de configuração do squid:

- http_port 
Especifica a porta do serviço, por padrão é a 3128
- cache_dir 
Define a pasta onde serão salvos os arquivos de cache das paginas visitadas.


Segunda Parte

A segunda parte são os parâmetros que definem as listas de de controle, essas listas serão utilizadas na última sessão para controle de acesso.

- acl 
O parâmetro acl define as Listas de Controle de Acesso, o seu formato é:
acl Nome_da_Acl Tipo Argumentos

Se pegarmos o exemplo abaixo:

acl rede_local src 192.168.0.0/24, 192.168.1.0/24
         |     |   |               |
         |     |   ------------------> Argumentos: São passadas duas Sub-redes.
         |     |      
         |     ----------------------> Tipo: 'src' usado para especificar endereços de origem
         |    
         ----------------------------> Nome da Lista: Esse nome 'rede_local' será utilizado 
                                                     na sessão de controle de acesso


Os outros tipos de acl:

  • dst
    • Para criar listas de endereços de destino
  • proto
    • Listas de Protocolos
  • port
    • Portas de serviços
  • method
    • Metodo de requisição
  • url_regex
    • Lista de palavras ou endereços a serem verificados na url requisitada. Vamos utilizar esse tipo mais adiante.

A lista completa pode ser vista nesse link: http://www.squid-cache.org/Doc/config/acl/ [1]

Terceira Parte

E a terceira sessão está o controle de acesso, onde squid faz as liberações ou restrições. A leitura das regras é feita na mesma ordem que está escrita no arquivo de configuração, e quando uma regra casa é executada uma ação, e se encerra a leitura das regras. Então deve-se ter atenção com a posição das regras.

http_access 
Permite (allow) ou Nega (deny) acesso de acordo com as Listas de Controle de Acesso (acl), o seu formato é:
http_access Ação(allow ou deny) Argumentos

Restrição de acesso por IPs e listas de sites

A forma mais básica criar restrições, dessa forma podem ser feitos bloqueios ou liberações pelo endereço IP da máquina do usuário.

Crie um arquivo chamado sites_bloqueados.txt dentro da pasta /etc/squid3/, e dentro dele coloque o palavras ou endereço de alguns sites que seriam bloqueados na sua rede, como por exemplo:

playboy.com
garotassensuais.com.br
sexo
porno

Agora crie um arquivo chamado ips_liberados.txt dentro da pasta /etc/squid3/, e dentro do arquivo coloque endereços de IP que podem ter acesso irrestrito, como no exemplo:

192.168.0.1
192.168.0.2
192.168.1.5

Agora edite o arquivo squid.conf e acrescente as regras de acl abaixo junto com as outras acl's:

acl sites_bloqueados url_regex "/etc/squid3/sites_bloqueados.txt"
acl ips_liberados url_regex "/etc/squid3/ips_liberados.txt"

E na parte das restrições de acesso coloque as linhas abaixo antes da linha que libera a rede local ("http_access allow rede_local")

http_access allow ips_liberados
http_access deny sites_bloqueados

Mas nessa lista de bloqueios pode ser bloqueado um site por engano, por exemplo, o site www.sexoesaude.com.br seria bloqueado também, então podemos criar uma lista de exceção, crie um arquivo chamado sites_liberados.txt dentro da pasta /etc/squid3/, e dentro coloque sites liberados:

sexoesaude.com.br

Agora edite o arquivo squid.conf e acrescente a regra de acl abaixo junto com as outras acl's:

acl sites_liberados url_regex "/etc/squid3/sites_liberados.txt"

E modifique a linha que está assim: http_access deny sites_bloqueados
Para: http_access deny sites_bloqueados !sites_liberados

O sinal de exclamação ! indica uma exceção.

Comandos

Abaixo seguem alguns comandos úteis.

service squid3 restart
Reinicia o serviço do Squid.


squid3 -k reconfigure
Faz com que o processo do Squid releia o arquivo de configuração, se rodar o comando anterior "service squid3 restart", você vai perceber que o programa vai demorar para rodar, por que o squid vai ter que parar o cache (Armazenamento de paginas), e isso leva um pouco de tempo, então quando fizer a alteração em alguma regra no arquivo de configuração, é melhor utilizar o comando: "squid3 -k reconfigure"


tail /var/log/squid/access.log
Escreve na tela os últimos acessos registrados no log do squid

Arquivo Final

#######
### Parâmetros de Configuração
http_port 3128
cache_dir ufs /var/cache/squid/ 300 16 256

######
### Listas de Controle de Acesso
acl sites_liberados url_regex "/etc/squid3/sites_liberados.txt
acl sites_bloqueados url_regex "/etc/squid3/sites_bloqueados.txt"
acl ips_liberados url_regex "/etc/squid3/ips_liberados.txt"

acl manager proto cache_object
acl rede_local src 192.168.0.0/24, 192.168.1.0/24
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1

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

######
### Liberações e Restrições de Acesso
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access allow ips_liberados
http_access deny sites_bloqueados !sites_liberados
http_access allow rede_local
http_access deny all


Mais informações

Site do Squid: http://www.squid-cache.org [2]