Squid transparente não funciona

1. Squid transparente não funciona

Silas Matos
silasmg

(usa Debian)

Enviado em 11/05/2010 - 16:13h

Olá pessoal, é o seguinte, estou montando um servidor Debian x86, que está rodando um banco em Firebird 2.0, e instalei o Apache2, o Samba, o VNC e também o Squid.

Minha primeira dúvida é referente as portas, não sei se o firewall que configurei está rodando legal, o e-mail pelo outlook não funciona (pop3), o que normalmente funciona pela conexão direta, o Squid não fica transparente e quando eu coloco os comandos >

httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

ele retorna o erro

unrecognized: 'httpd_accel_host virtual'
unrecognized: 'httpd_accel_port 80'
unrecognized: 'httpd_accel_with_proxy on'
unrecognized: 'httpd_accel_uses_host_header on'

Tentei também deixar somente o "trasparent" não funciona.

Quando executo o comando "netstat -tulpn | grep 5900" ele retorna:

tcp 0 0 0.0.0.0:5900 0.0.0.0:* OUÇA 3316/x11vnc

Segue o arquivo do firewall:

### Interfaces de rede
EXT=eth2
INT=eth0

echo "Ativando Regras do Firewall"

### Exclui todas as regras
iptables -t nat -F
iptables -t mangle -F
iptables -t filter -F

### Exclui cadeias customizadas
iptables -X

### Zera os contadores das cadeias
iptables -t nat -Z
iptables -t mangle -Z
iptables -t filter -Z

### Define a política padrão do firewall
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

### Regras PREROUTING
# Redireciona as conexões vindas da rede interna na porta 80 para a porta 3128
iptables -t nat -A PREROUTING -i $INT -p tcp --dport 80 -j REDIRECT --to-port 3128

# Redireciona as conexões vindas da rede externa na porta 80 para a porta 3128
iptables -t nat -A PREROUTING -i $EXT -p tcp --dport 80 -j REDIRECT --to-port 3128

### Regras INPUT

### informa os estados que devem ser checados (Conexão estabelecida
# ou Relacionada). Caso o estado da conexão seja uma dessas 2, então
# ele vai aceitar.
iptables -A INPUT -m state --state ESTABLISHED, RELATED -j ACCEPT

# Libera o INPUT para a interface loopback, ou seja, a própria máquina
iptables -A INPUT -i lo -j ACCEPT

# Permite icmp 0 (resposta de Echo)
iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT

# Permite icmp 8 (Pedido de Echo)
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT

# Permite o acesso ao servidor usando SSH
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# Permite o acesso ao servidor usando FTP
iptables -A INPUT -p tcp --dport 21 -j ACCEPT

# Libera o OPENVPN
iptables -A INPUT -p tcp --dport 1194 -j ACCEPT

# Permite o acesso ao servidor usando SMTP
iptables -A INPUT -p tcp --dport 25 -j ACCEPT

# Permite o acesso ao servidor usando POP
iptables -A INPUT -p tcp --dport 110 -j ACCEPT

# Permite o acesso ao servidor usando VNC
iptables -A INPUT -p tcp --dport 5800 -j ACCEPT

# Permite o acesso ao servidor usando VNC
iptables -A INPUT -p tcp --dport 5900 -j ACCEPT

# Permite o acesso ao servidor usando Firebird
iptables -A INPUT -p tcp --dport 3050 -j ACCEPT

# Permite o acesso ao servidor usando Firebird
iptables -A INPUT -p tcp --dport 3051 -j ACCEPT

# Permite o acesso ao servidor usando Firebird
iptables -A INPUT -p tcp --dport 23 -j ACCEPT


# Permite o acesso ao servidor usando Apache
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT

# Permite o acesso ao servidor usando Apache
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

# Permite o acesso ao servidor usando Hamachi
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# Permite o acesso ao servidor usando Hamachi
iptables -A INPUT -p tcp --dport 32976 -j ACCEPT

# Permite o acesso ao servidor usando Hamachi
iptables -A INPUT -p tcp --dport 12975 -j ACCEPT

### Regras FORWARD
iptables -A FORWARD -m state --state ESTABLISHED, RELATED -j ACCEPT
iptables -A FORWARD -i $INT -o $EXT -p icmp -j ACCEPT

# Libera o tráfego de pacotes da rede interna para a rede externa na porta 25 (smtp)
iptables -A FORWARD -i $INT -o $EXT -p tcp --dport 25 -j ACCEPT

# Libera o tráfego de pacotes da rede interna para a rede externa na porta 22 (ssh)
iptables -A FORWARD -i $INT -o $EXT -p tcp --dport 22 -j ACCEPT

# Libera o tráfego de pacotes da rede interna para a rede externa na porta 21 (ftp)
iptables -A FORWARD -i $INT -o $EXT -p tcp --dport 21 -j ACCEPT

# Libera o tráfego de pacotes da rede interna para a rede externa na porta 110 (pop)
iptables -A FORWARD -i $INT -o $EXT -p tcp --dport 110 -j ACCEPT

# Libera o tráfego de pacotes da rede interna para a rede externa na porta 443 (ssl)
iptables -A FORWARD -i $INT -o $EXT -p tcp --dport 443 -j ACCEPT

# Libera o tráfego de pacotes da rede interna para a rede externa na porta 3389 (Terminal Server da Microsoft)
iptables -A FORWARD -i $INT -o $EXT -p tcp --dport 3389 -j ACCEPT

# Libera o tráfego de pacotes da rede interna para a rede externa na porta 80 (http)
iptables -A FORWARD -i $INT -o $EXT -p tcp --dport 80 -j ACCEPT

# Libera o tráfego de pacotes da rede externa para a rede interna na porta 3389 (Terminal Server da Microsoft)
iptables -A FORWARD -i $EXT -o $INT -p tcp --dport 3389 -j ACCEPT

# Libera o tráfego de pacotes da rede externa para a rede interna na porta 5900 (VNC)
iptables -A FORWARD -i $EXT -o $INT -p tcp --dport 5900 -j ACCEPT

# Libera o tráfego de pacotes da rede externa para a rede interna na porta 5800 (VNC)
iptables -A FORWARD -i $EXT -o $INT -p tcp --dport 5800 -j ACCEPT

# Libera o tráfego de pacotes da rede externa para a rede interna na porta 3050 (Firebird)
iptables -A FORWARD -i $EXT -o $INT -p tcp --dport 3050 -j ACCEPT

# Libera o tráfego de pacotes da rede externa para a rede interna na porta 3051 (Firebird)
iptables -A FORWARD -i $EXT -o $INT -p tcp --dport 3051 -j ACCEPT

# Libera o tráfego de pacotes da rede interna para a rede externa na porta 23 (Firebird)
iptables -A FORWARD -i $INT -o $EXT -p tcp --dport 23 -j ACCEPT

# Libera o tráfego de pacotes da rede interna para a rede externa na porta 8080 (Apache)
iptables -A FORWARD -i $INT -o $EXT -p tcp --dport 8080 -j ACCEPT

# Libera o tráfego de pacotes da rede interna para a rede externa na porta 80 (Apache)
iptables -A FORWARD -i $INT -o $EXT -p tcp --dport 80 -j ACCEPT

# Libera o tráfego de pacotes da rede interna para a rede externa na porta 12975 (Hamachi)
iptables -A FORWARD -i $INT -o $EXT -p tcp --dport 12975 -j ACCEPT

# Libera o tráfego de pacotes da rede interna para a rede externa na porta 443 (Hamachi)
iptables -A FORWARD -i $INT -o $EXT -p tcp --dport 443 -j ACCEPT

# Libera o tráfego de pacotes da rede interna para a rede externa na porta 32976 (Hamachi)
iptables -A FORWARD -i $INT -o $EXT -p tcp --dport 32976 -j ACCEPT

### Regras OUTPUT
iptables -A OUTPUT -m state --state NEW, ESTABLISHED, RELATED -j ACCEPT

### Regras POSTROUTING
iptables -t nat -A POSTROUTING -o $EXT -j MASQUERADE


E aqui o arquivo de configuração do SQUID:

http_port 3128 transparent

# PROXY TRANSPARENTE
#httpd_accel_host virtual
#httpd_accel_port 80
#httpd_accel_with_proxy on
#httpd_accel_uses_host_header on

hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
cache_mem 128 MB
maximum_object_size 128096 KB
maximum_object_size_in_memory 64 KB
cache_dir ufs /var/spool/squid 2048 16 256
access_log /var/log/squid/access.log squid
hosts_file /etc/hosts
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/senhas
auth_param basic children 5
auth_param basic realm Secretaria da Saúde de Capão da Canoa
auth_param basic credentialsttl 10 minutes
auth_param basic casesensitive off
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320

acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 192.168.1.0/24
acl to_localhost dst 192.168.1.0/24
acl SSL_ports port 80 8017 # http pra sefip
acl SSL_ports port 443 # https
acl SSL_ports port 444 # sefip
acl SSL_ports port 563 # snews
acl SSL_ports port 873 # rsync
acl SSL_ports port 11011 # webmin
acl Safe_ports port 80 # http
acl Safe_ports port 444 8017 # sefip
acl Safe_ports port 2678 # sefip
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 Safe_ports port 873 # rsync
acl Safe_ports port 901 # SWAT
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
http_access deny to_localhost

# CONFIGURAÇÃO DE BLOQUEIO POR HORÁRIO
acl horario src "/etc/squid/horario"
acl hora_negada time SMTWHFA 19:00-23:59
acl hora_negada2 time SMTWHFA 00:00-07:00
http_access deny horario hora_negada
http_access deny horario hora_negada2

# PERMIÇÃO DE ACESSO SEM SENHA
acl ip_sem_auth dst 192.168.1.0/24
http_access allow ip_sem_auth

# SITES PERMITIDOS SEM USO DE SENHA
acl sites_sem_senha dstdom_regex -i "/etc/squid/sites_sem_senha"
http_access allow sites_sem_senha

acl vip proxy_auth "/etc/squid/vip"

# SITES BLOQUEADOS TOTALMENTE PARA QUALQUER USUARIO
acl sites_bloqueados url_regex -i "/etc/squid/sites_bloqueados"
http_access deny sites_bloqueados !vip

# IP COM ACESSO LIBERADO
acl ip_liberados src "/etc/squid/ip_liberados"
http_access allow ip_liberados

# NEGAR ACESSO SEM SENHA
acl senha proxy_auth REQUIRED
http_access deny !senha

# BLOQUEIO E CONFIGURAÇÃO DE USUÁRIOS PERMITIDOS NO MSN
acl msnb1 req_mime_type -i ^application/x-msn-messenger$
acl msn proxy_auth "/etc/squid/msn"
acl msnb2 url_regex -i gateway.dll
acl msnb3 dstdomain src "/etc/squid/msnb"
acl msnb4 url_regex "/etc/squid/msnb2"
http_access deny msnb1 !msn !vip
http_access deny msnb2 !msn !vip
http_access deny msnb3 !msn !vip
http_access deny msnb4 !msn !vip

# USUÁRIOS LIBERADOS
acl usuarios proxy_auth "/etc/squid/usuarios"
http_access allow usuarios
http_access allow vip

# BLOQUEAR ACESSO DE USUÁRIOS NOS SITES COM ACESSO RESTRITO
acl sites_restritos dstdom_regex -i "/etc/squid/sites_restritos"
acl usuarios_restritos proxy_auth "/etc/squid/usuarios_restritos"
http_access allow sites_restritos usuarios_restritos
http_access deny usuarios_restritos !vip

# PERMITIR ACESSO DE USUÁRIOS NOS SITES LIBERADOS
acl ip_dst_liberado dst "/etc/squid/ip_dst_liberado"
http_access allow ip_dst_liberado
acl sites_permitidos dstdom_regex -i "/etc/squid/sites_permitidos"
http_access allow sites_permitidos

# CONFIGURAÇÃO DE BLOQUEIO E PERMIÇÃO DE SITES
acl dom_permitidos dstdom_regex \.br$ \.com$ \.net$ \.org$ \.gov$
http_access deny !dom_permitidos !vip
acl sites_bloqueados2 url_regex -i "/etc/squid/sites_bloqueados2"
http_access deny sites_bloqueados2 !vip
acl sites_bloqueados3 dstdom_regex -i "/etc/squid/sites_bloqueados3"
http_access deny sites_bloqueados3 !vip

# REDE INTERNA
acl rede_interna src 192.168.1.0/24
http_access allow rede_interna

# NEGAR ACESSO AO PROXY PELO RESTO DA REDE
http_access deny all
icp_access allow all

# NOME DO PROXY
cache_mgr cpdsaude@capaodacanoa.rs.gov.br
visible_hostname Proxy Sec. da Saúde
unique_hostname Proxy Sec. da Saúde
coredump_dir /var/spool/squid
extension_methods REPORT MERGE MKACTIVITY CHECKOUT

tcp_outgoing_address 192.168.1.1 !ip_sem_auth



As duas configurações foram copiadas e modificadas de acordo com a necessidade, gostaria de saber se tem algum erro, e como posso resolver os problemas do squid transparente e do outlook que não recebe e-mails.

Se tiverem alguma idéia pra limpar linhas desnecessárias nos arquivos eu aceito.

Outro detalhe, quando dou restart no apache, aparece;

Restarting web server: apache2apache2: Could not reliably determine the server's fully qualified domain name, using 192.168.1.2 for ServerName
... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 192.168.1.2 for ServerName

Estou tentando colocar o apache para a porta 8010


  


2. Re: Squid transparente não funciona

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 11/05/2010 - 16:47h

Vc vai retirar as linhas abaixo do seu squid.conf:

httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

E inserir apenas essa:

http_port 3128 transparent

Assim o seu squid vai ser transparente. Essas linhas ae são do squid antigo (2.6 pra trás) e estão em desuso.


3. Re: Squid transparente não funciona

Silas Matos
silasmg

(usa Debian)

Enviado em 12/05/2010 - 08:45h

Deixei apenas o "http_port 3128 transparent" e não funcionou.
Se eu desmarcar o proxy no navegador ele não navega.
Preciso da transparência. Será que meu iptables não está funcionando corretamente?


4. Re: Squid transparente não funciona

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 12/05/2010 - 08:57h

Retire essa regra e tente d novo:

# Redireciona as conexões vindas da rede externa na porta 80 para a porta 3128
iptables -t nat -A PREROUTING -i $EXT -p tcp --dport 80 -j REDIRECT --to-port 3128


5. Re: Squid transparente não funciona

Silas Matos
silasmg

(usa Debian)

Enviado em 12/05/2010 - 09:34h

Retirei a linha e reiniciei, ainda não navega, e o e-mail em pop continua não recebendo :(
Queria um iptables simples, que tivesse como liberar algumas portas especificas, como os e-mails pop, hamachi, vnc, banco de dados e que a trasparencia do proxy funcionace normalmente.

O interessante é que no navegador posso configurar o proxy tanto para a eth0 (modem 192.168.1.1) quanto pra eth1 (rede 192.168.1.2) que navega normal.


6. Re: Squid transparente não funciona

irado furioso com tudo
irado

(usa XUbuntu)

Enviado em 12/05/2010 - 09:40h

hmmm... como o pop3 NÃO tem qualquer relação com o squid, a suspeita agora recai nas suas regras de iptables, provávelmente com alguma incorreção. Sugestão: REVISE-AS cuidadosamente; eu mesmo faria assim: regras absolutamente simples (duas, três), somente com o squid transparente e NAT e iria acrescentando uma regra por vez. Pra sua comodidade, estabeleça politicas DROP e vá liberando UMA ação por vez.

é demorado - talvez um dia? - mas compensa.

ou então pegue um script qualquer aqui no VOL, adapte-o enquanto vc analisa o seu.

ps: não vou analisar, o seu script tem linhas demais para meu gôsto (risos).

flames > /dev/null


7. Re: Squid transparente não funciona

Silas Matos
silasmg

(usa Debian)

Enviado em 12/05/2010 - 16:23h

Bom, tentei de tudo, removi o firewall, testei instalar o Arno-iptables-firewall, rodou só que não liberou nada, nem o squid, nem o e-mail pop, nem nada.

Se eu tirar o iptables completamente, o que pode acontecer?
As portas vão ficar liberadas? Por exemplo o e-mail pop?
Tenho um programa que se conecta a um servidor com banco de dados, e não está rodando também, o banco é em Sybase 9.0

Outra dúvida, por que motivo não consigo mais pingar o IP do modem? E também não consigo pingar sites (ping www.terra.com.br) a partir das estações.
Por exemplo, o modem (192.168.1.3) está na eth2 (192.168.1.1), e quando dou ping no modem, não responde, aparece o erro "unreachable"
Já removi o arno-iptables-firewall pelo comando "apt-get purge"
Tá dificil deixar esse servidor rodando legal :(
Não sei mais o que fazer.

Detalhe: limpei o squid pra não fazer absolutamente nada, apenas liberar tudo, sem regra alguma. E estou trabalhando em cima do

Lembrando que se remover o servidor e conectar o modem direto no switch ele navega, mas como a rede está pesada, o modem acaba não dando conta.


8. Re: Squid transparente não funciona

Silas Matos
silasmg

(usa Debian)

Enviado em 13/05/2010 - 11:34h

Ajuda


9. quanto ao apache...

Davi Ribeiro
dastyler

(usa Fedora)

Enviado em 13/05/2010 - 11:48h

apenas adicione a linha ao seu /etc/apache2/apache2.conf:

ServerName 192.168.1.2

Quanto a porta configure no seu VirtualHost a porta correta (normalmente configurado em /etc/apache2/sites-enabled/ - pode variar conforme a sua conf) mudando para <VirtualHost *:8010> a respectiva linha.

quanto ao outlook:

Já passei por esse mesmo problema por esquecer de ter setado o ip_forward no firewall:

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



[]´s


10. Re: Squid transparente não funciona

Daniel Cardoso da Conceição
danielconceicao

(usa Ubuntu)

Enviado em 13/05/2010 - 15:20h

Antes de tudo, separe seu BD do Firewall.
Se alguem entrar no seu Firewall ja vai dar de cara com o BD.

Quanto ao proxy, modifique as linhas:

httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

para:

http_port 3128 transparent


11. Tentando ajuda.

Eberson Muenchen
SPH

(usa Debian)

Enviado em 06/12/2010 - 14:18h

Com essas tres regras teu proxy vai transparente com absoluta certeza.
echo "Habilitando IP forwarding..............................................[OK]"
echo 1 > /proc/sys/net/ipv4/ip_forward
# Direcionar porta Para Proxy
echo "Direcionando porta 80 para 3128........................................[OK]"
iptables -t nat -A PREROUTING -i eth2 -p tcp --dport 80 -j REDIRECT --to-port 3128
# compartilha a web na rede interna
echo "Compartilhando a net com a rede interna................................[OK]"
iptables -t nat -A POSTROUTING -s 192.168.x.x/y -o eth2 -j MASQUERADE

No squid.conf vai
http_port 3128 transparent

com certeza assim funciona.
Obs.: Teu script ta mto "poluido" tenta usar menos linhas aplicando regras semelhantes numa mesma linha. Particularmente achei mto enorme teu FW.
para teste renomeie esse teu fw (coloca um .old no final) e cria novo arquivo com essas regrinhas acima e testa, dapois vai acertando as regras.

Att Eberson Muenchen






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts