Squid + Sarg + IPtables - Configuração rápida

Neste artigo, sintetizei o resultado da minha instalação do server Ubuntu rodando, entre outros serviços, o Squid com relatório de acesso e regras no IPtables. Tudo isso de forma rápida e fácil, para iniciantes. Coloquei dicas para dar uma tunada no kernel, para otimizar o resultado do servidor.

[ Hits: 49.565 ]

Por: Lucas Garcia Moreira em 13/06/2014


Configurando o Squid



Agora, o server está pronto para receber o serviço principal, o Squid.

Sintetizei os meus estudos em um arquivo muito fácil e intuitivo, espero que agradem a todos e fique de fácil entendimento.

Instale o Squid:

# apt-get install squid

Alterar o /etc/squid/squid.conf, pelo arquivo pronto abaixo:

################################################
#####          Porta, Nome e Cache         #####
################################################
#

http_port 3128 transparent
visible_hostname APA-Proxy
#
## Criar cache na memoria de 4 GB ##

cache_mem 4096 MB
maximum_object_size_in_memory 2 MB
maximum_object_size 4 MB
minimum_object_size 10 KB
cache_swap_low 80
cache_swap_high 95
refresh_pattern ^ftp: 15 20% 2280
refresh_pattern ^gopher: 15 0% 2280
refresh_pattern . 15 20% 2280
#
################################################
#####                 Log                  #####
################################################
#

cache_access_log /var/log/squid3/access.log
cache_store_log /var/log/squid3/store.log
cache_log /var/log/squid3/cache.log
## Criar um cache em disco de 5 GB ##
cache_dir aufs /var/spool/squid3 5120 16 256
#
################################################
#####                 ACLs                 #####
################################################
#

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 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 901 # swat
acl Safe_ports port 1025-65535 # portas altas
acl purge method PURGE
acl CONNECT method CONNECT
#Bloquear as portas não sitadas
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
#
################################################
#####          Direitos de Acessos         #####
################################################


http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
#
################################################
##            CONTROLE DE BANDA               ##
################################################
#
#acl livre src 192.168.0.0/255.255.255.0
#acl extensoes url_regex -i .exe$ .mp3$ .vqf$ .tar.gz$ .gz$ .rpm$ .zip$ .rar$ .avi$ .mpeg$ .mpe$ .mpg$ .ram$ .rm$ .iso$ .raw$ .wav$ .mov$

#delay_pools 2
#
# Classe 1 - Acesso a Internet a 512k
#
# delay_class 1 2
# delay_parameters 1 -1/-1 69000/69000
#
# Classe 2 - Download a 180k
#
# delay_class 2 2
# delay_parameters 2 -1/-1 22500/22500
#delay_access 1 allow livre
#delay_access 2 allow extensoes
#
################################################
####         Liberando IP'S                         ####
################################################
#

acl liberados src "/etc/squid/liberados.conf"
#
http_access allow liberados
#
################################################
####           BLOQUEAR PALAVRAS            ####
################################################
#

acl bloquear_palavras url_regex -i "/etc/squid3/bloqueios.conf"
#
http_access deny bloquear_palavras
#
################################################
#####              Rede Local               ####
################################################

acl redelocal src 10.0.0.0/255.0.0.0
#
################################################
####           Liberando as Redes           ####
################################################

http_access allow localhost
http_access allow redelocal
#
################################################
####        Bloqueando todo o Resto         ####
################################################

http_access deny all
http_access deny bloquear_palavras
#######################################################
####            Diretorio de erro com imagem personalizada   ####
################################################

error_directory /usr/share/squid3/errors/portuguese

#######################################################

O arquivo acima, traz as configuração mais fáceis e mais utilizadas do Squid, deve-se trocar os IPs pelos seus próprios, e não esquecer de mudar o nome de host logo abaixo da porta.

Caso queira personalizar mais, pode alterar a seu gosto os caches, pois, nem todas as máquinas tem este hardware disponível, fica a seu critério.

Você deverá criar 2 arquivos de texto:
  • liberados.conf
  • bloqueios.conf

# nano "/etc/squid/liberados.conf"    # Neste coloque nos IPs que ficam fora do bloqueio, pois na minha empresa tenho as máquinas da gerência aonde excluo elas do bloqueio.

# nano "/etc/squid/bloqueios.conf"    # Neste deve-se colocar as palavras que deseja bloquear quando aparecerem na URL.

Outra linha relevante, é a ERROR_DIRECTORY, explicaremos ela, logo mais na página do Sarg.

Página anterior     Próxima página

Páginas do artigo
   1. Iniciando / Roteamento / Kernel
   2. Configurando o Squid
   3. Apache 2 / Sarg com página de bloqueio personalizada
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Squid 3 como proxy transparente + firewall Iptables

Configurar servidor proxy Squid (Ubuntu)

Squid 3.1.5 com suporte a TPROXY (sem bridge)

Manual traduzido do Squid

Squid no FreeBSD

  
Comentários
[1] Comentário enviado por andrew_ em 13/06/2014 - 11:38h

Bom dia Amigo excelente tutorial, eu segui os passos deu tudo certo mais... mais quando redireciono o trafego para a porta 3128 não consigo navegar, volta um erro de proxy com se o squid não estivesse funcionando corretamente eu coloquei o proxy diretamente nas configurações do navegador e mesmo assim tenho o erro.

Unable to connect

Firefox can't establish a connection to the server at maravalharossa.com.

The site could be temporarily unavailable or too busy. Try again in a few moments.
If you are unable to load any pages, check your computer's network connection.
If your computer or network is protected by a firewall or proxy, make sure that Firefox is permitted to access the Web.

[2] Comentário enviado por lucasmoreira em 13/06/2014 - 18:07h


[1] Comentário enviado por andrew_ em 13/06/2014 - 11:38h:

Bom dia Amigo excelente tutorial, eu segui os passos deu tudo certo mais... mais quando redireciono o trafego para a porta 3128 não consigo navegar, volta um erro de proxy com se o squid não estivesse funcionando corretamente eu coloquei o proxy diretamente nas configurações do navegador e mesmo assim tenho o erro.

Unable to connect

Firefox can't establish a connection to the server at maravalharossa.com.

The site could be temporarily unavailable or too busy. Try again in a few moments.
If you are unable to load any pages, check your computer's network connection.
If your computer or network is protected by a firewall or proxy, make sure that Firefox is permitted to access the Web.



Ola amigo o roteamento esta ativado?? dentro do ip_forward


[3] Comentário enviado por thyagobrasileiro em 13/06/2014 - 20:42h

não entendi a parte que você instala o Bind9 e apenas configura o resolv.conf...

[4] Comentário enviado por xjc em 13/06/2014 - 21:35h

gostei dos macetes . abraços

[5] Comentário enviado por px em 13/06/2014 - 22:55h

Tem muitos outros "melhoramentos" para se fazer no sysctl, aqui eu uso Arch como maquina de testes e como máquina do dia a dia, e tenho algumas opções interesantes pra compartilhar, ai meu sysctl.conf:




# Configuration file for runtime kernel parameters.
# See sysctl.conf(5) for more information.

# Have the CD-ROM close when you use it, and open when you are done.
dev.cdrom.autoclose = 1
dev.cdrom.autoeject = 1

#-- Opções de rede

# Tcp_max_syn_backlog (é o comprimento da fila de SYN)
net.ipv4.tcp_max_syn_backlog = 2048

# Protection from the SYN flood attack (1 ativa os syncookies 0 desativa)
net.ipv4.tcp_syncookies = 1

# Tentativas de pacotes SYN
net.ipv4.tcp_syn_retries = 2

# Tentativas de pacotes SYN/ACK
net.ipv4.tcp_synack_retries = 2

# Tempo para o tcp_fin_timeout (encerar conexões)
net.ipv4.tcp_fin_timeout = 15

# Padrão é "net.ipv4.tcp_keepalive_time = 7200" (tempo antes de mandar um pacote de "você esta vivo?", ou seja, antes de tentar "fechar" a conexão)
net.ipv4.tcp_keepalive_time = 1800

# Padrão é "net.ipv4.tcp_keepalive_probe = 9" (número de pacotes ACK enviados para a outra ponta da rede para tentar manter a conexão)
net.ipv4.tcp_keepalive_probes = 3

# Padrão é "net.ipv4.tcp_keepalive_intvl = 75" (tempo antes de fechar conexões inativas [em segundos])
net.ipv4.tcp_keepalive_intvl = 15

# Increase the tcp-time-wait buckets pool size (Número de sockets)
net.ipv4.tcp_max_tw_buckets = 180000

# See evil packets in your logs (ver pacotes mal formados nos logs do iptables)
net.ipv4.conf.all.log_martians = 0

# Redirecionamentos ##squid // Para aceitar coloque 1 e para negar 0
net.ipv4.conf.all.accept_redirects = 0

# IP source routing ##squid // Para aceitar coloque 1 e para negar 0
net.ipv4.conf.all.accept_source_route = 1
net.ipv4.conf.lo.accept_source_route = 1
net.ipv4.conf.enp1s10.accept_source_route = 1
net.ipv4.conf.default.accept_source_route = 1

# If active, ignores ICMP with broadcast destination (Não responde a pings destinados a broadcast)
net.ipv4.icmp_echo_ignore_broadcasts = 1

# If active, ignores all ICMP requests (Não responde a pings, se ativo)
net.ipv4.icmp_echo_ignore_all = 1

# If active, accepts ICMP redirect orders (Não aceita redirecionamento de ICMP, se ativo)
net.ipv4.conf.all.accept_redirects = 1

# Packet forwarding (Abilita ou desabilita o FOWRWARDING[redirecionamento] por padrão)
net.ipv4.ip_forward = 1

# Enable source validation by reversed path, as specified in RFC1812 (habilita a verificação de rota reversa, para evitar ataques com spoof de ips)
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.lo.rp_filter = 1
net.ipv4.conf.enp1s10.rp_filter = 1

# Tweak the port range used for outgoing connections. (basicamente limita uma range de "portas altas" para aceitar e mantar conexões, tando entrada como saída)
net.ipv4.ip_local_port_range = 50000 60000


#-- SYSTEM

# Tweak those values to alter disk syncing and swap behavior.
vm.vfs_cache_pressure = 50
vm.swappiness = 1
#vm.laptop_mode = 0

# Tweak how the flow of kernel messages is throttled.
#kernel.printk_ratelimit_burst = 10
#kernel.printk_ratelimit = 5

# Reboot 600 seconds after kernel panic or oops.
#kernel.panic_on_oops = 1
#kernel.panic = 600


[6] Comentário enviado por wagnerfs em 15/06/2014 - 09:14h

Muito bom o artigo. Parabéns!!

[7] Comentário enviado por lucasmoreira em 16/06/2014 - 11:15h


[5] Comentário enviado por px em 13/06/2014 - 22:55h:

Tem muitos outros "melhoramentos" para se fazer no sysctl, aqui eu uso Arch como maquina de testes e como máquina do dia a dia, e tenho algumas opções interesantes pra compartilhar, ai meu sysctl.conf:




# Configuration file for runtime kernel parameters.
# See sysctl.conf(5) for more information.

# Have the CD-ROM close when you use it, and open when you are done.
dev.cdrom.autoclose = 1
dev.cdrom.autoeject = 1

#-- Opções de rede

# Tcp_max_syn_backlog (é o comprimento da fila de SYN)
net.ipv4.tcp_max_syn_backlog = 2048

# Protection from the SYN flood attack (1 ativa os syncookies 0 desativa)
net.ipv4.tcp_syncookies = 1

# Tentativas de pacotes SYN
net.ipv4.tcp_syn_retries = 2

# Tentativas de pacotes SYN/ACK
net.ipv4.tcp_synack_retries = 2

# Tempo para o tcp_fin_timeout (encerar conexões)
net.ipv4.tcp_fin_timeout = 15

# Padrão é "net.ipv4.tcp_keepalive_time = 7200" (tempo antes de mandar um pacote de "você esta vivo?", ou seja, antes de tentar "fechar" a conexão)
net.ipv4.tcp_keepalive_time = 1800

# Padrão é "net.ipv4.tcp_keepalive_probe = 9" (número de pacotes ACK enviados para a outra ponta da rede para tentar manter a conexão)
net.ipv4.tcp_keepalive_probes = 3

# Padrão é "net.ipv4.tcp_keepalive_intvl = 75" (tempo antes de fechar conexões inativas [em segundos])
net.ipv4.tcp_keepalive_intvl = 15

# Increase the tcp-time-wait buckets pool size (Número de sockets)
net.ipv4.tcp_max_tw_buckets = 180000

# See evil packets in your logs (ver pacotes mal formados nos logs do iptables)
net.ipv4.conf.all.log_martians = 0

# Redirecionamentos ##squid // Para aceitar coloque 1 e para negar 0
net.ipv4.conf.all.accept_redirects = 0

# IP source routing ##squid // Para aceitar coloque 1 e para negar 0
net.ipv4.conf.all.accept_source_route = 1
net.ipv4.conf.lo.accept_source_route = 1
net.ipv4.conf.enp1s10.accept_source_route = 1
net.ipv4.conf.default.accept_source_route = 1

# If active, ignores ICMP with broadcast destination (Não responde a pings destinados a broadcast)
net.ipv4.icmp_echo_ignore_broadcasts = 1

# If active, ignores all ICMP requests (Não responde a pings, se ativo)
net.ipv4.icmp_echo_ignore_all = 1

# If active, accepts ICMP redirect orders (Não aceita redirecionamento de ICMP, se ativo)
net.ipv4.conf.all.accept_redirects = 1

# Packet forwarding (Abilita ou desabilita o FOWRWARDING[redirecionamento] por padrão)
net.ipv4.ip_forward = 1

# Enable source validation by reversed path, as specified in RFC1812 (habilita a verificação de rota reversa, para evitar ataques com spoof de ips)
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.lo.rp_filter = 1
net.ipv4.conf.enp1s10.rp_filter = 1

# Tweak the port range used for outgoing connections. (basicamente limita uma range de "portas altas" para aceitar e mantar conexões, tando entrada como saída)
net.ipv4.ip_local_port_range = 50000 60000


#-- SYSTEM

# Tweak those values to alter disk syncing and swap behavior.
vm.vfs_cache_pressure = 50
vm.swappiness = 1
#vm.laptop_mode = 0

# Tweak how the flow of kernel messages is throttled.
#kernel.printk_ratelimit_burst = 10
#kernel.printk_ratelimit = 5

# Reboot 600 seconds after kernel panic or oops.
#kernel.panic_on_oops = 1
#kernel.panic = 600



Muito obrigado, sempre é bom receber melhoramentos, isso que buscamos nesta comunidade... abraços...

[8] Comentário enviado por lucasmoreira em 16/06/2014 - 11:17h


[3] Comentário enviado por thyagobrasileiro em 13/06/2014 - 20:42h:

não entendi a parte que você instala o Bind9 e apenas configura o resolv.conf...


Pois o Bind9 dispensa configuração de .conf para funcionar, ele ja vem pronto, somente colocar no resolv.conf o IP para ele entender que ele mesmo é seu DNS, pois este arquivo manda na resolução de nome, se voce colocar nada ali dentro, nao adianta ele ser um server de DNS, nao vai funcionar.


[9] Comentário enviado por Roselio_Jantara em 19/06/2014 - 14:19h

Exelente "tápa" que você deu nas configuraçoes do Squid+Sarg+IPtables.Ficou muito bom! Parabéns!

[10] Comentário enviado por thyagobrasileiro em 21/06/2014 - 23:39h


[7] Comentário enviado por lucasmoreira em 16/06/2014 - 11:15h:


[5] Comentário enviado por px em 13/06/2014 - 22:55h:

Tem muitos outros "melhoramentos" para se fazer no sysctl, aqui eu uso Arch como maquina de testes e como máquina do dia a dia, e tenho algumas opções interesantes pra compartilhar, ai meu sysctl.conf:




# Configuration file for runtime kernel parameters.
# See sysctl.conf(5) for more information.

# Have the CD-ROM close when you use it, and open when you are done.
dev.cdrom.autoclose = 1
dev.cdrom.autoeject = 1

#-- Opções de rede

# Tcp_max_syn_backlog (é o comprimento da fila de SYN)
net.ipv4.tcp_max_syn_backlog = 2048

# Protection from the SYN flood attack (1 ativa os syncookies 0 desativa)
net.ipv4.tcp_syncookies = 1

# Tentativas de pacotes SYN
net.ipv4.tcp_syn_retries = 2

# Tentativas de pacotes SYN/ACK
net.ipv4.tcp_synack_retries = 2

# Tempo para o tcp_fin_timeout (encerar conexões)
net.ipv4.tcp_fin_timeout = 15

# Padrão é "net.ipv4.tcp_keepalive_time = 7200" (tempo antes de mandar um pacote de "você esta vivo?", ou seja, antes de tentar "fechar" a conexão)
net.ipv4.tcp_keepalive_time = 1800

# Padrão é "net.ipv4.tcp_keepalive_probe = 9" (número de pacotes ACK enviados para a outra ponta da rede para tentar manter a conexão)
net.ipv4.tcp_keepalive_probes = 3

# Padrão é "net.ipv4.tcp_keepalive_intvl = 75" (tempo antes de fechar conexões inativas [em segundos])
net.ipv4.tcp_keepalive_intvl = 15

# Increase the tcp-time-wait buckets pool size (Número de sockets)
net.ipv4.tcp_max_tw_buckets = 180000

# See evil packets in your logs (ver pacotes mal formados nos logs do iptables)
net.ipv4.conf.all.log_martians = 0

# Redirecionamentos ##squid // Para aceitar coloque 1 e para negar 0
net.ipv4.conf.all.accept_redirects = 0

# IP source routing ##squid // Para aceitar coloque 1 e para negar 0
net.ipv4.conf.all.accept_source_route = 1
net.ipv4.conf.lo.accept_source_route = 1
net.ipv4.conf.enp1s10.accept_source_route = 1
net.ipv4.conf.default.accept_source_route = 1

# If active, ignores ICMP with broadcast destination (Não responde a pings destinados a broadcast)
net.ipv4.icmp_echo_ignore_broadcasts = 1

# If active, ignores all ICMP requests (Não responde a pings, se ativo)
net.ipv4.icmp_echo_ignore_all = 1

# If active, accepts ICMP redirect orders (Não aceita redirecionamento de ICMP, se ativo)
net.ipv4.conf.all.accept_redirects = 1

# Packet forwarding (Abilita ou desabilita o FOWRWARDING[redirecionamento] por padrão)
net.ipv4.ip_forward = 1

# Enable source validation by reversed path, as specified in RFC1812 (habilita a verificação de rota reversa, para evitar ataques com spoof de ips)
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.lo.rp_filter = 1
net.ipv4.conf.enp1s10.rp_filter = 1

# Tweak the port range used for outgoing connections. (basicamente limita uma range de "portas altas" para aceitar e mantar conexões, tando entrada como saída)
net.ipv4.ip_local_port_range = 50000 60000


#-- SYSTEM

# Tweak those values to alter disk syncing and swap behavior.
vm.vfs_cache_pressure = 50
vm.swappiness = 1
#vm.laptop_mode = 0

# Tweak how the flow of kernel messages is throttled.
#kernel.printk_ratelimit_burst = 10
#kernel.printk_ratelimit = 5

# Reboot 600 seconds after kernel panic or oops.
#kernel.panic_on_oops = 1
#kernel.panic = 600



Muito obrigado, sempre é bom receber melhoramentos, isso que buscamos nesta comunidade... abraços...


Entendi, Vlw

[11] Comentário enviado por moshe_ em 02/04/2015 - 08:52h

Bom dia, sou meio novo nessa area de Linux, e estou estudando sobre squid para implantar em minha empresa a pedido do chefe.
gostei muito do artigo, mas ainda tenho uma duvida, como fazemos a autenticação de usuários nesse processo?

desde já agradeço a ajuda!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts