Servidor Squid no Linux | INFORMÁTICAFTP

por

Servidor Squid no Linux

8 de abril de 2014 em Dicas Linux

Instalando o Servidor Squid no Linux

Instalando o Servidor Squid no Linux
Hoje irei mostrar como instalar o Servidor Squid para compartilhar na sua rede a Internet com melhor desempenho em acessos (Cache) e maior segurança (Proxy) no GNU/Linux.

Instalando o Squid

Debian/Ubuntu
root@cesar.augustus.nom.br’s
# apt-get install squid3

Após a instalação, altere o dono e grupo do arquivo “swap.state”, senão irá encontrar problemas mais para frente:

root@cesar.augustus.nom.br’s
# chown proxy:proxy /var/spool/squid3/swap.state
Fedora/CentOS
root@cesar.augustus.nom.br’s
# yum install squid

Após a instalação, coloque o Squid para iniciar durante o boot:

root@cesar.augustus.nom.br’s
# chkconfig squid on
Slackware

Baixe o pacote do Squid, suas dependências e instale:

root@cesar.augustus.nom.br’s
# installpkg gcc-4.2.4-i486-1.tgz
# installpkg gcc-g++-4.2.4-i486-1.tgz
# installpkg squid-3.0.stable18-i486-1sl.tgz

Após a instalação, coloque o Squid para iniciar durante o boot:

root@cesar.augustus.nom.br’s
# chmod +x /etc/rc.d/rc.squid
# ln -s /etc/rc.d/rc.squid /etc/rc.d/rc0.d/K05squid
# ln -s /etc/rc.d/rc.squid /etc/rc.d/rc1.d/K05squid
# ln -s /etc/rc.d/rc.squid /etc/rc.d/rc2.d/K05squid
# ln -s /etc/rc.d/rc.squid /etc/rc.d/rc6.d/K05squid
# ln -s /etc/rc.d/rc.squid /etc/rc.d/rc3.d/S95squid
# ln -s /etc/rc.d/rc.squid /etc/rc.d/rc4.d/S95squid
# ln -s /etc/rc.d/rc.squid /etc/rc.d/rc5.d/S95squid

Configurando o Squid

O arquivo de configuração do Squid se encontra no seguinte caminho:

  • Debian/Ubuntu: “/etc/squid3/squid.conf”
  • Fedora/CentOS: “/etc/squid/squid.conf”
  • Slackware: “/etc/squid/squid.conf”

Para começar com a configuração do zero, renomeie o arquivo de configuração padrão, crie um novo arquivo com o nome “squid.conf” e adicione as seguintes configurações:

http_port 3128
visible_hostname servidor
cache_mgr webmaster@localhost
  • http_port: determina a porta que será usada pelo servidor.
  • visible_hostname: defina o nome de exibição do servidor.
  • cache_mgr: defina o e-mail do administrador para receber mensagem em casos graves.

Para definir o idioma das páginas de mensagem de erros em português brasileiro, adicione a seguinte configuração:

Debian/Ubuntu
error_directory /usr/share/squid3/errors/Portuguese
Fedora/CentOS
error_directory /usr/share/squid/errors/pt-br
Slackware
error_directory /usr/share/squid/errors/Portuguese

Cache

cache é onde fica armazenado os objetos (arquivos e páginas) quando acessa as páginas ou baixar arquivos pela Internet. Ao invés de toda vez que um usuário for acessar um site e ter que esperar baixar a página toda e os arquivos direto da hospedagem, o servidor verifica se já existe no cachepodendo baixar direto do servidor, melhorando o desempenho na navegação.
Para configurar o cache no Squid, adicione as seguintes configurações:

hierarchy_stoplist cgi-bin ?
cache_mem 32 MB
maximum_object_size_in_memory 64 KB
maximum_object_size 100 MB
  • hierarchy_stoplist: defina palavras que se for encontradas naurl, a página irá ser carregada direto do cache.
  • cache_mem: defina a quantidade de memória que o servidor irá usar para o cache.
  • maximum_object_size_in_memory: defina o tamanho máximo do objeto que poderá ser armazenado na memória, senão será armazenado no disco rígido.
  • maximum_object_size: defina o tamanho máximo do objeto que poderá ser armazenado no disco rígido, senão será descartado o objeto.

Para especificar o diretório do cache, aonde será armazenado os objetos e atribuir 2GB de espaço de armazenamento no cache, adicione a seguinte configuração:

Debian/Ubuntu
cache_dir ufs /var/spool/squid3 2048 16 256
Fedora/CentOS
cache_dir ufs /var/spool/squid 2048 16 256
Slackware
cache_dir ufs /var/log/squid/cache 2048 16 256

Agora vamos definir o tempo de vida dos objetos no cache, para que sempre o Squid for verificá-los, saber se é necessário atualizá-los ou não.

refresh_pattern ^ftp: 360 20% 10080
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320
  • 1ª coluna: defina o tempo em minutos, em cada acesso, quando deve verificar se houve modificação no objeto.
  • 2ª coluna: defina a porcentagem mínima da modificação do objeto que deve ter para ser atualizado.
  • 3ª coluna: defina o tempo em minutos, quando deve efetuar uma atualização mesmo não ter sido modificado.

Para especificar o caminho do Log de acesso do Squid e o caminho do Logdo cache, adicione a seguinte configuração:

Debian/Ubuntu
access_log /var/log/squid3/access.log
cache_log /var/log/squid3/cache.log
Fedora/CentOS
access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
Slackware
access_log /var/log/squid/logs/access.log
cache_log /var/log/squid/logs/cache.log

Controle de Acesso

A ACL ou Lista de Controle de Acesso, é onde define aonde pode acessar ou não pela Internet. Uma coisa importante que deve saber é que o Squidinterpreta as ACL’s de cima para baixo, então deve ficar atento quando for criar as regras.
Crie duas acl com o tipo src (IP de origem) e adicione o IP do servidor e o IP da rede:

acl localhost src 127.0.0.1/32
acl localnet src 192.168.0.0/24

Crie uma acl com o tipo proto (protocolo) e adicione o protocolo “cache_object”:

acl manager proto cache_object

O protocolo “cache_object” é usado para obter informações sobre o estado do Squid.
É recomendável que permita apenas o servidor obter as informações doSquid, então adicione a seguinte regra:

http_access allow manager localhost
http_access deny manager

Crie uma acl do tipo method (método de requisição) e adicione o métodoPURGE:

acl purge method PURGE

O método de requisição PURGE serve para limpar/excluir objetos armazenados no cache.
Para permitir que apenas o servidor possa exclua objetos, adicione a seguinte regra:

http_access allow purge localhost
http_access deny purge

Crie uma acl do tipo port (porta) e adicione as portas que serão liberadas:

acl Safe_ports port 21 70 80 210 280 443 488 563 591 631 777 873 901 1025-65535

Se quiser deixar mais organizado, ou seja, adicionar uma porta de cada vez para poder comentar em cada linha a descrição do protocolo da porta que está sendo liberada, também pode deixando assim:

acl Safe_ports port 21 # ftp
acl Safe_ports port 70 # gopher
acl Safe_ports port 80 # http
acl Safe_ports port 210 # wais
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 443 # https
acl Safe_ports port 488 # gss-http
acl Safe_ports port 563 # nntps
acl Safe_ports port 591 # filemaker
acl Safe_ports port 631 # cups
acl Safe_ports port 777 # multiling http
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # swat
acl Safe_ports port 1025-65535 # unregistered ports

Para bloquear o acesso em portas que não foram liberadas, adicione a seguinte regra:

http_access deny !Safe_ports

Crie uma acl do tipo method (método de requisição) e adicione o métodoCONNECT, que permite fazer conexão direta:

acl connect method CONNECT

Crie uma acl do tipo port (porta) e adicione as portas dos protocolos comSSL que foram adicionadas na acl “Safe_ports” e devem ser liberadas para conexão direta:

acl SSL_ports port 443 # https
acl SSL_ports port 563 # nntps
acl SSL_ports port 873 # rsync

Para bloquear o acesso em portas que não foram liberadas para conexão direta, adicione a seguinte regra:

http_access deny connect !SSL_ports

Crie uma acl do tipo dstdomain (domínio de destino) e adicione um dóminio iniciando com o ponto:

acl domains dstdomain .twitter.com

Se no caso for vários domínios de destino, define o caminho do arquivo que será adicionado os domínios:

acl domains dstdomain "/etc/squid/domains"

Crie o arquivo que foi definido na acl e adicione os domínios de destino:

.twitter.com
.youtube.com
.vimeo.com

Para bloquear o acesso nos domínios de destino, adicione a seguinte regra:

http_access deny domains

Crie uma acl do tipo url_regex (expressão regular na url) e adicione uma expressão regular:

acl words url_regex jogo

acl do tipo url_regex percorre url em busca de expressões regulares. A aclé case-sensitive, se no caso estiver procurando a expressão “jogo” e tiver “Jogo”, serão consideradas diferentes.
Para adicionar várias expressões, define o caminho do arquivo que será adicionado as expressões. E use a opção “-i” para tornar a acl em case-insensitive:

acl words url_regex -i "/etc/squid/words"

Crie o arquivo que foi definido na acl e adicione as expressões regulares:

jogo
blog
msn

Para bloquear o acesso em urls com as expressões regulares, adicione a seguinte regra:

http_access deny words

Criar uma acl do tipo urlpath_regex (expressão regulares no caminho da url) e define o caminho do arquivo que será adicionado as expressões regulares:

acl extensions urlpath_regex -i "/etc/squid/extensions"

acl do tipo urlpath_regex é semelhante a url_regex, só que é ignorado o domínio e protocolo. Por exemplo, essa url“http://www.dominio.com.br/blog/invasao.html”, irá fazer a busca da expressão regular apenas nessa parte “/blog/invasao.html”:
Crie o arquivo que foi definido na acl e adicione as expressões regulares:

\.bat($|\?|\&)
\.exe($|\?|\&)
\.scr($|\?|\&)

Para bloquear o acesso em urls path com expressões regulares, adicione a seguinte regra:

http_access deny extensions

Sem mais acl para criar, adicione a seguinte regra para permitir que apenas as máquinas da rede e o servidor sejam liberados para acessar a Internet:

http_access allow localnet
http_access allow localhost
http_access deny all

Com as acl definidas, a sequência das regras deverão está na ordenação correta, independente esteja a acl junto com a regra. O que importa é que esteja criada a acl antes de definir a regra.
Aqui vai uma amostra de como deve está ordenado as regras:

http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny connect !SSL_ports
http_access deny domains
http_access deny words
http_access deny extensions
http_access allow localnet
http_access allow localhost
http_access deny all
Debian/Ubuntu

Após ter terminado as configurações, recarregue as configurações no Squid:

root@cesar.augustus.nom.br’s
# /etc/init.d/squid3 reload
Fedora/CentOS

Após ter terminado as configurações, inicie o servidor Squid:

root@cesar.augustus.nom.br’s
# service squid start
Slackware

Após ter terminado as configurações, inicie o servidor Squid:

root@cesar.augustus.nom.br’s

# /etc/rc.d/rc.squid start

 

Instalando o SARG no CentOS 6.0

O SARG  é um software que gera relatório dos acessos realizados através do SQUID, basicamente ele lê o arquivo access.log e gerar um pagina html amigavel.

== Pré-requisitos ==

Apenas o apache para que você possar acessar o relatório através do navegador.

== Instalação ==

Faça o download no código no fonte no site http://sarg.sourceforge.net/sarg.php

# tar -xvzf sarg-2.3.1.tar.gz
# cd sarg-2.3.1
# ./configure —sysconfdir=/etc/sarg
# make && make install

== Configuração ==

Edite o arquivo /etc/sarg/sarg.conf e altere a linha que configura o diretório do access.log
do squid

access_log /var/log/squid/access.log

== Usando ==

Para gerar o relatório basta executar o comando:

# sarg

Depois acesse http://servidor/squid-reports para analisar o relatório gerado.

Deixe uma resposta

%d blogueiros gostam disto:
Pular para a barra de ferramentas