Squid bloqueando sites sem regras de bloqueio

1. Squid bloqueando sites sem regras de bloqueio

TULIO CRUVINEL GOMES
tuliocgomes

(usa Ubuntu)

Enviado em 19/02/2018 - 15:25h

Olá pessoas,

Estou com um problema, tenho um squid transparente configurado e ele funcionam belezinha, as regras de cache estão ok e até ontem nenhum problema. Hoje constatei que existem sites sendo bloqueados mesmo nao existindo alguma regra de bloqueio. Como exemplo, são: http://www.olx.com.br/ e http://www.americanas.com.br/hotsite/prime?chave=prf_0_hr_0_0_prime .

O que me intriga é receber o Access Denied do squid mesmo nao existindo alguma regra de bloqueio, vocês podem me ajudar?

Segue abaixo a config do meu squid:

acl all src
acl rede.teste src 175.16.0.0/21
acl SSL_ports port 22 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # 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 Safe_ports port 631 # CUPS
acl CONNECT method CONNECT

#RESTRICAO DOWNLOAD
#reply_body_max_size 10 MB
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localhost
http_access allow rede.teste
http_access deny all
http_port 3128 intercept
coredump_dir /var/spool/squid

#memoria cache
cache_mem 512 MB

#usar maximo de memoria possivel
memory_pools on
memory_pools_limit 512 MB

#Tamanho maximo dos arquivos alocados na memoria
maximum_object_size_in_memory 1024 KB

#porcentagem atualizacao cache
cache_swap_low 85
cache_swap_high 90

#Diretorio Cache
cache_dir ufs /mnt/sdb5/CASH 40960 15 256

#porcentagem atualizacao cache
cache_swap_low 85
cache_swap_high 90

#Diretorio Cache
cache_dir ufs /mnt/sdb5/CASH 40960 15 256

#Maximo e minimo armazenados em disco
maximum_object_size 100 MB
minimum_object_size 0 KB
cache_replacement_policy heap LFUDA
memory_replacement_policy heap GDSF

refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern (Release|Packages(.gz)*)$ 0 20% 2880
refresh_pattern . 0 20% 4320

#Hostname
visible_hostname proxy.FTCSRV01


Obrigado e fico no aguardo!


  


2. Re: Squid bloqueando sites sem regras de bloqueio

Buckminster
Buckminster

(usa Debian)

Enviado em 19/02/2018 - 19:07h

Poste aqui a mensagem da linha do log do Squid referente ao site do teu exemplo que está bloqueando, do site da OLX por exemplo.

Mas, provavelmente, não tenho certeza, deve ser alguma coisa relacionada às linhas abaixo:

#usar maximo de memoria possivel
memory_pools on
memory_pools_limit 512 MB

ou

cache_replacement_policy heap LFUDA
memory_replacement_policy heap GDSF

Preciso ver o log para ter certeza.

Essa linha abaixo pode comentar ou excluir:

acl all src

A ACL all já vem por padrão no Squid.


3. Re: Squid bloqueando sites sem regras de bloqueio

Perfil removido
removido

(usa Nenhuma)

Enviado em 19/02/2018 - 19:57h


firewall ou squid


4. Re: Squid bloqueando sites sem regras de bloqueio

Leandro Silva
LSSilva

(usa Outra)

Enviado em 19/02/2018 - 20:19h

Poste seu script de firewall pra analisarmos.


5. Re: Squid bloqueando sites sem regras de bloqueio

TULIO CRUVINEL GOMES
tuliocgomes

(usa Ubuntu)

Enviado em 19/02/2018 - 22:26h

Buckminster escreveu:

Poste aqui a mensagem da linha do log do Squid referente ao site do teu exemplo que está bloqueando, do site da OLX por exemplo.

Mas, provavelmente, não tenho certeza, deve ser alguma coisa relacionada às linhas abaixo:


A mensagem log é a seguinte:

1519089223.382 19 175.16.0.28 TCP_MISS/403 657 GET http://www.olx.com.br/ - ORIGINAL_DST/23.38.144.58 text/html
1519089223.429 17 175.16.0.28 TCP_MISS/403 672 GET http://www.olx.com.br/favicon.ico - ORIGINAL_DST/23.38.144.58 text/html

Sei que o 403 é de negado.


#usar maximo de memoria possivel
memory_pools on
memory_pools_limit 512 MB

ou

cache_replacement_policy heap LFUDA
memory_replacement_policy heap GDSF

Preciso ver o log para ter certeza.


Por via das duvidas, comentei essas 4 linhas, parei o Squid, limpei o cache, rodei o squid -z e iniciei o serviço, nao foi solucionado.

Essa linha abaixo pode comentar ou excluir:

acl all src

A ACL all já vem por padrão no Squid.


Já removi a linha, não sabia que vinha por padrao, obrigado



6. Re: Squid bloqueando sites sem regras de bloqueio

TULIO CRUVINEL GOMES
tuliocgomes

(usa Ubuntu)

Enviado em 19/02/2018 - 22:29h

LSSilva escreveu:

Poste seu script de firewall pra analisarmos.


Conforme pedido, segue o meu Iptables:


#-------------------------------------------------
# || LIMPANDO AS TABELAS ||
#-------------------------------------------------
iptables -F
iptables -t nat -F

#-------------------------------------------------
# || INICIALIZANDO COMPARTILHAMENTO DE INTERNET ||
#-------------------------------------------------

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -A FORWARD -s 175.16.0.0/21 -p tcp --dport 443 -j ACCEPT

iptables -t nat -A PREROUTING -s 175.16.0.0/21 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -s 175.16.0.0/21 -p udp --dport 80 -j REDIRECT --to-port 3128

iptables -t nat -A POSTROUTING -o enp6s0f0 -j MASQUERADE

exit 0




7. Re: Squid bloqueando sites sem regras de bloqueio

Buckminster
Buckminster

(usa Debian)

Enviado em 19/02/2018 - 22:51h

TCP_MISS quer dizer que o objeto requisitado não estava no cache, por isso foi negado (código 403).

Aumente o cache_mem, reinicie o Squid e teste.

As linhas abaixo estão repetidas:

#porcentagem atualizacao cache
cache_swap_low 85
cache_swap_high 90

Caso não resolver acrescente a seguinte linha no firewall e teste:

iptables -A FORWARD -s 175.16.0.0/21 -p tcp --dport 443 -j ACCEPT
iptables -A FORWARD -s 175.16.0.0/21 -p tcp --dport 80 -j ACCEPT <<< acrescente nesta posição.


8. Re: Squid bloqueando sites sem regras de bloqueio

TULIO CRUVINEL GOMES
tuliocgomes

(usa Ubuntu)

Enviado em 20/02/2018 - 16:02h

Buckminster escreveu:

TCP_MISS quer dizer que o objeto requisitado não estava no cache, por isso foi negado (código 403).

Aumente o cache_mem, reinicie o Squid e teste.

Aumentei, porem nao funcionou.


As linhas abaixo estão repetidas:
#porcentagem atualizacao cache
cache_swap_low 85
cache_swap_high 90

Erro meu ao postar aqui no forum, no original nao ocorre a repitição dessas linhas


Caso não resolver acrescente a seguinte linha no firewall e teste:

iptables -A FORWARD -s 175.16.0.0/21 -p tcp --dport 443 -j ACCEPT
iptables -A FORWARD -s 175.16.0.0/21 -p tcp --dport 80 -j ACCEPT <<< acrescente nesta posição.


Mesmo aplicando esta regra, sem sucesso, TCP_MISS/403 ainda persiste.

Interessante que observando o log do cache, me ocorre o seguinte:


root@FTCSRV01:/mnt/sdb5# tail -f /var/log/squid/cache.log
2018/02/20 15:36:59 kid1| ERROR: No forward-proxy ports configured.
2018/02/20 15:36:59 kid1| ERROR: No forward-proxy ports configured.
2018/02/20 15:37:00 kid1| ERROR: No forward-proxy ports configured.


Não sei se pode ser parte do problema, mas procurei algumas soluções aqui no forum mesmo, foi recomendado colocar um http_port 80 no squid, então o log do cache se tornam erros do ipv6:

2018/02/20 15:59:12| Error sending to ICMPv6 packet to [2800:3f0:4001:805::2013]. ERR: (101) Network is unreachable
2018/02/20 15:59:16| Error sending to ICMPv6 packet to [2800:3f0:4001:809::2003]. ERR: (101) Network is unreachable








9. Re: Squid bloqueando sites sem regras de bloqueio

Leandro Silva
LSSilva

(usa Outra)

Enviado em 20/02/2018 - 22:58h

Com relação ao firewall, como não alterou política nem nada, deixaria desta forma abaixo:
Não utilize para redes locais endereços que são "roteáveis".

Endereços válidos para rede local:
1 - 10.0.0.0 – 10.255.255.255
2 - 172.16.0.0 – 172.31.255.255
3 - 192.168.0.0 – 192.168.255.255
4 - 169.254.0.0 – 169.254.255.255



#-------------------------------------------------
# || LIMPANDO AS TABELAS ||
#-------------------------------------------------
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X

#-------------------------------------------------
# || INICIALIZANDO COMPARTILHAMENTO DE INTERNET ||
#-------------------------------------------------

#Variáveis
#Utilizando range de rede local válida (precisará adequar sua rede).
localnetwork="192.168.2.0/24"
#Troque pela interface de rede local correta
localnetworkiface="enp5s0f0"
#Interface de Internet
internetiface="enp6s0f0"

#Não fazemos prerouting da rede local para proxy transparente sem especificar interface e utilizando ip roteável.
#Regra de proxy transparente feita de maneira um pouco mais clara.
iptables -t nat -A PREROUTING -i $localnetworkiface -s $localnetwork -p tcp --dport 80 -j REDIRECT --to-port 3128

#Compartilha conexão
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s $localnetwork -o $internetiface -j MASQUERADE

exit 0



Com relação ao squid:

Para calcular tamanho de memória: https://wiki.squid-cache.org/SquidFaq/SquidMemory.
Diz que é de 10-20MB por GB de espaço em disco utilizado no cache_dir. Então teria que estar usando (se não me engano 4GB no mínimo para gerenciar).
Fiz algumas outras modificações, é válido testar. Novamente te aconselho a alterar a range da sua rede local (modifiquei isso aqui também).
Te aconselho dar uma olhada nas permissões do "/mnt/sdb5/CASH" também. Segue tutorial para alterações: http://www.hardware.com.br/livros/servidores-linux/mais-detalhes-sobre-configuracao-dos-caches.html. Até porque não sei das configurações do seu server (quantidade de memória), então aumentei para 1024 no arquivo de configuração pra começar a condizer (ainda não é o ideal, como explicado).


#Proxy port - Mode
http_port 3128 intercept

#Hostname
visible_hostname proxy.FTCSRV01

acl rede src 192.168.2.0/24
acl SSL_ports port 443 # https
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 22 # ftp
acl Safe_ports port 443 # 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 Safe_ports port 631 # CUPS
acl CONNECT method CONNECT

#RESTRICAO DOWNLOAD
#reply_body_max_size 10 MB
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localhost
http_access allow rede
http_access deny all
coredump_dir /var/spool/squid

#memoria cache
cache_mem 1024 MB

#usar maximo de memoria possivel
memory_pools off
#memory_pools_limit 512 MB

#Tamanho maximo dos arquivos alocados na memoria
maximum_object_size_in_memory 1024 KB

#porcentagem atualizacao cache
cache_swap_low 85
cache_swap_high 90

#Diretorio Cache
cache_dir ufs /mnt/sdb5/CASH 40960 15 256

#Maximo e minimo armazenados em disco
maximum_object_size 100 MB
minimum_object_size 0 KB
cache_replacement_policy heap LFUDA
memory_replacement_policy heap GDSF

refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern (Release|Packages(.gz)*)$ 0 20% 2880
refresh_pattern . 0 20% 4320



Te aconselho fazer as modificações, tanto no firewall, quanto no proxy e reportar resultados de testes.

Att.,


10. Re: Squid bloqueando sites sem regras de bloqueio

TULIO CRUVINEL GOMES
tuliocgomes

(usa Ubuntu)

Enviado em 16/03/2018 - 16:47h

Primeiramente, mil perdoes pela demora, era tanto trabalho acomulado que acabei testando, funcionou e nao vim aqui dar um feedback. Obrigado a todos!

LSSilva escreveu:

Com relação ao firewall, como não alterou política nem nada, deixaria desta forma abaixo:
Não utilize para redes locais endereços que são "roteáveis".

Endereços válidos para rede local:
1 - 10.0.0.0 – 10.255.255.255
2 - 172.16.0.0 – 172.31.255.255
3 - 192.168.0.0 – 192.168.255.255
4 - 169.254.0.0 – 169.254.255.255

Como Pedido, passei para um endereço válido (172)




#-------------------------------------------------
# || LIMPANDO AS TABELAS ||
#-------------------------------------------------
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X

#-------------------------------------------------
# || INICIALIZANDO COMPARTILHAMENTO DE INTERNET ||
#-------------------------------------------------

#Variáveis
#Utilizando range de rede local válida (precisará adequar sua rede).
localnetwork="192.168.2.0/24"
#Troque pela interface de rede local correta
localnetworkiface="enp5s0f0"
#Interface de Internet
internetiface="enp6s0f0"

#Não fazemos prerouting da rede local para proxy transparente sem especificar interface e utilizando ip roteável.
#Regra de proxy transparente feita de maneira um pouco mais clara.
iptables -t nat -A PREROUTING -i $localnetworkiface -s $localnetwork -p tcp --dport 80 -j REDIRECT --to-port 3128

#Compartilha conexão
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s $localnetwork -o $internetiface -j MASQUERADE

exit 0



Com relação ao squid:

Para calcular tamanho de memória: https://wiki.squid-cache.org/SquidFaq/SquidMemory.
Diz que é de 10-20MB por GB de espaço em disco utilizado no cache_dir. Então teria que estar usando (se não me engano 4GB no mínimo para gerenciar).
Fiz algumas outras modificações, é válido testar. Novamente te aconselho a alterar a range da sua rede local (modifiquei isso aqui também).
Te aconselho dar uma olhada nas permissões do "/mnt/sdb5/CASH" também. Segue tutorial para alterações: http://www.hardware.com.br/livros/servidores-linux/mais-detalhes-sobre-configuracao-dos-caches.html. Até porque não sei das configurações do seu server (quantidade de memória), então aumentei para 1024 no arquivo de configuração pra começar a condizer (ainda não é o ideal, como explicado).

As permissoes na pasta CASH estavam corretas, após ler um pouco sobre o assunto de cache, subi o cache para 2048.


#Proxy port - Mode
http_port 3128 intercept

#Hostname
visible_hostname proxy.FTCSRV01

acl rede src 192.168.2.0/24
acl SSL_ports port 443 # https
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 22 # ftp
acl Safe_ports port 443 # 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 Safe_ports port 631 # CUPS
acl CONNECT method CONNECT

#RESTRICAO DOWNLOAD
#reply_body_max_size 10 MB
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localhost
http_access allow rede
http_access deny all
coredump_dir /var/spool/squid

#memoria cache
cache_mem 1024 MB

#usar maximo de memoria possivel
memory_pools off
#memory_pools_limit 512 MB

#Tamanho maximo dos arquivos alocados na memoria
maximum_object_size_in_memory 1024 KB

#porcentagem atualizacao cache
cache_swap_low 85
cache_swap_high 90

#Diretorio Cache
cache_dir ufs /mnt/sdb5/CASH 40960 15 256

#Maximo e minimo armazenados em disco
maximum_object_size 100 MB
minimum_object_size 0 KB
cache_replacement_policy heap LFUDA
memory_replacement_policy heap GDSF

refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern (Release|Packages(.gz)*)$ 0 20% 2880
refresh_pattern . 0 20% 4320




Te aconselho fazer as modificações, tanto no firewall, quanto no proxy e reportar resultados de testes.
Att.,


Funcionou perfeitamente, mas alem de funcionar, gostaria de entender onde estava o erro para crescer como profissional.

Vi que o memory_pools ficou off e que sim o iptables ficou visualmente mais limpo, apesar de já solucionado, é possivel me apontar os possiveis erros que cometi na hora de elaborar tanto o iptables quanto o squid?




11. Re: Squid bloqueando sites sem regras de bloqueio

Leandro Silva
LSSilva

(usa Outra)

Enviado em 17/03/2018 - 00:52h

Seu firewall:


#-------------------------------------------------
# || LIMPANDO AS TABELAS ||
#-------------------------------------------------
iptables -F
iptables -t nat -F

#-------------------------------------------------
# || INICIALIZANDO COMPARTILHAMENTO DE INTERNET ||
#-------------------------------------------------

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -A FORWARD -s 175.16.0.0/21 -p tcp --dport 443 -j ACCEPT

iptables -t nat -A PREROUTING -s 175.16.0.0/21 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -s 175.16.0.0/21 -p udp --dport 80 -j REDIRECT --to-port 3128

iptables -t nat -A POSTROUTING -o enp6s0f0 -j MASQUERADE

exit 0


Erro no firewall:

*Não especificar interface de rede local para pre-routing, além de utilizar endereço de IP "roteável" para criar regra.
Seu servidor irá fazer pre-routing de pacotes oriundos da internet na porta 80 e direcionará para seu proxy, isso fica pior quando usa endereços "válidos", pois não irá precisar nem de ip spoofing para criar um denial no seu server. Você aumentou consideravelmente a carga nele sem necessidade por utilização de configurações inadequadas. O cenário correto (no seu caso) é que os pacotes com destino à porta 80 (TCP), oriundos da rede local (usando range de ip privado) que serão roteados pelo seu server, sejam direcionados ao proxy.

Exemplo de firewall (um pouco mais elaborado, se precisar (com explicacações de erros no do usuário)), no último post deste tópico: https://www.vivaolinux.com.br/topico/netfilter-iptables/Controlar-acesso-a-determinados-sites-a-faix...

Seu proxy:


acl all src
acl rede.teste src 175.16.0.0/21
acl SSL_ports port 22 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # 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 Safe_ports port 631 # CUPS
acl CONNECT method CONNECT

#RESTRICAO DOWNLOAD
#reply_body_max_size 10 MB
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localhost
http_access allow rede.teste
http_access deny all
http_port 3128 intercept
coredump_dir /var/spool/squid

#memoria cache
cache_mem 512 MB

#usar maximo de memoria possivel
memory_pools on
memory_pools_limit 512 MB

#Tamanho maximo dos arquivos alocados na memoria
maximum_object_size_in_memory 1024 KB

#porcentagem atualizacao cache
cache_swap_low 85
cache_swap_high 90

#Diretorio Cache
cache_dir ufs /mnt/sdb5/CASH 40960 15 256

#porcentagem atualizacao cache
cache_swap_low 85
cache_swap_high 90

#Diretorio Cache
cache_dir ufs /mnt/sdb5/CASH 40960 15 256

#Maximo e minimo armazenados em disco
maximum_object_size 100 MB
minimum_object_size 0 KB
cache_replacement_policy heap LFUDA
memory_replacement_policy heap GDSF

refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern (Release|Packages(.gz)*)$ 0 20% 2880
refresh_pattern . 0 20% 4320

#Hostname
visible_hostname proxy.FTCSRV01


Questão do squid:

*Com relação ao memory_pools, ele só reserva ao proxy um montante de memória para que ele possa utilizar sem ter que chamar funções do sistema, teoricamente torna o squid mais rápido, porém dependendo do gerenciamento de memoria que se delimita em outras diretrizes, pode te prejudicar (alocar muita memória do server para o squid).
*Utilizar faixa de rede roteável: Você não utilizou um range de IP privado, como manda seu cenário (já explicado no firewall).
*Não calcular a memória que o squid irá utilizar de acordo com o diretório de cache: Cria comportamentos "inesperados" no proxy por não ter memória para "gerenciar" o espaço computado para cache.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts