16.2. Como faço para configurar acesso restrito ou liberado a internet para toda a rede ?

O servidor Squid pode ser configurado de modo a seguir regras de acesso, autenticações ou acesso liberado. O procedimento descrito assume que a sua máquina linux já esta configurada na rede local onde será o servidor para as demais e conectada a internet. Este procedimento não prevê envio e recebimento de mensagens através do serviço de proxy.

As configurações sitadas neste documento foram realizadas diretamente no arquivo squid.conf (/etc/squid/squid.conf)

Verifique se os pacotes do squid encontram-se instalado em seu sistema através do comando:

       [root@localhost root]# rpm -qa |grep squid


Serão apresentados os seguintes pacotes para a versão CL7.0:

        squid-(versão do pacote)
        linuxconf-squid-(versão do pacote)
        squid-doc-(versão do pacote)
        squid-auth-(versão do pacote)
        squid-templates-(versão do pacote)

Para a versão Cl60 e anteriores será apresentado apenas os pacotes:

        squid-(versão do pacote)
        linuxconf-squid-(versão do pacote)

Caso os pacotes não apareçam utilize o aplicativo apt-get ou o rpm para instalar os pacotes.

Antes de iniciar o processo de configuração aconselha-se a fazer uma cópia do arquivo original onde serão feitas as alterações, pois se for necessário refazer a configuração desde o início por algum motivo de erro não será preciso reinstalar os pacotes.

Para fazer a cópia do arquivo original utilize o comando:

        [root@localhost root]#cp /etc/squid/squid.conf /tmp

OBS: Para todos os exemplos foi utilizada a rede 192.168.0.0 . A regra acl rede_interna src restringe o acesso a somente a rede interna impedindo assim que outros que estejam fora da rede utilizem o seu serviço de proxy.

Segue abaixo alguns exemplos de permissão de acesso no squid

16.2.1. Acesso livre para todas as máquinas da rede:

Esta é a forma mais simples de configuração do servidor squid, para que todas as máquinas da rede tenham acesso a internet, será criada uma regra (acl) para dar acesso a somente máquinas que pertençam a rede .

Edite o arquivo de configuração:

        [root@localhost root]#mcedit /etc/squid/squid.conf

No arquivo de configuração do squid procure a seguinte entrada:

Na sequência do arquivo insira a acl "acl rede_interna src 192.168.0.0

    #Recommended minimum configuration:
    acl all src 0.0.0.0/0.0.0.0
    acl manager proto cache_object
    acl localhost src 127.0.0.1/255.255.255.255
    acl SSL_ports port 443 563
    acl Safe_ports port 80      # http
    acl Safe_ports port 21      # ftp
    acl Safe_ports port 443 563 # https, snews
    acl Safe_ports port 70      # gopher
    acl Safe_ports port 210     # wais
    acl Safe_ports port 1025-65535  # unregistered ports
    acl Safe_ports port 280     # http-mgmt
    acl Safe_ports port 488     # gss-http
    acl Safe_ports port 591     # filemaker
    acl Safe_ports port 777     # multiling http
    acl CONNECT method CONNECT
    acl rede_interna src 192.168.0.0 <- insira esta linha.
   


O último passo a ser especificado para este tipo de configuração é a liberação de acesso para a rede interna.

Ainda no arquivo procure pela entrada abaixo:

    # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
    #
    # And finally deny all other access to this proxy
    #http_access deny all <- comente esta entrada
    http_access allow rede_interna <- insira esta linha


Pressione F2 para salvar e F10 para sair.

Utilize os comandos abaixo para iniciar o serviço do squid.

        [root@localhost root]# service squid stop ; service squid start

Nas máquinas clientes configure o programa de navegação para procurar pelo servidor proxy, informando o ip da máquina servidor e a porta de comuicação.

OBS: A porta de comunicação não foi alterada sendo assim o serviço responderá na porta 3128.

16.2.2. Acesso através da autenticação do usuário:

Esta forma de acesso permite que somente usuários cadastrados no servidor proxy poderão utilizá-lo para navegação. Quando for feito um pedido no navegador ele mostrará uma tela pedindo login e senha para acesso:

OBS: O usuário e o login não precisam ser necessariamente os mesmos do usuário real.

Para autenticar os usuários será necessário um programa que verifique se as informações estão corretas ou não, neste exemplo utilizaremos o ncsa_auth que esta no diretório /usr/lib/squid.

Copie o arquivo para dentro do diretório /usr/bin/ com o comando:

        [root@localhost root]#cp /usr/lib/squid/ncsa_auth /usr/bin/

Após a cópia do arquivo crie o arquivo onde ficarão a senhas dos usuários .

O arquivo /etc/squid/squid_passwd deve ser criado com o comando htpasswd:

Ex:

       [root@localhost]# htpasswd -c /etc/squid/squid_passwd joao

Será pedida a senha e em seguida sua confirmação. Para inserir os outros usuários que terão acesso, será necessário retirar a opção -c e alterar o nome do usuário.

Ex:

        [root@localhost]# htpasswd /etc/squid/squid_passwd pedro

Feita a criação do arquivo onde ficarão as senhas e copiado o programa que autenticará, edite o arquivo squid.conf com o comando:

        
        [root@localhost root]#mcedit /etc/squid/squid.conf

Procure pela entrada:

    #  TAG: authenticate_program
    #   Specify the command for the external authenticator.  Such a
    #   program reads a line containing "username password" and replies
    #   "OK" or "ERR" in an endless loop.  If you use an authenticator,
    #   make sure you have 1 acl of type proxy_auth.  By default, the
    #   authenticator_program is not used.
    #
    #   If you want to use the traditional proxy authentication,
    #   jump over to the ../auth_modules/NCSA directory and
    #   type:
    #       % make
    #       % make install
    #
    #   Then, set this line to something like
    #
    #   authenticate_program /usr/bin/ncsa_auth /usr/etc/passwd
    
    authenticate_program /usr/bin/ncsa_auth /etc/squid/squid_passwd <-insira esta linha


A linha acima refere-se ao programa que irá autenticar assim como o arquivo que guardará as senhas dos usuários.

Na sequência do arquivo insira a acl "acl password proxy_auth REQUIRED" no final como mostra o exemplo abaixo:

    #Recommended minimum configuration:
    acl all src 0.0.0.0/0.0.0.0
    acl manager proto cache_object
    acl localhost src 127.0.0.1/255.255.255.255
    acl SSL_ports port 443 563
    acl Safe_ports port 80      # http
    acl Safe_ports port 21      # ftp
    acl Safe_ports port 443 563 # https, snews
    acl Safe_ports port 70      # gopher
    acl Safe_ports port 210     # wais
    acl Safe_ports port 1025-65535  # unregistered ports
    acl Safe_ports port 280     # http-mgmt
    acl Safe_ports port 488     # gss-http
    acl Safe_ports port 591     # filemaker
    acl Safe_ports port 777     # multiling http
    acl CONNECT method CONNECT
    acl password proxy_auth REQUIRED <- insira esta linha.


O último passo a ser especificado para este tipo de configuração é a liberação do acesso através de senha.

Ainda no arquivo procure pela entrada abaixo:

    # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
    #
    # And finally deny all other access to this proxy
    #http_access deny all    <- comente esta linha.
    http_access allow password  <- insira esta linha.


Pressione F2 para salvar e F10 para sair do arquivo.

As configurações necessárias para que o servidor squid requisite senhas já esta pronto.

Utilize os comandos abaixo para iniciar o serviço do squid.

        [root@localhost root]# service squid stop ; service squid start

OBS: Quando o navegador for carregado e algum endereço for pedido, será apresentada um tela pedindo o login e a senha, somente os usuários cadastrados no servidor proxy terão acesso.

16.2.3. Restrições para rede, endereços, palavras e horários.

Este tipo de restrição é utilizada por administradores de rede para que os usuários que precisem utilizar a internet como meio e comunicação ou pesquisa façam o uso dela apenas profissionalmente e não para assuntos que não estejam ligados as suas funções dentro do seu trabalho.

16.2.4. Restrição para rede

Este exemplo refere-se a restrição de apenas algumas máquinas da rede, vamos utilizar a rede 192.168.0.0 e restringir os IP's 192.168.0.1 e 192.168.0.2.

Edite o arquivo squid.conf com o comando:

        [root@localhost root]#mcedit /etc/squid/squid.conf

Na sequência do arquivo insira as acls:

acl rede_interna src 192.168.0.0

"acl proibir_ip src 192.168.0.1 192.168.0.2" ao final das acls já criadas.

    #Recommended minimum configuration:
    acl all src 0.0.0.0/0.0.0.0
    acl manager proto cache_object
    acl localhost src 127.0.0.1/255.255.255.255
    acl SSL_ports port 443 563
    acl Safe_ports port 80      # http
    acl Safe_ports port 21      # ftp
    acl Safe_ports port 443 563 # https, snews
    acl Safe_ports port 70      # gopher
    acl Safe_ports port 210     # wais
    acl Safe_ports port 1025-65535  # unregistered ports
    acl Safe_ports port 280     # http-mgmt
    acl Safe_ports port 488     # gss-http
    acl Safe_ports port 591     # filemaker
    acl Safe_ports port 777     # multiling http
    acl CONNECT method CONNECT
    acl rede_interna src 192.168.0.0 <- insira esta linha.
    acl proibir_ip src 192.168.0.1 192.168.0.2 <- insira esta linha.


O último passo a ser especificado para este tipo de configuração é a restrição de acesso para os dois ips.

Ainda no arquivo procure pela entrada abaixo:

    # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
    #
    # And finally deny all other access to this proxy
    #http_access deny all    <- comente esta linha.
    http_access allow rede_interna <- insira esta linha.
    http_access deny proibir_ip  <- insira esta linha.


Pressione F2 para salvar e F10 para sair do arquivo.

OBS: Os valores utilizados para a rede e os ips das máquinas devem ser adaptados para a rede em que se esta implantando o serviço.

As configurações necessárias para que o servidor squid faça a restrição dos IPs já esta pronta.

Utilize os comandos abaixo para iniciar o serviço do squid.

    [root@localhost root]# service squid stop ; service squid start

16.2.5. Restrição para endereços www e ftp

Este exemplo refere-se a restrição de endereços específicos iniciados por www ou ftp.

Neste tipo de configuração pode ser criado um arquivo para que todos os endereço a serem restringidos possam ser arquivados.

Crie o arquivo através do comando:

        [root@localhost root]#touch /etc/squid/sites

Dentro deste arquivo insira os endereços que não deverão ser acessados:

Ex:

        [root@localhost root]#mcedit /etc/squid/sites
        www.conectiva.com.br
        www.uol.com.br
        www.playboy.com.br


Pressione F2 para salvar e F10 para sair

Edite o arquivo squid.conf com o comando:

        [root@localhost root]#mcedit /etc/squid/squid.conf

Na sequência do arquivo insira as acls

acl rede_interna src 192.168.0.0

acl proibir_sites dstdomain "/etc/sites" ao final das acls já criadas.

    #Recommended minimum configuration:
    acl all src 0.0.0.0/0.0.0.0
    acl manager proto cache_object
    acl localhost src 127.0.0.1/255.255.255.255
    acl SSL_ports port 443 563
    acl Safe_ports port 80      # http
    acl Safe_ports port 21      # ftp
    acl Safe_ports port 443 563 # https, snews
    acl Safe_ports port 70      # gopher
    acl Safe_ports port 210     # wais
    acl Safe_ports port 1025-65535  # unregistered ports
    acl Safe_ports port 280     # http-mgmt
    acl Safe_ports port 488     # gss-http
    acl Safe_ports port 591     # filemaker
    acl Safe_ports port 777     # multiling http
    acl CONNECT method CONNECT
    acl rede_interna src 192.168.0.0 <- insira esta linha.
    acl proibir_sites dstdomain "/etc/squid/sites" <- insira esta linha.


O último passo a ser especificado para este tipo de configuração é a restrição de acesso para os endereços cadastrados.

Ainda no arquivo procure pela entrada abaixo:

    # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
    #
    # And finally deny all other access to this proxy
    #http_access deny all    <- comente esta linha.
    http_access deny proibir_sites  <- insira esta linha.
    http_access allow rede_interna <- insira esta linha.


Pressione F2 para salvar e F10 para sair do arquivo.

As configurações necessárias para que o servidor squid faça a restrição dos endereços cadastrados no arquivo sites já esta pronto.

Utilize os comandos abaixo para iniciar o serviço do squid.

        [root@localhost root]# service squid stop ; service squid start
    

16.2.6. Restrição a palavras específicas

Este exemplo refere-se a restrição de acesso através da consulta de palavras que não devam ser pesquisadas.

Neste tipo de configuração pode ser criado um arquivo para que todas as palavras a serem restringidas possam ser arquivados.

Crie o arquivo através do comando:

        [root@localhost root]#touch /etc/squid/palavras

Dentro deste arquivo insira os endereços que não deverão ser acessados:

Ex:

        [root@localhost root]#mcedit /etc/squid/palavras
       mp3
       povo 
       cone
       


Pressione F2 para salvar e F10 para sair

OBS: Este exemplo difere do anterior por rejeitar qualquer palavra cadastrada no arquivo. Quando um endereço for digitado no navegador ele procurará a ocorrência da palavra em todo o endereço digitado:

Ex:

Se o endereço http://www.conectiva.com.br fosse solicitado o mesmo não apareceria, pois a palavra cone esta cadastrada dentro do arquivo palavras.

Edite o arquivo squid.conf com o comando:

        [root@localhost root]#mcedit /etc/squid/squid.conf

Na sequência do arquivo insira as acls

acl rede_interna src 192.168.0.0

acl proibir_palavras dstdomain "/etc/palavras" ao final das acls já criadas.

    #Recommended minimum configuration:
    acl all src 0.0.0.0/0.0.0.0
    acl manager proto cache_object
    acl localhost src 127.0.0.1/255.255.255.255
    acl SSL_ports port 443 563
    acl Safe_ports port 80      # http
    acl Safe_ports port 21      # ftp
    acl Safe_ports port 443 563 # https, snews
    acl Safe_ports port 70      # gopher
    acl Safe_ports port 210     # wais
    acl Safe_ports port 1025-65535  # unregistered ports
    acl Safe_ports port 280     # http-mgmt
    acl Safe_ports port 488     # gss-http
    acl Safe_ports port 591     # filemaker
    acl Safe_ports port 777     # multiling http
    acl CONNECT method CONNECT
    acl rede_interna src 192.168.0.0 <- insira esta linha.
    acl proibir_palavras url_regex -i "/etc/squid/palavras" <- insira esta linha.


O último passo a ser especificado para este tipo de configuração é a restrição de acesso para os endereços cadastrados.

Ainda no arquivo procure pela entrada abaixo:

    # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
    #
    # And finally deny all other access to this proxy
    #http_access deny all    <- comente esta linha.
    http_access deny proibir_palavras  <- insira esta linha.
    http_access allow rede_interna <- insira esta linha.


Pressione F2 para salvar e F10 para sair do arquivo.

As configurações necessárias para que o servidor squid faça a restrição dos endereços cadastrados no arquivo sites já esta pronto.

Utilize os comandos abaixo para iniciar o serviço do squid.

        [root@localhost root]# service squid stop ; service squid start

16.2.7. Restrição a horários.

Este exemplo refere-se a restrição de acesso através de horários programados.

Este tipo de configuração deve ser utilizada em casos onde o acesso a internet feito pelos usuários somente em horário de trabalho.

Edite o arquivo squid.conf com o comando:

        [root@localhost root]#mcedit /etc/squid/squid.conf

Na sequência do arquivo insira as acls: acl rede src 192.168.0.0

e

acl horario time MTWHF 09:00-18:00 ao final das acls já criadas.

    #Recommended minimum configuration:
    acl all src 0.0.0.0/0.0.0.0
    acl manager proto cache_object
    acl localhost src 127.0.0.1/255.255.255.255
    acl SSL_ports port 443 563
    acl Safe_ports port 80      # http
    acl Safe_ports port 21      # ftp
    acl Safe_ports port 443 563 # https, snews
    acl Safe_ports port 70      # gopher
    acl Safe_ports port 210     # wais
    acl Safe_ports port 1025-65535  # unregistered ports
    acl Safe_ports port 280     # http-mgmt
    acl Safe_ports port 488     # gss-http
    acl Safe_ports port 591     # filemaker
    acl Safe_ports port 777     # multiling http
    acl CONNECT method CONNECT
    acl rede_interna src 192.168.0.0 <- insira esta linha.
    acl horario time MTWHF 09:00-18:00 <- insira esta linha.


OBS: Este exemplo preve que todas as máquinas irão acessar o servidor squid de segunda a sexta somente das 09 às 18 horas.

Caso seja necessário liberar acesso para somente algumas máquinas além do horário especificado crie novas regras se baseando neste exemplo, alterando a rede para os ips específicos das máquinas e os horários de acesso. OBS: O nome das regras deverá ser diferente.

O último passo a ser especificado para este tipo de configuração é a restrição de acesso para o horário.

Ainda no arquivo procure pela entrada abaixo:

    # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
    #
    # And finally deny all other access to this proxy
    #http_access deny all    <- comente esta linha.
    http_access allow rede_interna horario  <- insira esta linha.
    http_access deny rede_interna <- insira esta linha.


Pressione F2 para salvar e F10 para sair do arquivo.

As configurações necessárias para que o servidor squid faça a restrição de acesso por horário já esta pronto.

Utilize os comandos abaixo para iniciar o serviço do squid.

     [root@localhost root]# service squid stop ; service squid start