Como transformar um proxy transparente em não transparente?

1. Como transformar um proxy transparente em não transparente?

Andrey Capella Feijó
netstryker

(usa Debian)

Enviado em 29/11/2013 - 17:54h

Olá amigos do VOL. Tenho a esperança de que possam me ajudar. A situação é a seguinte. Tenho um proxy transparente rodando perfeitamente no Debian Wheezy e por causa do maldito UltraSurf e por outras razões de segurança preciso transformar esse proxy em "não transparente". Antes de mais nada quero avisar que não adianta me indicar outros tópicos do VOL porque já li todos e nenhum deles me ajudou a resolver o meu problema. Vamos aos detalhes para que entendam o meu cenário:

1) Minha topologia de rede está assim:
-> Modem (Virtua) roteado > Roteador > Servidor Proxy > Switch > Estações de trabalho
Obs.: Não falemos sobre a minha topologia porque tudo está funcionando perfeitamente, inclusive o acesso remoto externo ao servidor por SSH via PuTTY usando o DDNS do no-ip.org.

2) O meu Servidor Proxy está com duas interfaces de rede configuradas como eth1 e eth2 em "/etc/udev/rules.d/70-persistent-net.rules" e ambas as interfaces estão com os seus respectivos MAC's amarrados no "iftab". A interface eth1 é o proxy/rede interna obviamente configurada como static (gateway 192.168.0.1). A interface eth2 é a internet que vem do roteador e está configurada por DHCP. O gateway do roteador é 192.168.1.1, logo, o "/etc/resolv.conf" está resolvendo automaticamente o DNS para 192.168.1.1.


ALGUMAS CONSIDERAÇÕES IMPORTANTES:

A) Tudo que tenho desenvolvido no servidor proxy é com base no livro do Carlos Marimoto. É claro que também tenho pesquisado muita coisa no VOL e em outros sites para comparar e escolher as melhores soluções para as minhas necessidades.

B) Estou com o apache2 instalado e rodando por causa do SARG, ambos rodando perfeitamente. Estou usando o path padrão "/var/www".

C) O perfil do meu proxy é radical, DENY para tudo exceto para os sites que estão liberados em "/etc/squid/rules-da/sites_permitidos.txt" na acl sites_permitidos.


MEUS PROBLEMAS COM O PROXY "NÃO TRANSPARENTE" SÂO:

1) Criei o script para usar o WPAD em "/var/www/wpad.dat", configurei nos browsers e funcionou perfeitamente, porém, ao tentar automatizar o WPAD instalando e configurando o "isc-dhcp-server" e o "bind9", se eu tentar configurar os browsers para descoberta automática de proxy não funciona. Funciona somente se eu configurar manualmente ou se eu configurar pelo script "http://192.168.0.1/wpad.dat". Eu realmente preciso do WPAD funcionando para a descoberta automática de proxy na minha rede. Depois do insucesso eu fiquei tão irritado que desinstalei o "isc-dhcp-server" e o "bind9".

2) O UltraSurf parou de funcionar como eu precisava, porém, o Skype e o Teamviewer não funcionam mais. Para piorar ainda mais, nos mail managers das estações de trabalho o SMTP e o POP dão erro e obviamente não estão mais enviando e recebendo mensagens. Tentei criar várias regras no iptables para liberar as portas, tudo sem sucesso. É impossível trabalhar sem e-mails e no caso da minha rede, não ter o Skype e o Teamviewer funcionando também, pois, ambos são de necessidades operacionais essenciais.


OBSERVAÇÕES IMPORTANTES:

1) Conforme eu já citei acima, no momento o "isc-dhcp-server" e o "bind9" não estão instalados, porém, eu preciso fazer com que o WPAD funcione para a descoberta automática de proxy.

2) Pelo que andei pesquisando, para que o proxy seja realmente "não transparente" as configurações "iptables -t nat -A POSTROUTING -o $ifinternet -j MASQUERADE" e "iptables -t nat -A PREROUTING -i $ifproxy -p tcp --dport 80 -j REDIRECT --to-port 3128" não podem estar ativas no iptables. Isso está correto!?

Conforme vocês verão nas minhas configurações abaixo, essas linhas estão comentadas e as variáveis "$ifinternet" e "$ifproxy" são respectivamente minha "eth2" (internet) e "eth1" (proxy/rede interna).


ABAIXO COMO ESTÂO OS MEUS ARQUIVOS DE CONFIGURAÇÃO:

===== "/etc/network/interfaces" ============================

# /etc/network/interfaces

# The loopback network interface
auto lo
iface lo inet loopback

# REDE INTERNA DA EMPRESA: Servidor -> Switch da Rede -> Estações de Trabalho
auto eth1
allow-hotplug eth1
iface eth1 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255

# INTERNET: Modem -> Roteador -> Servidor
auto eth2
allow-hotplug eth2
iface eth2 inet dhcp


===== Script de firewall ============================

#! /bin/bash

### BEGIN INIT INFO
# Provides: netset
# Required-Start: squid network-manager
# Required-Stop: squid network-manager
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Inicia o proxy e o firewall
# Description: Inicia o proxy, firewall e compartilhamento de internet
### END INIT INFO

########################
# DECLARANDO VARIÁVEIS #
########################

# Interface do proxy
ifproxy="eth1"

# Interface da internet
ifinternet="eth2"

# EX: Rede interna
iflan="192.168.0.0/24"

################
# FUNÇÃO START #
################

start_netset() {
# EX: LIMPANDO AS REGRAS CRIADAS ANTERIORMENTE
# EX: Limpando a tabela filter
iptables -F
# EX: Limpando a tabela NAT
iptables -t nat -F
# EX: Limpando a tabela mangle
iptables -t mangle -F

# Ativando o NAT do iptables
modprobe iptable_nat

# Ativando o roteamento da conexão entre as interfaces
echo 1 > /proc/sys/net/ipv4/ip_forward

# Ativando o roteamento do proxy (transparente)
# Para usar o proxy normal e bloqueio do UltraSurf comentar para desativar
# iptables -t nat -A POSTROUTING -o $ifinternet -j MASQUERADE

# Bloqueando resposta do servidor ao PING
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

# Ativando proteção contra IP spoofing
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
iptables -A INPUT -m state --state INVALID -j DROP

# Autorizando pacotes da interface de loopback e rede local
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i $ifproxy -j ACCEPT

# Abrindo a porta 22 para conexão remota interna e externa via SSH
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# EX: Abrindo a porta 10000 para conexão remota interna via Webmin
iptables -A INPUT -p tcp -i $ifproxy --dport 10000 -j ACCEPT
# EX: Abrindo a porta do Squid para a rede interna
iptables -A INPUT -p tcp -i $ifproxy --dport 3128 -j ACCEPT

# Bloqueando tentativas de conexão provenientes da Internet
iptables -A INPUT -p tcp --syn -j DROP

# EX: Liberandos as portas 80 e 443 apenas para o localhost
iptables -A OUTPUT -p tcp -m multiport --dports 80,443 -j ACCEPT

# EX: Liberando FTP para o localhost
iptables -A OUTPUT -p tcp -m multiport --dports 20,21 -j ACCEPT
iptables -A OUTPUT -p udp -m multiport --dports 20,21 -j ACCEPT

# EX: Descartando pacotes inválidos
iptables -A FORWARD -m state --state INVALID -j DROP
# EX: Aceitando a passagem de pacotes de conexões já estabelecidas
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

# EX: Liberando portas de e-mail POP3 e SMTP
iptables -A FORWARD -p tcp -m multiport --dports 25,110,465,587,995 -j ACCEPT
iptables -A FORWARD -p udp -m multiport --dports 25,110,587,995 -j ACCEPT

# Ativando o Proxy Transparente
# Para usar o proxy normal comentar para desativar
# iptables -t nat -A PREROUTING -i $ifproxy -p tcp --dport 80 -j REDIRECT --to-port 3128
}

###############
# FUNÇÃO STOP #
###############

stop_netset() {
# Limpando a tabela filter
iptables -F
# Limpando a tabela NAT
iptables -F -t nat
# EX: Limpando a tabela mangle
iptables -t mangle -F

# EX: Ativando o roteamento da conexão entre as interfaces
echo 1 > /proc/sys/net/ipv4/ip_forward

# EX: Ativando o roteamento do proxy (transparente)
# EX: Para usar o proxy normal e bloqueio do UltraSurf comentar para desativar
# iptables -t nat -A POSTROUTING -o $ifinternet -j MASQUERADE
}

#################
# FUNÇÃO STATUS #
#################

status_netset() {
clear
iptables -L -v -n --line-numbers
echo
}

case "$1" in
"start") start_netset ;;
"stop") stop_netset ;;
"restart") stop_netset; start_netset ;;
"status") status_netset ;;
*) echo "Usar os parametros start, stop ou restart"
esac

exit 0


===== "/etc/squid/squid.conf" ============================

####### CONFIGURAÇÕES DO SQUID #######
####### PROXY DENY ALL (DA) #######

# Ativa o proxy transparente
# http_port 3128 transparent
# Ativa o proxy normal
http_port 3128

# Nome do servidor
visible_hostname servidor-proxy

# Idioma das mensagens de erro
error_directory /usr/share/squid/errors/Portuguese/

####### CONFIGURAÇÕES DE CACHE #######
# Deve ser 1/3 da RAM do servidor
cache_mem 1365 MB
maximum_object_size_in_memory 64 KB
maximum_object_size 1024 MB
minimum_object_size 0 KB
cache_swap_low 90
cache_swap_high 95
cache_dir ufs /var/spool/squid 5120 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

####### ACL's PADRÃO #######
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 redelocal src 192.168.0.0/24
acl SSL_ports port 443 563
acl Safe_ports port 21 70 80 210 443 488 563 591 777 901 1025-65535
acl purge method PURGE
acl CONNECT method CONNECT

####### ACL's CUSTOMIZADAS #######
# Regras com permissões gerais
acl itau url_regex -i itau
acl caixa dstdomain .caixa.gov.br
acl macs_liberados arp "/etc/squid/rules-da/macs_liberados.txt"
acl sites_permitidos url_regex -i "/etc/squid/rules-da/sites_permitidos.txt"

# Regras de bloqueio de usuário
acl macs_bloqueados arp "/etc/squid/rules-da/macs_bloqueados.txt"

# Regras de liberação temporária
acl almoco time 12:00-13:00
acl sites_permitidos_almoco url_regex -i "/etc/squid/rules-da/sites_permitidos_almoco.txt"

# Regras com proibições gerais
acl extensoes_proibidas urlpath_regex -i "/etc/squid/rules-da/extensoes_proibidas.txt"

# Regras de controle de banda
acl banda_liberada arp "/etc/squid/rules-da/banda_liberada.txt"
acl banda_limitada arp "/etc/squid/rules-da/banda_limitada.txt"

####### PERMISSÕES E BLOQUEIOS PADRÃO #######
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

####### PERMISSÔES E BLOQUEIOS DAS ACL's CUSTOMIZADAS #######
# Regras com permissões gerais
always_direct allow itau
always_direct allow caixa
http_access allow macs_liberados

# Regras de bloqueio de extensões para download
http_access deny extensoes_proibidas

# Regras de liberação de sites (exceções)
http_access allow sites_permitidos

# Regras de liberação temporária
http_access allow sites_permitidos_almoco almoco
http_access deny sites_permitidos_almoco

# Regras de bloqueio de usuários
http_access deny macs_bloqueados

# Regras de controle de banda
delay_pools 2
delay_class 1 2
delay_parameters 1 -1/-1 -1/-1
delay_access 1 allow banda_liberada
delay_class 2 2
delay_parameters 2 -1/-1 204800/204800
delay_access 2 allow banda_limitada

####### PERMISSÃO DE REDE LOCAL E SERVIDOR #######
http_access allow localhost
http_access allow redelocal

####### BLOQUEIO DE USUÁRIOS FORA DA REDE #######
# Definir como "http_access allow all" para permitir
http_access deny all


  


2. Re: Como transformar um proxy transparente em não transparente?

Estefanio Brunhara
stefaniobrunhara

(usa CentOS)

Enviado em 29/11/2013 - 18:17h

netstryker escreveu:


2) Pelo que andei pesquisando, para que o proxy seja realmente "não transparente" as configurações "iptables -t nat -A POSTROUTING -o $ifinternet -j MASQUERADE" e "iptables -t nat -A PREROUTING -i $ifproxy -p tcp --dport 80 -j REDIRECT --to-port 3128" não podem estar ativas no iptables. Isso está correto!?

# Ativando o Proxy Transparente
# Para usar o proxy normal comentar para desativar
# iptables -t nat -A PREROUTING -i $ifproxy -p tcp --dport 80 -j REDIRECT --to-port 3128




Sim, Esta correto o que você fez

esta linha que você comentou fez parar os e-mails
# iptables -t nat -A POSTROUTING -o $ifinternet -j MASQUERADE


Tente isto para resolver o problema dos emails

iptables -t nat -A POSTROUTING -p tcp -m multiport --dport 25,110,465,587,995 -j MASQUERADE


Então agora só falta o wpad.dat p/ funcionar?



3. Re: Como transformar um proxy transparente em não transparente?

Andrey Capella Feijó
netstryker

(usa Debian)

Enviado em 29/11/2013 - 18:38h

Com relação a configuração do iptables para o proxy "não transparente" OK, ainda bem que está correta, porém, ainda preciso saber como liberar no iptables as portas para o uso dos e-mails (SMTP e POP). Preciso da liberação do Skype e do Teamviewer também. Conforme eu falei no post, esses serviços pararam de funcionar depois que mudei o proxy de transparente para "não transparente". É importante ressaltar que eu configurei manualmente o proxy no Skype e no Teamviewer da mesma forma que fiz nos browsers e mesmo assim não funciona.

Com relação a navegação nos browsers está tudo OK, as regras do squid estão funcionando perfeitamente.

As minhas regras do iptables para a liberação de portas para os e-mails, Skype e Teamviewer estão corretas!?

Com relação a sua última pergunta sim. Ainda preciso fazer o WPAD funcionar no modo "descoberta automática de proxy", pois, como eu expliquei no post, o script "wpad.dat" funciona corretamente quando configurado nos navegadores.

Desde já agradeço.


4. Re: Como transformar um proxy transparente em não transparente?

Estefanio Brunhara
stefaniobrunhara

(usa CentOS)

Enviado em 29/11/2013 - 18:43h

Vamos por parte!


Esta linha que você comentou

# iptables -t nat -A POSTROUTING -o $ifinternet -j MASQUERADE

Troca pela linha abaixo, e vê se os email funcionam

iptables -t nat -A POSTROUTING -p tcp -m multiport --dport 25,110,465,587,995 -j MASQUERADE




5. Re: Como transformar um proxy transparente em não transparente?

Andrey Capella Feijó
netstryker

(usa Debian)

Enviado em 29/11/2013 - 21:01h

Estou testando...

O Teamviewer e o Skype já estão funcionando 100%. O UltraSurf não consegue se conectar mais, como eu precisava.

No caso das portas POP e SMTP a coisa está mais complicada, Mesmo testando a regra sugerida continua dando erro no Outlook.


6. Re: Como transformar um proxy transparente em não transparente?

Buckminster
Buckminster

(usa Debian)

Enviado em 29/11/2013 - 21:46h

netstryker escreveu:

Estou testando...

O Teamviewer e o Skype já estão funcionando 100%. O UltraSurf não consegue se conectar mais, como eu precisava.

No caso das portas POP e SMTP a coisa está mais complicada, Mesmo testando a regra sugerida continua dando erro no Outlook.


Acrescente as seguintes regras na posição abaixo:

# EX: Abrindo a porta do Squid para a rede interna
iptables -A INPUT -p tcp -i $ifproxy --dport 3128 -j ACCEPT

iptables -A INPUT -p tcp -s $iflan --dport 110 -j ACCEPT
iptables -A INPUT -p tcp -s $iflan --dport 25 -j ACCEPT
iptables -A INPUT -p tcp -s $iflan --dport 587 -j ACCEPT
# iptables -A INPUT -p tcp -s $iflan --dport 53 -j ACCEPT << primeiro teste com essas duas regras comentadas, caso não funcionar, descomente elas e teste de novo.
# iptables -A INPUT -p udp -s $iflan --source-port 53 -j ACCEPT


Aqui tem uma configuração bastante interessante de proxy automático:
http://www.vivaolinux.com.br/artigo/Wpaddat-com-Proxy-Especifico-por-Rede/


7. Re: Como transformar um proxy transparente em não transparente?

Andrey Capella Feijó
netstryker

(usa Debian)

Enviado em 29/11/2013 - 23:01h

Eu já estava usando a regra "iptables -A INPUT -p tcp -i $ifproxy --dport 3128 -j ACCEPT".

Pouco antes de eu ver a sua resposta eu tinha testado essas regras e funcionou:
====================
# Liberando portas de e-mail POP e SMTP
iptables -A INPUT -s $iflan -p tcp -m multiport --dport 25,110,465,587,993,995 -j ACCEPT
iptables -A INPUT -s $iflan -p udp -m multiport --dport 25,110,587,995 -j ACCEPT
iptables -t nat -A POSTROUTING -s $iflan -p tcp -m multiport --dport 25,110,465,587,993,995 -j MASQUERADE
iptables -t nat -A POSTROUTING -s $iflan -p udp -m multiport --dport 25,110,587,995 -j MASQUERADE
iptables -t nat -A POSTROUTING -s $iflan -p tcp --dport 53 -j MASQUERADE
iptables -t nat -A POSTROUTING -s $iflan -p udp --dport 53 -j MASQUERADE

# EX: Liberando portas de DNS
iptables -A FORWARD -p tcp --dport 53 -j ACCEPT
iptables -A FORWARD -p udp --dport 53 -j ACCEPT
====================

Como eu disse, está funcionando perfeitamente, porém, para ficar mais organizado, você me aconselharia remover alguma regra acima se a mesma for desnecessária ou substituir alguma pelas que você sugeriu!?

Não quero deixar o meu script de firewall bagunçado e com regras inúteis ou redundantes.

Obrigado pela ajuda anterior.


8. Re: Como transformar um proxy transparente em não transparente?

Buckminster
Buckminster

(usa Debian)

Enviado em 30/11/2013 - 01:41h

netstryker escreveu:

Eu já estava usando a regra "iptables -A INPUT -p tcp -i $ifproxy --dport 3128 -j ACCEPT".

Pouco antes de eu ver a sua resposta eu tinha testado essas regras e funcionou:
====================
# Liberando portas de e-mail POP e SMTP
iptables -A INPUT -s $iflan -p tcp -m multiport --dport 25,110,465,587,993,995 -j ACCEPT
iptables -A INPUT -s $iflan -p udp -m multiport --dport 25,110,587,995 -j ACCEPT
iptables -t nat -A POSTROUTING -s $iflan -p tcp -m multiport --dport 25,110,465,587,993,995 -j MASQUERADE
iptables -t nat -A POSTROUTING -s $iflan -p udp -m multiport --dport 25,110,587,995 -j MASQUERADE
iptables -t nat -A POSTROUTING -s $iflan -p tcp --dport 53 -j MASQUERADE
iptables -t nat -A POSTROUTING -s $iflan -p udp --dport 53 -j MASQUERADE

# EX: Liberando portas de DNS
iptables -A FORWARD -p tcp --dport 53 -j ACCEPT
iptables -A FORWARD -p udp --dport 53 -j ACCEPT
====================

Como eu disse, está funcionando perfeitamente, porém, para ficar mais organizado, você me aconselharia remover alguma regra acima se a mesma for desnecessária ou substituir alguma pelas que você sugeriu!?

Não quero deixar o meu script de firewall bagunçado e com regras inúteis ou redundantes.

Obrigado pela ajuda anterior.


Defina as políticas padrões, pois se você não definir o Iptables deixa todas elas como ACCEPT:

# Ativando o NAT do iptables
modprobe iptable_nat

iptables -P INPUT DROP # iptables a política padrão da chain INPUT é proibir tudo.
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

Depois você vai liberando e/ou bloqueando o que desejar.

E veja o que diz o Manuel:
"masquerade :: Este alvo só é válido na tabela nat na chain postrouting. Ele só deve ser utilizado com IP atribuído dinamicamente (dialup): se você tem um endereço IP estático, você deve usar o alvo snat."

Apesar de que no teu caso, o IP a que se refere é o IP da placa de entrada da internet e ele está dinâmico.
Mas, por questão de segurança, acredito ser melhor você colocar as políticas de liberação de portas como INPUT e/ou OUTPUT, pois você está fazendo mascaramento em várias portas.

Segue link para o Manuel do Iptables traduzido:
http://www.vivaolinux.com.br/artigo/Manual-do-IPtables-Comentarios-e-sugestoes-de-regras?pagina=1

E segue um link para te auxiliar:
http://www.vivaolinux.com.br/artigo/Redes-de-Computadores-IPtables-Enderecos-IPs-Explicacoes-basicas...


9. Re: Como transformar um proxy transparente em não transparente?

Andrey Capella Feijó
netstryker

(usa Debian)

Enviado em 30/11/2013 - 15:33h

Com relação a política padrão seguirei a sua sugestão.

Com relação ao que você falou sobre o "snat":
============================
E veja o que diz o Manuel:
"masquerade :: Este alvo só é válido na tabela nat na chain postrouting. Ele só deve ser utilizado com IP atribuído dinamicamente (dialup): se você tem um endereço IP estático, você deve usar o alvo snat."
============================

Obs.: Muito bom o post "Manual do IPtables - Comentários e sugestões de regras". Vou estudá-lo.

Como ficaria a regra com o "snat" e qual ou quais regras eu deveria substituir por ela!?




10. Re: Como transformar um proxy transparente em não transparente?

Guilherme
GuilhermeBR

(usa CentOS)

Enviado em 30/11/2013 - 18:00h

Vamos por partes,

No firewall:

A única diferença no iptables, de um proxy transparente, para um não transparente:

1) Não redirecionar (NAT) a porta 80, para a 3128 (do Squid):
- Ex: iptables -t nat -A PREROUTING -i eth0 -p tcp -j REDIRECT --to-port 3128 (Não deve ter esse redirecionamento).

2) Na chain FORWARD, não liberar porta 80 e 443. Pois qdo vc passa um proxy p/ autenticado, é ele que controla essas portas. Vou postar minha chain INPUT e FORWARD. A minha só tem isso:


# INPUT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state INVALID -j DROP

iptables -A INPUT -i lo -j ACCEPT # ACESSO LOCALHOST
iptables -A INPUT -p tcp --dport PORTA_SSH_AQUI -j ACCEPT # SSH
iptables -A INPUT -s $intnet -j ACCEPT # REDE INTERNA PRO FIREWALL

# FORWARD
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state INVALID -j DROP

iptables -A FORWARD -s $intnet -p tcp --dport 110 -j ACCEPT # E-MAILS POP
iptables -A FORWARD -s $intnet -p tcp --dport 587 -j ACCEPT # E-MAILS SMTP


No proxy:

Como vc pretende fazer a autenticação? Autenticação no proxy, ou no Active Directory (Windows Server)?


11. Re: Como transformar um proxy transparente em não transparente?

Buckminster
Buckminster

(usa Debian)

Enviado em 30/11/2013 - 20:20h

netstryker escreveu:

Com relação a política padrão seguirei a sua sugestão.

Com relação ao que você falou sobre o "snat":
============================
E veja o que diz o Manuel:
"masquerade :: Este alvo só é válido na tabela nat na chain postrouting. Ele só deve ser utilizado com IP atribuído dinamicamente (dialup): se você tem um endereço IP estático, você deve usar o alvo snat."
============================

Obs.: Muito bom o post "Manual do IPtables - Comentários e sugestões de regras". Vou estudá-lo.

Como ficaria a regra com o "snat" e qual ou quais regras eu deveria substituir por ela!?



Não precisa colocar como snat nesse caso. Coloque elas como sugeri anteriormente.

# EX: Abrindo a porta do Squid para a rede interna
iptables -A INPUT -p tcp -i $ifproxy --dport 3128 -j ACCEPT

iptables -A INPUT -p tcp -s $iflan --dport 110 -j ACCEPT
iptables -A INPUT -p tcp -s $iflan --dport 25 -j ACCEPT
iptables -A INPUT -p tcp -s $iflan --dport 587 -j ACCEPT
# iptables -A INPUT -p tcp -s $iflan --dport 53 -j ACCEPT << primeiro teste com essas duas regras comentadas, caso não funcionar, descomente elas e teste de novo.
# iptables -A INPUT -p udp -s $iflan --source-port 53 -j ACCEPT

Ou faça assim:

iptables -A INPUT -s $iflan -p tcp -m multiport --dport 25,110,465,587,993,995 -j ACCEPT
iptables -A INPUT -d $iflan -p tcp -m multiport --dport 25,110,465,587,993,995 -j ACCEPT

As duas regras acima liberam o tráfego na ida e na volta. Porém, caso você queira liberar somente na ida (-s) ou somente na volta (-d) também pode fazer. Depende do que você quer. Às vezes precisa liberar nos dois sentidos, às vezes não.

Veja bem, o Iptable lê as regras de cima para baixo no script. Caso uma regra seja conflitante com outra mais abaixo, valerá a que está antes.
O importante é que tudo esteja funcionando a contento.
Tanto as configurações do Iptables quanto do Squid são coisas bem pessoais, vamos assim dizer, pois dependem do que se quer e dependem da rede de cada um.

E sobre autenticação no Squid vale o comentário 10 do GuilhermeBR.


12. Re: Como transformar um proxy transparente em não transparente?

Andrey Capella Feijó
netstryker

(usa Debian)

Enviado em 30/11/2013 - 23:33h

GuilhermeBR escreveu:

Vamos por partes,

No firewall:

A única diferença no iptables, de um proxy transparente, para um não transparente:

1) Não redirecionar (NAT) a porta 80, para a 3128 (do Squid):
- Ex: iptables -t nat -A PREROUTING -i eth0 -p tcp -j REDIRECT --to-port 3128 (Não deve ter esse redirecionamento).

2) Na chain FORWARD, não liberar porta 80 e 443. Pois qdo vc passa um proxy p/ autenticado, é ele que controla essas portas. Vou postar minha chain INPUT e FORWARD. A minha só tem isso:


# INPUT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state INVALID -j DROP

iptables -A INPUT -i lo -j ACCEPT # ACESSO LOCALHOST
iptables -A INPUT -p tcp --dport PORTA_SSH_AQUI -j ACCEPT # SSH
iptables -A INPUT -s $intnet -j ACCEPT # REDE INTERNA PRO FIREWALL

# FORWARD
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state INVALID -j DROP

iptables -A FORWARD -s $intnet -p tcp --dport 110 -j ACCEPT # E-MAILS POP
iptables -A FORWARD -s $intnet -p tcp --dport 587 -j ACCEPT # E-MAILS SMTP


No proxy:

Como vc pretende fazer a autenticação? Autenticação no proxy, ou no Active Directory (Windows Server)?


Oi GuilhermeBR.

Eu não pretendo fazer o proxy autenticado. Vou querer o proxy apenas como "não transparente" e usar o WPAD como automático (descoberta automática de proxy). Com a ajuda de vocês mais algumas coisas que eu já tinha feito o proxy está funcionando como eu preciso, porém, ainda não consegui fazer o WPAD funcionar como automático, só pelo script "http://192.168.0.1/wpad.dat". Esse IP é gateway da minha rede interna/proxy.



01 02 03



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts