Servidor Fedora 11 de maneira fácil e funcional

Neste artigo mostro como configurar um servidor Fedora oferecendo os principais serviços para sua rede: firewall, servidor DHCP, web cache (Squid), DNS cache (bind), controle de banda (cbq), servidor web (Apache), controle de acesso, limite de conexões simultâneas, acesso remoto (SSH), relatório de acesso (Sarg). Ao final você deverá ter um servidor confiável.

[ Hits: 96.964 ]

Por: Andrio Prestes Jasper em 11/10/2009


5. Web cache (Squid)



Squid é um servidor proxy e cache que permite reduzir a utilização do link. Podemos usar o Squid para várias funções: autenticação de usuários, restrições de acesso, auditoria, cache etc. Nesse abordaremos a instalação e configuração de forma fácil e funcional do Squid para WEB cache.

No Fedora sua instalação pode ser feita através do yum:

# yum install squid

O arquivo de configuração do Squid pode ser encontrado em /etc/squid/squid.conf. Para iniciar e parar o servidor Squid, use os comandos:

# service squid start
# service squid stop


Para criar os diretórios swap:

# squid -z

Mas antes disso, certifique-se de ter configurado o Squid e de ter criado os diretórios swap.

5.1. Configuração do WEB Cache

Edite o arquivo named.conf e deixe-o como abaixo (comentei ele para fácil entendimento):

# vim /etc/squid/squid.conf

# squid.conf
# Andrio P. Jasper
# mascaraapj@gmail.com
#-----------------------------------------------
# opções para suportar proxy transparente
# não esquecer de trocar a faixa de ip pela da sua rede
http_port 172.167.0.1:3128 transparent

#diz ao Squid que ele deve buscar os dados diretamente na origem
hierarchy_stoplist cgi-bin ?

#diz ao Squid para não armazenar em cache o conteúdo dos CGIs
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY

#memória usada pelo squid
cache_mem 128 MB

#esvazia o cache
cache_swap_low 75
cache_swap_high 78

#tamanho máximo para gravação no cache Squid
maximum_object_size 150 MB

#tamanho mínimo para gravação no cache Squid
minimum_object_size 0 KB

# Tamanho máximo dos objetos mantidos em memória.
maximum_object_size_in_memory 2048 KB

# política de substituição dos objetos quando se esgota o espaço destinado ao cache em disco.
# lru: mantem os objetos referenciados recentemente.
# heap GDSF: otimiza o "hit rate" por manter objetos pequenos e
# e populares no cache, guardando assim um numero maior de objetos.
# heap LFUDA: otimiza o "byte hit rate" por manter objetos populares
# no cache sem levar em conta o tamanho. Se for utilizado este, o
# maximum_object_size devera ser aumentado para otimizar o LFUDA.
cache_replacement_policy heap LFUDA

#define a política de substituição dos objetos em memória
#da mesma forma como o cache_replacement_policy
memory_replacement_policy heap GDSF

#determina onde e como será feito o cache e o tamanho
#a cada 1GB (1024), deve separar 15mb de memória
cache_dir aufs /var/spool/squid 10000 64 128

# Log de requisições.
cache_access_log /var/log/squid/access.log

# Log de objetos guardados. Pode ser desativado
cache_store_log none

# Log do cache.
cache_log /var/log/squid/cache.log

#Pode ser usada para especificar uma lista de servidores DNS no
#lugar no /etc/resolv.confdns_nameservers Endereço_IP
#não esquecer de trocar a faixa de dns pela da sua faixa
# caso tenha um servidor dns instalado na mesma máquina, deixe assim: dns_nameservers 127.0.0.1
dns_nameservers 127.0.0.1
dns_nameservers 201.10.120.3

#TAG's referentes ao processo de autenticação
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours

auth_param basic casesensitive off

## Aumentando o tempo do CACHE WINDOWS UPDATE
refresh_pattern -i w?xpsp[0-9]\.microsoft\.com/ 0 100% 20160 reload-into-ims
refresh_pattern -i w2ksp[0-9]\.microsoft\.com/ 0 100% 20160 reload-into-ims
refresh_pattern -i windowsupdate.com/.*\.(cab|exe|dll|msi) 0 100% 43200 reload-into-ims
refresh_pattern -i microsoft.com/.*\.(cab|exe|dll|msi) 10080 100% 43200 reload-into-ims
refresh_pattern -i download\.macromedia\.com/ 0 100% 20160 reload-into-ims

#configuram como serão tratados os tempos de vida dos objetos no cache
refresh_pattern ^ftp: 15 20% 2280
refresh_pattern ^gopher: 15 20% 2280
refresh_pattern (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320

#O cache pode ser configurado para continuar com o download de requisições abortadas
quick_abort_min -1 KB
quick_abort_max 0 KB
quick_abort_pct 100%

#Tempo de vida para resultados mal sucedidos de resolução DNS
negative_ttl 2 minutes

#Tempo de vida para resultados bem sucedidos de resolução DNS, não deixe inferior a 1 minuto
#Padrão de 6 horas
positive_dns_ttl 5 minutes

#Alguns clientes podem parar o envio de pacotes TCP enquanto deixam o recebimento em aberto
#Algumas vezes o Squid não consegue diferenciar conexões TCP totalmente fechadas e parcialmente fechadas
#Mudando essa opção para off fará com que o Squid imediatamente feche a conexão quando a leitura do socket
#retornar "sem mais dados para leitura"
half_closed_clients off
read_timeout 60 seconds
pconn_timeout 120 seconds

#Estas ACL's fazem parte da configuração padrão do Squid e é o mínimo
#recomendável para seu uso não sendo necessária nenhuma alteração nas mesmas
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
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
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

#não se esquecer de trocar a faixa de ip pela da sua rede
acl rede src 172.167.0.0/255.255.0.0

#Definição de regras de acesso referentes as ACL's da parte da configuração
#padrão do Squid, também não é necessária nenhuma alteração, portanto apenas
#acrescente as suas próprias regras a estas;
http_access allow localhost
http_access allow rede
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

#Ela diz ao Squid que se nenhuma das regras anteriores for
#aplicada o acesso será então negado
http_access deny all

# Usuário sob o qual ira rodar o Squid.
cache_effective_user squid
# Grupo sob o qual ira rodar o Squid.
cache_effective_group squid

#Mostra o nome do servidor configurado nas mensagens de erro
visible_hostname servidor.lgm.farolbr

#Desligando essa variável, faz com que o Squid descarregue a memória não
#utilizada, chamando uma função interna free() do Squid
memory_pools off

#Por padrão o Squid irá incluir o ip ou nome da sua máquina nas solicitações HTTP.
#Para o site visitado não interessa para ele qual seu ip interno, o importante é que você visitou o site.
forwarded_for off

#mensagens de erro em Português
error_directory /usr/share/squid/errors/Portuguese

#essa opção como off mostra no log o endereço completo.
strip_query_terms off
ie_refresh on

# Resolve um problema com conexões persistentes que ocorre com certos servidores,
detect_broken_pconn on

#o Squid irá trabalhar com 2 requisições paralelamente
pipeline_prefetch on

Edite o script do firewall rc.local (/etc/rc.d.rc.local) e adicione a regra de redirecionamento do tráfego para o Squid. Nosso script ficará da seguinte forma:

# Limpando Regras
iptables -F
iptables -X
iptables -Z
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -F -t nat
iptables -X -t nat
iptables -F -t mangle
iptables -X -t mangle
echo " Limpando Regras ..............................[ OK ]"

# Definindo Política Padrão
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
echo " Alterando política padrão.....................[ OK ]"

# Redireciona todo tráfego http(80) que não seja para a conectividade social, para o Squid (3128),
iptables -t nat -A PREROUTING -i eth1 -p TCP ! -d 200.201.0.0/16 --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i eth1 -p UDP ! -d 200.201.0.0/16 --dport 80 -j REDIRECT --to-port 3128

# Compartilha Conexão
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
echo "1" > /proc/sys/net/ipv4/ip_forward

5.2. Dicas SQUID

Para ver quem está acessando a web através do Squid em tempo real (IP da máquina, site acessado e status do acesso), digite no terminal:

# tail -f /var/log/squid/access.log | awk '{print$3 " - " $4 " - " $7 }'

Para limpar o cache, digite os passos abaixo no terminal:

# service squid stop
# cd /var/spool/squid
# rm -rf *
# squid -z
# service squid start


5.3. Links extras


Página anterior     Próxima página

Páginas do artigo
   1. Início
   2. 1 - Introdução
   3. 2. SELinux, IPTABLES (introdução, NAT)
   5. 4. DNS cache (Bind)
   6. 5. Web cache (Squid)
   7. 6. Acesso remoto (SSH)
   8. 7. Controle de acesso (MAC x IP)
   9. 8. Controle de banda (CBQ)
   10. 9. Outras regras
   11. 10. Limite de conexão (connlimit)
Outros artigos deste autor

Integração do Hotspot Mikrotik com AD Windows Server 2012

Instalando o Fedora 10

Entendendo redes wireless

PPoE Mikrotik - QoS Dinâmico e Individual

Leitura recomendada

Aumentando sua produtividade com o teclado padrão Dvorak

Nagios - Configuração no Ubuntu

Habilitar ou criar um serviço para as distribuições Ubuntu 16 ou superior

Manual de instalação e configuração do Zabbix no Fedora 8

Webacula - Instalação e Configuração no Ubuntu 10.04

  
Comentários
[1] Comentário enviado por dtux em 11/10/2009 - 17:23h

Muito bom artigo várias rotinas interessantes, que me ajudaram muito!!

[2] Comentário enviado por andriopj em 11/10/2009 - 23:19h

estou dando continuação nesse material... pretendo montar um Guia com varias rotinas de trabalho.
Se alguem estiver interessado em acompanhar ou ate mesmo em adicionar alguma rotina... sera bem vindo: (http://under-linux.org/f132192-servidor-fedora-de-maneira-facil-e-funcional-2)

[3] Comentário enviado por lele_1997 em 12/10/2009 - 19:16h

Muito bom artigo!!! Parabéns !!
Vc poderia ampliar o leque desse artigo, fazendo implementação do Mysql com os dados dos cliente e os scripts para pegar do banco as informações e registrar no sistema. No Iptables, CBQ e DHCP ..
Ai iria matar a pau!!!
Valeu pela ajuda

[4] Comentário enviado por nps em 12/10/2009 - 19:22h

Muito bom,excelente continue assim ajudando a todos nós.

[5] Comentário enviado por andriopj em 16/10/2009 - 21:23h

bom amigos, estou ampliando o assunto... e ate melhorando o mesmo. Lembrando que estou tentando descrever o metodo mais facil, nao sendo esses as unicas maneiras de se produzir o mesmo... mas enfim, espero que gostem.

[6] Comentário enviado por alotus em 03/11/2009 - 10:47h

Bom Artigo.

Eu estou tentando implementar um postfix num servidor com Banda larga GVT. Já fizeram o DNS Reverson na operadora, cadastrei o domínio no Registro BR com o serviço do SUPERDNS, e redirecionei para o IP Fixo do Modem da operadora no SUPERDNS. Pinga sem problema algum. Como faria para implementar o POSTFIX nele. Poderia dar alguma dica????


[7] Comentário enviado por deuz em 19/11/2009 - 12:23h

Muito bom, pelo menos até onde li, que foi somente o Bind. Meu caro, fiz conforme vc falou, e tudo funciona correto, navego, o serviço sobe normalmente sem erros, ocorre que com isso nao consigo enviar e nem receber e-mails, o que poderia estar faltando, eu apenas configurei o bind, nao uso dhcp (pelo que vi no artigo, tem uma ligação ambos).

se voce ou alguem puder me dar umas dicas, pretendo fazer isso na minha rede sem configurar o dhcp.

[8] Comentário enviado por andriopj em 04/04/2010 - 19:26h

@deuz
a ligacao entre o dhcp e o dns é somente para enviar as informacoes aos hosts clientes...

nessa maquina que vc nao esta conseguindo enviar nen receber emails, qual o dns que esta configurado ai?
tente colocar outro dns... apenas de eu achar que nao seria esse o erro.

[9] Comentário enviado por cdcanalli em 07/03/2012 - 16:25h

Estava pesquisando sobre firewall e cheguei ao seu artigo....
Parabéns...
Materia muito bem detalhado, bem comentado...
Me Ajudou Muito...
Meu servidor Debian tá ficando Ninja... :p

Obrigado...

Abraço...

[10] Comentário enviado por llbranco em 20/03/2012 - 13:11h

olá, tenho uma grande duvida em relação ao squid:

como faço para o squid tornar disponivel um objeto em cache caso o site da qual está o verdadeiro objeto esteja offline???


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts