Logo Hardware.com.br
LeaoNarrdo
LeaoNarrdo Membro Senior Registrado
178 Mensagens 38 Curtidas

Squid 3.3.8 + CentOS 7 - Compartilha Internet, mas não faz cache e não grava Log

#1 Por LeaoNarrdo 29/03/2016 - 10:52
Olá,
estou tentando configurar um cenário com squidcache + centos e não estou conseguindo fazer o cache, e o arquivo de log está vazio.

Cenário:
VirtualBOX
----- Centos7, 2 Placa de rede Wan= Modo Bridge, Lan= rede interna
----- Cliente XP, 1 Placa de rede modo= Rede interna

Centos7
-----WAN: DHCP
----- LAN: 192.168.0.200/24

Squid 3.3.8
Configuração do Squid

/etc/squid/squid.conf
http_port 3128 intercept
visible_hostname faztudo

#CACHE PARA DOWNLOADS
cache_mem 32 MB
maximum_object_size_in_memory 64 KB
maximum_object_size 512 MB
minimum_object_size 0 KB
cache_swap_low 90
cache_swap_high 95
cache_dir ufs /var/spool/squid 2048 16 256

#LOCALIZAÇO DO ARQUIVO DE LOG DO SQUI
cache_access_log /var/log/squid/access.log

refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 15 20% 4320

acl localnet src 192.168.0.0/24 # RFC 1918 possible internal network

acl SSL_ports port 443 # https
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 CONNECT method CONNECT

http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localnet
http_access allow localhost
http_access deny all


Iptables

/etc/init.d/firewall.sh


#!/bin/bash
############ Variaveis #############
IPT=/sbin/iptables

####################################
IF_WAN=enp0s3
IF_LAN=enp0s8
#IP_WAN=""
IP_LAN=192.168.0.200/24
IP_GW=192.168.1.1

####### rede e seus ranges #########
REDE_INTERNA=192.168.0.0/24

####### conf squid #########
# your proxy IP
SQUIDIP=192.168.0.200/24
# your proxy listening port
SQUIDPORT=3128

############## Portas ##############
HTTP=80
HTTPS=443
SSH=22
DNS=53
POP3=110
SMTP=587

function IniciaFirewall(){

#### politica padrao - NEGA TUDO ####

echo "politica por omissao - negar TUDO"

$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP

##### configurando interfaces #######

ifconfig $IF_LAN $IP_LAN

route del default
route add default gw $IP_GW

echo "apaga as regras ja existentes"
$IPT -F
$IPT -X
$IPT -Z
$IPT -t nat -F
$IPT -t nat -X
$IPT -t nat -Z
$IPT -F POSTROUTING -t nat
$IPT -F PREROUTING -t nat
$IPT -F OUTPUT -t nat

############ stateless ###############
echo "permite loopbak"
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

########### statefull ################
echo "descarta pacotes invalidos"
$IPT -A INPUT -m state --state INVALID -j DROP

echo "regras STATEFULL genericas"
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -i $IF_LAN -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -i $IF_WAN -m state --state ESTABLISHED,RELATED -j ACCEPT

########### DHCP ################
$IPT -I INPUT -i $LAN_IFACE -p udp --dport 67:68 --sport 67:68 -j ACCEPT

echo "permitir DNS [ok]"
$IPT -A OUTPUT -p udp --sport 1024:65535 --dport $DNS -m state --state NEW -j ACCEPT
$IPT -A FORWARD -p udp -i $IF_LAN -o $IF_WAN --dport $DNS -j ACCEPT

echo "permite HTTP [ok]"
#$IPT -A OUTPUT -p tcp --sport 1024:65535 --dport $HTTP -m state --state NEW -j ACCEPT
$IPT -A FORWARD -p tcp -i $IF_LAN -o $IF_WAN --dport $HTTP -j ACCEPT

echo "permite HTTPS [ok]"
#$IPT -A OUTPUT -p tcp --sport 1024:65535 --dport $HTTPS -m state --state NEW -j ACCEPT
$IPT -A FORWARD -p tcp -i $IF_LAN -o $IF_WAN --dport $HTTPS -j ACCEPT

echo "libera portas para e-mail [ok]"
$IPT -A FORWARD -p tcp -i $IF_LAN -o $IF_WAN --dport $POP3 -j ACCEPT
$IPT -A FORWARD -p tcp -i $IF_LAN -o $IF_WAN --dport $POP3 -j ACCEPT
$IPT -A FORWARD -p tcp -i $IF_LAN -o $IF_WAN --dport $SMTP -j ACCEPT

echo "libera SSH [ok]"
$IPT -A INPUT -p tcp --dport $SSH -j LOG --log-level 4 --log-prefix 'SSH_WAN > '
$IPT -A INPUT -p tcp -i $IF_WAN --dport $SSH -j ACCEPT

########## seguranca da rede ##############
echo "Impedindo ataque Ping of Death e ping flood no Firewall vindo da rede interna"
#A regra abaixo limita em 1 vez por segundo (--limit 1/s) a passagem de pings (echo requests) para o Firewall
$IPT -A INPUT -p icmp --icmp-type echo-request -i $IF_LAN -j LOG --log-level 4 --log-prefix 'PING_INERNO > '
$IPT -A INPUT -p icmp --icmp-type echo-request -i $IF_LAN -m limit --limit 1/s -j ACCEPT

echo "Descarte de pacotes nao identificados ICMP"
$IPT -A OUTPUT -m state -p icmp --state INVALID -j DROP
$IPT -A INPUT -m state -p icmp --state INVALID -j DROP
$IPT -A FORWARD -m state -p icmp --state INVALID -j DROP

echo 1024 > /proc/sys/net/ipv4/neigh/default/gc_thresh1
echo 2048 > /proc/sys/net/ipv4/neigh/default/gc_thresh2
echo 4096 > /proc/sys/net/ipv4/neigh/default/gc_thresh3
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route
echo 1 > /proc/sys/net/ipv4/tcp_syncookies

############ regras intercept squid cache #############
$IPT -t nat -A PREROUTING -s $SQUIDIP -p tcp --dport 80 -j ACCEPT
$IPT -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port $SQUIDPORT
$IPT -t nat -A POSTROUTING -j MASQUERADE
$IPT -t mangle -A PREROUTING -p tcp --dport $SQUIDPORT -j DROP

############ compartilha link #############
echo "compartilha link de internet [ok]"
$IPT -t nat -A POSTROUTING -o $IF_WAN -j MASQUERADE

echo "habilitando encaminhamento de pacotes [ok]"
echo 1 > /proc/sys/net/ipv4/ip_forward

}
function LiberaFirewall(){

echo "politica Libera TUDO"

$IPT -P INPUT ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -P FORWARD ACCEPT

#########################################
# configurando interfaces
#########################################
ifconfig $IF_LAN $IP_LAN
route del default
route add default gw $IP_GW

echo "apaga as regras ja existentes"
$IPT -F
$IPT -X
$IPT -Z
$IPT -t nat -F
$IPT -t nat -X
$IPT -t nat -Z

########## compartilha link ###############
echo "compartilha link de internet [ok]"
$IPT -t nat -A POSTROUTING -o $IF_WAN -j MASQUERADE

echo "habilitando encaminhamento de pacotes [ok]"
echo 1 > /proc/sys/net/ipv4/ip_forward
}

case $1 in
start)
IniciaFirewall
exit 0
;;
stop)
LiberaFirewall
exit 1
;;
restart)
LiberaFirewall;IniciaFirewall
exit 2
;;
*)
echo
echo "Use ||start|| para iniciar as regras desse Firewall, ||restart|| para reiniciar e ||stop|| para descartar todas as politicas de seguranca, NAO FACA ISSO!"
echo
exit 3
;;
esac

# FIM: tudo que não for explicitamente permitido será negado!



Log do squid que não grava nada.
 <b>ls -l /var/log/squid/</b>
total 88
-rw-r-----. 1 squid squid 0 Mar 28 22:56 access.log
-rw-r-----. 1 squid squid 88409 Mar 28 23:02 cache.log


Com o Cliente XP eu consigo navegar sem problemas, mas o cache não funciona
LeaoNarrdo
LeaoNarrdo Membro Senior Registrado
178 Mensagens 38 Curtidas
#5 Por LeaoNarrdo
29/03/2016 - 15:02
jqueiroz disse:
Arquivo de log vazio é sinal que seu tráfego não está chegando no squid.
Configure o navegador de uma máquina para usar seu squid, confirme que os acessos estão chegando via "netstat" nas duas máquinas, e "tcpdump" no servidor squid.

Obrigado.
Realmente não estava passando pelo proxy. Tirei o script de firewall e deixei apenas o redirecionamento de portas 80 para 3128 e o mascaramento.

Agora preciso fazer o cache inclusive de HTTPS.


...::: Venha fazer parte dessa comunidade :::...
LeaoNarrdo
LeaoNarrdo Membro Senior Registrado
178 Mensagens 38 Curtidas
#7 Por LeaoNarrdo
29/03/2016 - 15:17
jqueiroz disse:
Cache de HTTPS, a rigor, só funciona com proxy configurado.

Se eu usar um Servidor WPAD, ja tenho DHCP e DNS nessa maquina.
Eu não quero setar proxy nos navegadores para deixar no cliente um plano de emergência, porque qualquer problema ele mesmo substitui o servidor por um router e fica pelo menos com a internet.


...::: Venha fazer parte dessa comunidade :::...
LeaoNarrdo
LeaoNarrdo Membro Senior Registrado
178 Mensagens 38 Curtidas
#9 Por LeaoNarrdo
07/04/2016 - 09:10
jqueiroz disse:
Cache de HTTPS, a rigor, só funciona com proxy configurado.

Você já conseguiu implementar o squid desta forma? Eu não consigo fazer o HTTPS funcionar, sempre que compilo o pacote do squid 3.5.16 e rodo o comando

[HASHTAG]#service[/HASHTAG] squid start
Redirecting to /bin/systemctl start squid.service
Failed to start squid.service: Unit squid.service failed to load: No such file or directory.


Ai eu tenho que fazer da seguinte forma

#/usr/local/squid/sbin/squid start
FATAL: getpwnam failed to find userid for effective user 'proxy'
Squid Cache (Version 3.5.16): Terminated abnormally.
CPU Usage: 0.079 seconds = 0.017 user + 0.062 sys
Maximum Resident Size: 23344 KB
Page faults with physical i/o: 15


Parece que o squid não foi instalado, no /etc não tem diretório do squid.

Eu fiz da seguinte forma:
baixei o pacote squid 3.5.16 e compilei:
./configure --prefix=/usr --sysconfdir=/etc/squid --libexecdir=/usr/libexec/squid --datadir=/usr/share/squid --enable-carp --with-pthreads --enable-removal-policies="heap lru" --enable-icmp --enable-delay-pools --enable-useragent-log --enable-referer-log --enable-kill-parent-hack --enable-snmp --enable-arp-acl --enable-htcp --with-openssl --with-openssl=/usr --enable-forw-via-db --enable-default-err-language=Portuguese --enable-err-languages="Portuguese English Spanish" --enable-poll --enable-linux-netfilter --enable-leakfinder --enable-underscores


[HASHTAG]#make[/HASHTAG] all
[HASHTAG]#make[/HASHTAG] install

Não deu nenhum erro.

Eu não sei mais o que fazer. Se puder indicar algum material pra estudo eu agradeço, já rodei a internet inteira.




...::: Venha fazer parte dessa comunidade :::...
jqueiroz
jqueiroz Cyber Highlander Registrado
104K Mensagens 5.7K Curtidas
#12 Por jqueiroz
07/04/2016 - 10:35
Sugestão... use o pacote-fonte do Centos pra compilar seu squid.
Assim esses detalhes de arquivos auxiliares, bibliotecas, etc. são resolvidos automaticamente.
Sobre o erro de certificado, ele só ocorre se vc tentar fazer cache transparente do HTTPS. Basta usar o proxy configurado que o problema acaba.
"chmod 777 nunca ajudou ninguém" (c) 2002-2021 JQueiroz/FGdH
Conheça o Blog do Zekke
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal