Proxy não funciona - sem acesso a Internet [RESOLVIDO]

1. Proxy não funciona - sem acesso a Internet [RESOLVIDO]

Francisco Iglesias Bretas
figlesias

(usa Debian)

Enviado em 17/06/2021 - 13:35h

Olá pessoal! Boa tarde! Bom, tenho um servidor Debian 10 com DHCP rodando normal, squid instalado e configurado (Não transparente) e o iptables pré-configurado, porém, minhas máquinas na rede não conseguem navegar na WEB, creio que seja um problema no meu iptables. Em resumo tenho duas placas de rede no meu servidor, a enp4s0 é a placa que recebe a internet e a enp5s0 é minha interface de rede interna. Seguem abaixo conteúdo do meu squid.conf e do meu iptables - arquivo rules.v4: Alguém pode me ajudar?

SQUID.CONF

http_port 3128
visible_hostname proxy.srv01

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

# Configurações de cache e logs
cache_mem 64 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
cache_access_log /var/log/squid/access.log
refresh_pattern ^ftp: 15 20% 2280
refresh_pattern ^gopher: 15 0% 2280
refresh_pattern . 15 20% 2280

# Regras ACl padrão
acl all src all
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 21 80 443 563 70 210 280 488 59 777 901 1025-65535
acl purge method PURGE
acl CONNECT method CONNECT
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

#IPS Liberados
acl ips_full src "/etc/squid/ips_liberados"
http_access allow ips_full

# Restrição de horário
acl horario time 08:00-17:00
http_access deny horario

# Restrição de sites
acl sbloqueados dstdom_regex "/etc/squid/sites_proibidos"
http_access deny sbloqueados

# Restrição por palavras
acl pbloqueadas dstdom_regex "/etc/squid/palavras_proibidas"
http_access deny pbloqueadas

# Permissão rede local e servidor
acl redelocal src 192.168.16.0/24
acl limitado_visit src 192.168.16.70-192.168.16.119
acl limitado_corp src 192.168.16.20-192.168.16.69
delay_pools 2
delay_class 1 2
delay_parameters 1 13000/13000 13000/13000 # velocidade de 128 kbps
delay_access 1 allow limitado_visit
delay_class 2 2
delay_parameters 2 114688/114688 16384/16384 # velocidade de 1024 kbps
delay_access 2 allow limitado_corp
http_access allow localhost
http_access allow redelocal
http_access deny all

MEU IPTABLES NO RULES.V4:

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 192.168.16.0/24 -p udp -m udp --dport 137 -j ACCEPT
-A INPUT -s 192.168.16.0/24 -p udp -m udp --dport 138 -j ACCEPT
-A INPUT -s 192.168.16.0/24 -p udp -m udp --dport 139 -j ACCEPT
-A INPUT -s 192.168.16.0/24 -p tcp -m conntrack --ctstate NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -s 192.168.16.0/24 -p tcp -m conntrack --ctstate NEW -m tcp --dport 445 -j ACCEPT
-A INPUT -s 192.168.16.0/24 -p tcp -m conntrack --ctstate NEW -m tcp --dport 137 -j ACCEPT
-A INPUT -s 192.168.16.0/24 -p tcp -m conntrack --ctstate NEW -m tcp --dport 138 -j ACCEPT
-A INPUT -s 192.168.16.0/24 -p tcp -m conntrack --ctstate NEW -m tcp --dport 139 -j ACCEPT
-A INPUT -i enp5s0 -p udp -m udp --dport 67:68 -j ACCEPT
-A INPUT -i enp4s0 -p udp -m udp --dport 67:68 -j ACCEPT
-A INPUT -i enp5s0 -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -j DROP
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i enp5s0 -p udp -m udp --dport 137 -j ACCEPT
-A INPUT -i enp5s0 -p udp -m udp --dport 138 -j ACCEPT
-A INPUT -i enp5s0 -p udp -m udp --dport 139 -j ACCEPT
-A INPUT -i enp5s0 -p tcp -m conntrack --ctstate NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -i enp5s0 -p tcp -m conntrack --ctstate NEW -m tcp --dport 445 -j ACCEPT
-A INPUT -i enp5s0 -p tcp -m conntrack --ctstate NEW -m tcp --dport 137 -j ACCEPT
-A INPUT -i enp5s0 -p tcp -m conntrack --ctstate NEW -m tcp --dport 138 -j ACCEPT
-A INPUT -i enp5s0 -p tcp -m conntrack --ctstate NEW -m tcp --dport 139 -j ACCEPT
-A INPUT -i enp5s0 -p udp -m udp --dport 67:68 -j ACCEPT
-A INPUT -i enp4s0 -p udp -m udp --dport 67:68 -j ACCEPT
-A INPUT -i enp5s0 -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -j DROP
-A INPUT -s 179.162.172.191/32 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -s 192.168.16.0/24 -p tcp -m tcp --dport 3128 -m state --state NEW,ESTABLISHED -j ACCEPT
-A FORWARD -m conntrack --ctstate NEW -j ACCEPT
-A FORWARD -i enp5s0 -m conntrack --ctstate NEW -j ACCEPT
-A FORWARD -j DROP
-A FORWARD -p tcp -m multiport --dports 25,110 -j ACCEPT
-A OUTPUT -p tcp -m multiport --dports 80,443 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 53 -j ACCEPT
-A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -p tcp -m multiport --dports 20,21 -j ACCEPT
-A OUTPUT -p udp -m multiport --dports 20,21 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 3306 -j ACCEPT
-A OUTPUT -p udp -m udp --dport 3306 -j ACCEPT
-A OUTPUT -d 192.168.16.0/24 -p tcp -m tcp --sport 3128 -m state --state ESTABLISHED -j ACCEPT
COMMIT

*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A PREROUTING -i enp5s0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
-A PREROUTING -s 192.168.16.0/24 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
-A POSTROUTING -o enp4s0 -j MASQUERADE
COMMIT

Creio que seja algo simples de resolver mas não consegui, talvez possam me ajudar. Agradeço desde já! Forte abraço!!!



  


2. Re: Proxy não funciona - sem acesso a Internet [RESOLVIDO]

Leandro Silva
LSSilva

(usa Outra)

Enviado em 17/06/2021 - 23:01h

Boa noite!
Creio que primeiro deve verificar se o servidor tem internet. Se tiver, como não usa Proxy transparente, tente remover as regras de Nat prerouting da porta 80 para 3128. Daria pra refazer o firewall de forma bem simples, mas acho que já é uma tentativa válida. A porta 3128/tcp deve estar liberada pra rede local e somente pra ela.
Não cheguei a analisar bem o seu script do squid, mas tem chance de ser ele também.


3. Re: Proxy não funciona - sem acesso a Internet [RESOLVIDO]

Francisco Iglesias Bretas
figlesias

(usa Debian)

Enviado em 18/06/2021 - 11:22h


LSSilva escreveu:

Boa noite!
Creio que primeiro deve verificar se o servidor tem internet. Se tiver, como não usa Proxy transparente, tente remover as regras de Nat prerouting da porta 80 para 3128. Daria pra refazer o firewall de forma bem simples, mas acho que já é uma tentativa válida. A porta 3128/tcp deve estar liberada pra rede local e somente pra ela.
Não cheguei a analisar bem o seu script do squid, mas tem chance de ser ele também.


Obrigado amigo! Vou testar e te aviso. Retirei as regras de Nat e ficou assim:

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 192.168.16.0/24 -p udp -m udp --dport 137 -j ACCEPT
-A INPUT -s 192.168.16.0/24 -p udp -m udp --dport 138 -j ACCEPT
-A INPUT -s 192.168.16.0/24 -p udp -m udp --dport 139 -j ACCEPT
-A INPUT -s 192.168.16.0/24 -p tcp -m conntrack --ctstate NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -s 192.168.16.0/24 -p tcp -m conntrack --ctstate NEW -m tcp --dport 445 -j ACCEPT
-A INPUT -s 192.168.16.0/24 -p tcp -m conntrack --ctstate NEW -m tcp --dport 137 -j ACCEPT
-A INPUT -s 192.168.16.0/24 -p tcp -m conntrack --ctstate NEW -m tcp --dport 138 -j ACCEPT
-A INPUT -s 192.168.16.0/24 -p tcp -m conntrack --ctstate NEW -m tcp --dport 139 -j ACCEPT
-A INPUT -i enp5s0 -p udp -m udp --dport 67:68 -j ACCEPT
-A INPUT -i enp4s0 -p udp -m udp --dport 67:68 -j ACCEPT
-A INPUT -i enp5s0 -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -j DROP
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i enp5s0 -p udp -m udp --dport 137 -j ACCEPT
-A INPUT -i enp5s0 -p udp -m udp --dport 138 -j ACCEPT
-A INPUT -i enp5s0 -p udp -m udp --dport 139 -j ACCEPT
-A INPUT -i enp5s0 -p tcp -m conntrack --ctstate NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -i enp5s0 -p tcp -m conntrack --ctstate NEW -m tcp --dport 445 -j ACCEPT
-A INPUT -i enp5s0 -p tcp -m conntrack --ctstate NEW -m tcp --dport 137 -j ACCEPT
-A INPUT -i enp5s0 -p tcp -m conntrack --ctstate NEW -m tcp --dport 138 -j ACCEPT
-A INPUT -i enp5s0 -p tcp -m conntrack --ctstate NEW -m tcp --dport 139 -j ACCEPT
-A INPUT -i enp5s0 -p udp -m udp --dport 67:68 -j ACCEPT
-A INPUT -i enp4s0 -p udp -m udp --dport 67:68 -j ACCEPT
-A INPUT -i enp5s0 -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -j DROP
-A INPUT -s 192.168.16.0/24 -p tcp -m tcp --dport 3128 -m state --state NEW,ESTABLISHED -j ACCEPT
-A FORWARD -m conntrack --ctstate NEW -j ACCEPT
-A FORWARD -i enp5s0 -m conntrack --ctstate NEW -j ACCEPT
-A FORWARD -j DROP
-A FORWARD -p tcp -m multiport --dports 25,110 -j ACCEPT
-A OUTPUT -p tcp -m multiport --dports 80,443 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 53 -j ACCEPT
-A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -p tcp -m multiport --dports 20,21 -j ACCEPT
-A OUTPUT -p udp -m multiport --dports 20,21 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 3306 -j ACCEPT
-A OUTPUT -p udp -m udp --dport 3306 -j ACCEPT
-A OUTPUT -d 192.168.16.0/24 -p tcp -m tcp --sport 3128 -m state --state ESTABLISHED -j ACCEPT
*nat
:OUTPUT ACCEPT [0:0]
-A POSTROUTING -o enp4s0 -j MASQUERADE

Na segunda te dou notícias! Abraço!


4. Re: Proxy não funciona - sem acesso a Internet [RESOLVIDO]

Francisco Iglesias Bretas
figlesias

(usa Debian)

Enviado em 18/06/2021 - 15:24h


figlesias escreveu:


LSSilva escreveu:

Boa noite!
Creio que primeiro deve verificar se o servidor tem internet. Se tiver, como não usa Proxy transparente, tente remover as regras de Nat prerouting da porta 80 para 3128. Daria pra refazer o firewall de forma bem simples, mas acho que já é uma tentativa válida. A porta 3128/tcp deve estar liberada pra rede local e somente pra ela.
Não cheguei a analisar bem o seu script do squid, mas tem chance de ser ele também.


Obrigado amigo! Vou testar e te aviso. Retirei as regras de Nat e ficou assim:

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 192.168.16.0/24 -p udp -m udp --dport 137 -j ACCEPT
-A INPUT -s 192.168.16.0/24 -p udp -m udp --dport 138 -j ACCEPT
-A INPUT -s 192.168.16.0/24 -p udp -m udp --dport 139 -j ACCEPT
-A INPUT -s 192.168.16.0/24 -p tcp -m conntrack --ctstate NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -s 192.168.16.0/24 -p tcp -m conntrack --ctstate NEW -m tcp --dport 445 -j ACCEPT
-A INPUT -s 192.168.16.0/24 -p tcp -m conntrack --ctstate NEW -m tcp --dport 137 -j ACCEPT
-A INPUT -s 192.168.16.0/24 -p tcp -m conntrack --ctstate NEW -m tcp --dport 138 -j ACCEPT
-A INPUT -s 192.168.16.0/24 -p tcp -m conntrack --ctstate NEW -m tcp --dport 139 -j ACCEPT
-A INPUT -i enp5s0 -p udp -m udp --dport 67:68 -j ACCEPT
-A INPUT -i enp4s0 -p udp -m udp --dport 67:68 -j ACCEPT
-A INPUT -i enp5s0 -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -j DROP
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i enp5s0 -p udp -m udp --dport 137 -j ACCEPT
-A INPUT -i enp5s0 -p udp -m udp --dport 138 -j ACCEPT
-A INPUT -i enp5s0 -p udp -m udp --dport 139 -j ACCEPT
-A INPUT -i enp5s0 -p tcp -m conntrack --ctstate NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -i enp5s0 -p tcp -m conntrack --ctstate NEW -m tcp --dport 445 -j ACCEPT
-A INPUT -i enp5s0 -p tcp -m conntrack --ctstate NEW -m tcp --dport 137 -j ACCEPT
-A INPUT -i enp5s0 -p tcp -m conntrack --ctstate NEW -m tcp --dport 138 -j ACCEPT
-A INPUT -i enp5s0 -p tcp -m conntrack --ctstate NEW -m tcp --dport 139 -j ACCEPT
-A INPUT -i enp5s0 -p udp -m udp --dport 67:68 -j ACCEPT
-A INPUT -i enp4s0 -p udp -m udp --dport 67:68 -j ACCEPT
-A INPUT -i enp5s0 -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -j DROP
-A INPUT -s 192.168.16.0/24 -p tcp -m tcp --dport 3128 -m state --state NEW,ESTABLISHED -j ACCEPT
-A FORWARD -m conntrack --ctstate NEW -j ACCEPT
-A FORWARD -i enp5s0 -m conntrack --ctstate NEW -j ACCEPT
-A FORWARD -j DROP
-A FORWARD -p tcp -m multiport --dports 25,110 -j ACCEPT
-A OUTPUT -p tcp -m multiport --dports 80,443 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 53 -j ACCEPT
-A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -p tcp -m multiport --dports 20,21 -j ACCEPT
-A OUTPUT -p udp -m multiport --dports 20,21 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 3306 -j ACCEPT
-A OUTPUT -p udp -m udp --dport 3306 -j ACCEPT
-A OUTPUT -d 192.168.16.0/24 -p tcp -m tcp --sport 3128 -m state --state ESTABLISHED -j ACCEPT
*nat
:OUTPUT ACCEPT [0:0]
-A POSTROUTING -o enp4s0 -j MASQUERADE

Na segunda te dou notícias! Abraço!


Amigo, fiz o que sugeriu e da o mesmo problema! Como eu tenho duas placas de rede, a enp4s0 recebe minha internet e a enp5s0 é a rede interna, eu não preciso no caso de Proxy não transparente redirecionar o tráfego da minha rede interna (enp5s0) para a internet (enp4s0)?

Outra dúvida: como fazer um firewall mais simples? Gostei da sua sugestão e queria mais detalhes se possível for!

E por último, caso eu queira proxy transparente, quais regras de Firewall devo implementar considerando o cenário exposto no qual possuo duas placas de rede? Tentei diversas sugestões aqui do Fórum mas nenhuma funciona, quando tento subir o SQUID com proxy transparente dá o erro "no forward-proxy ports configured"!

Agradeço desde já!




5. Re: Proxy não funciona - sem acesso a Internet [RESOLVIDO]

Leandro Silva
LSSilva

(usa Outra)

Enviado em 18/06/2021 - 18:01h


figlesias escreveu:


figlesias escreveu:


LSSilva escreveu:

Boa noite!
Creio que primeiro deve verificar se o servidor tem internet. Se tiver, como não usa Proxy transparente, tente remover as regras de Nat prerouting da porta 80 para 3128. Daria pra refazer o firewall de forma bem simples, mas acho que já é uma tentativa válida. A porta 3128/tcp deve estar liberada pra rede local e somente pra ela.
Não cheguei a analisar bem o seu script do squid, mas tem chance de ser ele também.


Obrigado amigo! Vou testar e te aviso. Retirei as regras de Nat e ficou assim:

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 192.168.16.0/24 -p udp -m udp --dport 137 -j ACCEPT
-A INPUT -s 192.168.16.0/24 -p udp -m udp --dport 138 -j ACCEPT
-A INPUT -s 192.168.16.0/24 -p udp -m udp --dport 139 -j ACCEPT
-A INPUT -s 192.168.16.0/24 -p tcp -m conntrack --ctstate NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -s 192.168.16.0/24 -p tcp -m conntrack --ctstate NEW -m tcp --dport 445 -j ACCEPT
-A INPUT -s 192.168.16.0/24 -p tcp -m conntrack --ctstate NEW -m tcp --dport 137 -j ACCEPT
-A INPUT -s 192.168.16.0/24 -p tcp -m conntrack --ctstate NEW -m tcp --dport 138 -j ACCEPT
-A INPUT -s 192.168.16.0/24 -p tcp -m conntrack --ctstate NEW -m tcp --dport 139 -j ACCEPT
-A INPUT -i enp5s0 -p udp -m udp --dport 67:68 -j ACCEPT
-A INPUT -i enp4s0 -p udp -m udp --dport 67:68 -j ACCEPT
-A INPUT -i enp5s0 -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -j DROP
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i enp5s0 -p udp -m udp --dport 137 -j ACCEPT
-A INPUT -i enp5s0 -p udp -m udp --dport 138 -j ACCEPT
-A INPUT -i enp5s0 -p udp -m udp --dport 139 -j ACCEPT
-A INPUT -i enp5s0 -p tcp -m conntrack --ctstate NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -i enp5s0 -p tcp -m conntrack --ctstate NEW -m tcp --dport 445 -j ACCEPT
-A INPUT -i enp5s0 -p tcp -m conntrack --ctstate NEW -m tcp --dport 137 -j ACCEPT
-A INPUT -i enp5s0 -p tcp -m conntrack --ctstate NEW -m tcp --dport 138 -j ACCEPT
-A INPUT -i enp5s0 -p tcp -m conntrack --ctstate NEW -m tcp --dport 139 -j ACCEPT
-A INPUT -i enp5s0 -p udp -m udp --dport 67:68 -j ACCEPT
-A INPUT -i enp4s0 -p udp -m udp --dport 67:68 -j ACCEPT
-A INPUT -i enp5s0 -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -j DROP
-A INPUT -s 192.168.16.0/24 -p tcp -m tcp --dport 3128 -m state --state NEW,ESTABLISHED -j ACCEPT
-A FORWARD -m conntrack --ctstate NEW -j ACCEPT
-A FORWARD -i enp5s0 -m conntrack --ctstate NEW -j ACCEPT
-A FORWARD -j DROP
-A FORWARD -p tcp -m multiport --dports 25,110 -j ACCEPT
-A OUTPUT -p tcp -m multiport --dports 80,443 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 53 -j ACCEPT
-A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -p tcp -m multiport --dports 20,21 -j ACCEPT
-A OUTPUT -p udp -m multiport --dports 20,21 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 3306 -j ACCEPT
-A OUTPUT -p udp -m udp --dport 3306 -j ACCEPT
-A OUTPUT -d 192.168.16.0/24 -p tcp -m tcp --sport 3128 -m state --state ESTABLISHED -j ACCEPT
*nat
:OUTPUT ACCEPT [0:0]
-A POSTROUTING -o enp4s0 -j MASQUERADE

Na segunda te dou notícias! Abraço!


Amigo, fiz o que sugeriu e da o mesmo problema! Como eu tenho duas placas de rede, a enp4s0 recebe minha internet e a enp5s0 é a rede interna, eu não preciso no caso de Proxy não transparente redirecionar o tráfego da minha rede interna (enp5s0) para a internet (enp4s0)?

Outra dúvida: como fazer um firewall mais simples? Gostei da sua sugestão e queria mais detalhes se possível for!

E por último, caso eu queira proxy transparente, quais regras de Firewall devo implementar considerando o cenário exposto no qual possuo duas placas de rede? Tentei diversas sugestões aqui do Fórum mas nenhuma funciona, quando tento subir o SQUID com proxy transparente dá o erro "no forward-proxy ports configured"!

Agradeço desde já!



Boa tarde!

Para utilização de um proxy tradicional (não transparente), é preciso somente que o servidor onde o proxy esteja "rodando" tenha acesso à internet; que o squid esteja sendo executado e a porta do mesmo esteja aberto:
iptables -t filter -A INPUT -p tcp --dport 3128 -i $interfacelocal -s $redelocal -j ACCEPT 
.
Não é necessário compartilhar a conexão via NAT para um proxy tradicional funcionar, mas é necessário que todas as estações sejam configuradas para usar aquele endereço como proxy para navegadores e programas.
Se se endereço de firewall/proxy for: 192.168.16.254, por exemplo, irá configurar nas estações o proxy: 192.168.16.254:3128.

Um script de firewall firewall simples para proxy tradicional (com portas de proxy (3128) e ssh (22) abertas):

#!/bin/bash

#vars
iflan="enp4s4"
localnet="192.168.16.0/24"
ifwan="enp5s5"

start (){
#Define políticas de drop para input (filter).
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
#Limpa regras
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X

##############
#Filter(INPUT)
##############
#Invalid
iptables -A INPUT -m state --state INVALID -j LOG --log-prefix "Firewall: Invalid Input "
iptables -A INPUT -m state --state INVALID -j DROP
#Valid
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#Services-Accept (TCP / LAN)
iptables -A INPUT -p tcp -i $iflan--dport 3128 -s $localnet -m state --state NEW --syn -j ACCEPT
iptables -A INPUT -p tcp -i $iflan--dport 22 -s $localnet -m state --state NEW --syn -j ACCEPT
#Services-Accept (UDP / LAN)
#iptables -A INPUT -p udp -i $iflan--dport $port -s $localnet -m state --state NEW -j ACCEPT
#Services-Accept (TCP / WAN)
#iptables -A INPUT -p tcp -i $ifwan --dport $port -m state --state NEW --syn -j ACCEPT
#Services-Accept (UDP / WAN)
#iptables -A INPUT -p udp -i $ifwan --dport $port -m state --state NEW -j ACCEPT

#Services-Accept (ICMP)
iptables -A INPUT -p icmp --icmp-type echo-request -s $localnet -j ACCEPT

#Loopback
iptables -A INPUT -i lo -j ACCEPT

#Default LOG
iptables -A INPUT ! -i lo -j LOG --log-prefix "Firewall: Drop Input "

###############
#Filter(OUTPUT)
###############
iptables -A OUTPUT -m state --state INVALID -j LOG --log-prefix "Firewall: Invalid Output "
iptables -A OUTPUT -m state --state INVALID -j DROP

################
#Filter(FORWARD)
################
#Invalid
iptables -A FORWARD -m state --state INVALID -j LOG --log-prefix "Firewall: Invalid Forward "
iptables -A FORWARD -m state --state INVALID -j DROP
#Anti-Spoof Rule
iptables -A FORWARD -i $iflan ! -s $localnet -j LOG --log-prefix "Firewall: Spoofed Packet "
iptables -A FORWARD -i $iflan ! -s $localnet -j DROP

##################
#Nat - PostRouting
##################
iptables -t nat -A POSTROUTING -o $ifwan -j MASQUERADE

}
stop (){
#Set permissive defaults
#Policy
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
#Clean
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
#Masquerading
iptables -t nat -A POSTROUTING -j MASQUERADE

}
case $1 in
start) start;;
stop) stop;;
restart) stop;start;;
*) echo "Use";;
esac


Você pode modificar ele como quiser, mas creio que mudando o nome das interfaces e a rede para seu case, já vai funcionar. É indispensável que seu servidor acesse a internet.
Nesse caso, não há NAT, os hosts não irão navegar a não ser pelo proxy.

Pra proxy transparente, muda a configuração do squid e você tem que adicionar as regras de compartilhamento de conexão e ativar o encaminhamento de pacotes do kernel.
Além disso, se faz esta regra de prerouting que você estava usando, onde todos os pacotes que chegam na porta 80 são redirecionados para a 3128 (do squid).

Cara, pra não ter esse trabalho todo, já pensou em usar PFSense? É bem intuitivo e tranquilo de configurar. Nele tem mais features e ele é mais estável (com kernel preparado para este propósito e ainda é um BSD).




6. Re: Proxy não funciona - sem acesso a Internet [RESOLVIDO]

Francisco Iglesias Bretas
figlesias

(usa Debian)

Enviado em 21/06/2021 - 07:48h


Beleza amigo. Vou testar hoje a tarde e te falo! Muito obrigado pela ajuda! Top demais seu script!


7. Re: Proxy não funciona - sem acesso a Internet [RESOLVIDO]

Francisco Iglesias Bretas
figlesias

(usa Debian)

Enviado em 21/06/2021 - 14:18h


LSSilva escreveu:


figlesias escreveu:


figlesias escreveu:


LSSilva escreveu:

Boa noite!
Creio que primeiro deve verificar se o servidor tem internet. Se tiver, como não usa Proxy transparente, tente remover as regras de Nat prerouting da porta 80 para 3128. Daria pra refazer o firewall de forma bem simples, mas acho que já é uma tentativa válida. A porta 3128/tcp deve estar liberada pra rede local e somente pra ela.
Não cheguei a analisar bem o seu script do squid, mas tem chance de ser ele também.


Obrigado amigo! Vou testar e te aviso. Retirei as regras de Nat e ficou assim:

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 192.168.16.0/24 -p udp -m udp --dport 137 -j ACCEPT
-A INPUT -s 192.168.16.0/24 -p udp -m udp --dport 138 -j ACCEPT
-A INPUT -s 192.168.16.0/24 -p udp -m udp --dport 139 -j ACCEPT
-A INPUT -s 192.168.16.0/24 -p tcp -m conntrack --ctstate NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -s 192.168.16.0/24 -p tcp -m conntrack --ctstate NEW -m tcp --dport 445 -j ACCEPT
-A INPUT -s 192.168.16.0/24 -p tcp -m conntrack --ctstate NEW -m tcp --dport 137 -j ACCEPT
-A INPUT -s 192.168.16.0/24 -p tcp -m conntrack --ctstate NEW -m tcp --dport 138 -j ACCEPT
-A INPUT -s 192.168.16.0/24 -p tcp -m conntrack --ctstate NEW -m tcp --dport 139 -j ACCEPT
-A INPUT -i enp5s0 -p udp -m udp --dport 67:68 -j ACCEPT
-A INPUT -i enp4s0 -p udp -m udp --dport 67:68 -j ACCEPT
-A INPUT -i enp5s0 -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -j DROP
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i enp5s0 -p udp -m udp --dport 137 -j ACCEPT
-A INPUT -i enp5s0 -p udp -m udp --dport 138 -j ACCEPT
-A INPUT -i enp5s0 -p udp -m udp --dport 139 -j ACCEPT
-A INPUT -i enp5s0 -p tcp -m conntrack --ctstate NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -i enp5s0 -p tcp -m conntrack --ctstate NEW -m tcp --dport 445 -j ACCEPT
-A INPUT -i enp5s0 -p tcp -m conntrack --ctstate NEW -m tcp --dport 137 -j ACCEPT
-A INPUT -i enp5s0 -p tcp -m conntrack --ctstate NEW -m tcp --dport 138 -j ACCEPT
-A INPUT -i enp5s0 -p tcp -m conntrack --ctstate NEW -m tcp --dport 139 -j ACCEPT
-A INPUT -i enp5s0 -p udp -m udp --dport 67:68 -j ACCEPT
-A INPUT -i enp4s0 -p udp -m udp --dport 67:68 -j ACCEPT
-A INPUT -i enp5s0 -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -j DROP
-A INPUT -s 192.168.16.0/24 -p tcp -m tcp --dport 3128 -m state --state NEW,ESTABLISHED -j ACCEPT
-A FORWARD -m conntrack --ctstate NEW -j ACCEPT
-A FORWARD -i enp5s0 -m conntrack --ctstate NEW -j ACCEPT
-A FORWARD -j DROP
-A FORWARD -p tcp -m multiport --dports 25,110 -j ACCEPT
-A OUTPUT -p tcp -m multiport --dports 80,443 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 53 -j ACCEPT
-A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -p tcp -m multiport --dports 20,21 -j ACCEPT
-A OUTPUT -p udp -m multiport --dports 20,21 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 3306 -j ACCEPT
-A OUTPUT -p udp -m udp --dport 3306 -j ACCEPT
-A OUTPUT -d 192.168.16.0/24 -p tcp -m tcp --sport 3128 -m state --state ESTABLISHED -j ACCEPT
*nat
:OUTPUT ACCEPT [0:0]
-A POSTROUTING -o enp4s0 -j MASQUERADE

Na segunda te dou notícias! Abraço!


Amigo, fiz o que sugeriu e da o mesmo problema! Como eu tenho duas placas de rede, a enp4s0 recebe minha internet e a enp5s0 é a rede interna, eu não preciso no caso de Proxy não transparente redirecionar o tráfego da minha rede interna (enp5s0) para a internet (enp4s0)?

Outra dúvida: como fazer um firewall mais simples? Gostei da sua sugestão e queria mais detalhes se possível for!

E por último, caso eu queira proxy transparente, quais regras de Firewall devo implementar considerando o cenário exposto no qual possuo duas placas de rede? Tentei diversas sugestões aqui do Fórum mas nenhuma funciona, quando tento subir o SQUID com proxy transparente dá o erro "no forward-proxy ports configured"!

Agradeço desde já!



Boa tarde!

Para utilização de um proxy tradicional (não transparente), é preciso somente que o servidor onde o proxy esteja "rodando" tenha acesso à internet; que o squid esteja sendo executado e a porta do mesmo esteja aberto:
iptables -t filter -A INPUT -p tcp --dport 3128 -i $interfacelocal -s $redelocal -j ACCEPT 
.
Não é necessário compartilhar a conexão via NAT para um proxy tradicional funcionar, mas é necessário que todas as estações sejam configuradas para usar aquele endereço como proxy para navegadores e programas.
Se se endereço de firewall/proxy for: 192.168.16.254, por exemplo, irá configurar nas estações o proxy: 192.168.16.254:3128.

Um script de firewall firewall simples para proxy tradicional (com portas de proxy (3128) e ssh (22) abertas):

#!/bin/bash

#vars
iflan="enp4s4"
localnet="192.168.16.0/24"
ifwan="enp5s5"

start (){
#Define políticas de drop para input (filter).
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
#Limpa regras
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X

##############
#Filter(INPUT)
##############
#Invalid
iptables -A INPUT -m state --state INVALID -j LOG --log-prefix "Firewall: Invalid Input "
iptables -A INPUT -m state --state INVALID -j DROP
#Valid
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#Services-Accept (TCP / LAN)
iptables -A INPUT -p tcp -i $iflan--dport 3128 -s $localnet -m state --state NEW --syn -j ACCEPT
iptables -A INPUT -p tcp -i $iflan--dport 22 -s $localnet -m state --state NEW --syn -j ACCEPT
#Services-Accept (UDP / LAN)
#iptables -A INPUT -p udp -i $iflan--dport $port -s $localnet -m state --state NEW -j ACCEPT
#Services-Accept (TCP / WAN)
#iptables -A INPUT -p tcp -i $ifwan --dport $port -m state --state NEW --syn -j ACCEPT
#Services-Accept (UDP / WAN)
#iptables -A INPUT -p udp -i $ifwan --dport $port -m state --state NEW -j ACCEPT

#Services-Accept (ICMP)
iptables -A INPUT -p icmp --icmp-type echo-request -s $localnet -j ACCEPT

#Loopback
iptables -A INPUT -i lo -j ACCEPT

#Default LOG
iptables -A INPUT ! -i lo -j LOG --log-prefix "Firewall: Drop Input "

###############
#Filter(OUTPUT)
###############
iptables -A OUTPUT -m state --state INVALID -j LOG --log-prefix "Firewall: Invalid Output "
iptables -A OUTPUT -m state --state INVALID -j DROP

################
#Filter(FORWARD)
################
#Invalid
iptables -A FORWARD -m state --state INVALID -j LOG --log-prefix "Firewall: Invalid Forward "
iptables -A FORWARD -m state --state INVALID -j DROP
#Anti-Spoof Rule
iptables -A FORWARD -i $iflan ! -s $localnet -j LOG --log-prefix "Firewall: Spoofed Packet "
iptables -A FORWARD -i $iflan ! -s $localnet -j DROP

##################
#Nat - PostRouting
##################
iptables -t nat -A POSTROUTING -o $ifwan -j MASQUERADE

}
stop (){
#Set permissive defaults
#Policy
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
#Clean
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
#Masquerading
iptables -t nat -A POSTROUTING -j MASQUERADE

}
case $1 in
start) start;;
stop) stop;;
restart) stop;start;;
*) echo "Use";;
esac


Você pode modificar ele como quiser, mas creio que mudando o nome das interfaces e a rede para seu case, já vai funcionar. É indispensável que seu servidor acesse a internet.
Nesse caso, não há NAT, os hosts não irão navegar a não ser pelo proxy.

Pra proxy transparente, muda a configuração do squid e você tem que adicionar as regras de compartilhamento de conexão e ativar o encaminhamento de pacotes do kernel.
Além disso, se faz esta regra de prerouting que você estava usando, onde todos os pacotes que chegam na porta 80 são redirecionados para a 3128 (do squid).

Cara, pra não ter esse trabalho todo, já pensou em usar PFSense? É bem intuitivo e tranquilo de configurar. Nele tem mais features e ele é mais estável (com kernel preparado para este propósito e ainda é um BSD).



Boa tarde amigo. Fiz como disse, porém não consigo nem inicializar o script de firewall. Coloquei o script na pasta init.d/ e configurei o script de inicialização na pasta /system, mas quando tento subir o firewall dá o erro anexo.


8. Re: Proxy não funciona - sem acesso a Internet [RESOLVIDO]

Francisco Iglesias Bretas
figlesias

(usa Debian)

Enviado em 21/06/2021 - 15:32h


Funcionou amigo! Muito obrigado pela ajuda! Grande abraço!!!


9. Re: Proxy não funciona - sem acesso a Internet [RESOLVIDO]

Leandro Silva
LSSilva

(usa Outra)

Enviado em 22/06/2021 - 12:37h

Que bom que deu certo. Marque o tópico como resolvido.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts