Proxy transparent / Iptables

1. Proxy transparent / Iptables

Adivar dos Santos
W@lyk

(usa Outra)

Enviado em 31/05/2011 - 10:58h

Pessoal,bom dia!

Sou iniciante no Linux e resolvi me aventurar à 1 semana para configurar um Servidor-Proxy transparent.
Até então consegui com muita pesquisa configurar o Squid no Ubuntu, porém estou enfrentando alguns problemas com o firewall.
Explico:
Tenho um micro com o Ubuntu (versão 9.10) e Squid (versão 2.7) instalados. A 'eth0' é minha placa que recebe o sinal de internet e a 'eth1' conectada na rede local.

1º Teste ( configurando o IP do Servidor-Proxy como gateway e Proxy no browser da estação)
O controle de banda, bloqueio de sites e palavras está funcionando certinho nas estações que estão atrás do proxy. Contudo, quando tento usar o Proxy transparent, 'Acesso Remoto', 'Outlook', 'MSN', etc, nas estações não funcionam.

2º Teste ( Colocando um Router como gateway e usando o Ubuntu somente com Proxy no browser da estação)
O controle de banda, bloqueio de sites e palavras está funcionando certinho. O 'Acesso Remoto', ou 'Outlook', 'MSN', etc, nas estações Também funcionam normalmente. Porém o Proxy Transparent não funciona.

Minha dúvida é baseada na primeira situação, pois quero usar o Servidor Proxy como Firewall também e não estou conseguindo configurar o Iptables.
Não tenho conhecimento de criar script e nem como rodar.

Segue meu arquivo squid.conf:
Obs: estou fazendo tudo logado como ‘root’

SQUID.CONF

http_port 3128 transparent
visible_hostname xxxx
############# CONFIG CACHE ##############
cache_mem 400 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 10048 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

########### DECLARANDO ACL #####################

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 SSL_ports port 443 563
acl Safe_ports port 21 80 443 563 70 210 280 488 59 777 901 3389 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

acl site dstdomain caixa.gov caixa.com
always_direct allow site

# REGRAS DE BLOQUEIOS

# ACESSO TOTALMENTE LIBERADO
acl acessototal src "/etc/squid/acessototal"
http_access allow acessototal

# SITES BLOQUEADOS
acl sitesbloqueado url_regex -i "/etc/squid/sitesbloqueado"
acl sitesliberado url_regex -i "/etc/squid/sitesliberado"
http_access deny sitesbloqueado !sitesliberado

# EXTENSÕES BLOQUEADAS
acl downloadbloqueado url_regex -i "/etc/squid/downloadbloqueado"
acl downloadliberado url_regex -i "/etc/squid/downloadliberado"
http_access deny downloadbloqueado !downloadliberado

error_directory /usr/share/squid/errors/pt


# REDE COM CONTROLE DE BANDA
acl redelocal src 192.168.1.0/24
delay_pools 1
delay_class 1 2
delay_parameters 1 224688/224688 35384/35384
delay_access 1
allow redelocal
http_access
allow localhost
http_access allow redelocal

http_access deny all



  


2. Re: Proxy transparent / Iptables

Eriton Almeida
eritonalmeida

(usa Debian)

Enviado em 31/05/2011 - 11:03h

para aprender, começe com o basicão senão vai ter muita dor de cabeça, vc colocou um monte de coisa já de cara.

vc colocou regra de firewall para redirecionar a porta 80 para a 3128?


3. Re: Proxy transparent / Iptables

Adivar dos Santos
W@lyk

(usa Outra)

Enviado em 31/05/2011 - 11:31h

Cara, pois é.
Pra começar eu tentei fazer o redirecionamento da porta 80 para 3128 e testar o proxy-transparent. Fiz isso para testar se estou digitando as regras corretamente.
Fui na estação que está com o ip do Servidor-Proxy como gateway, e desmarquei a configuração de proxy no browser para testar o 'proxy-transparent. Sem sucesso!!! Não funcionou!!!

Quero somente uma luz para aplicar o proxy transparent e posteriormente, começar a liberar as portas que quero.
Desde já agradeço


4. Re: Proxy transparent / Iptables

Eriton Almeida
eritonalmeida

(usa Debian)

Enviado em 31/05/2011 - 12:04h

eu vou simplificar seu squid.conf, mas ta faltando regras no seu firewall, como vc ta usando DROP para a cadeia INPUT precisa liberar a entrada de pacotes que vem da internet(solicitações do squid por exemplo). aconselho vc deixar a INPUT com ACCEPT até tudo tiver funcionando direito, senão vc vai ficar ainda mais confuso.


5. Re: Proxy transparent / Iptables

Eriton Almeida
eritonalmeida

(usa Debian)

Enviado em 31/05/2011 - 12:20h

deixei bem simples
e coloquei autenticação para vc testar. autentica com usuário e senha do Linux





http_port 3128 transparent
visible_hostname xxxx
############# CONFIG CACHE ##############
cache_mem 400 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 10048 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

########### AUTENTICAÇÃO #####################
auth_param basic program /usr/lib/squid/ncsa_auth /etc/shadow
auth_param basic children 5
auth_param basic realm Digite o seu Login


########### DECLARANDO ACL #####################
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 SSL_ports port 443 563
acl Safe_ports port 21 80 443 563 70 210 280 488 59 777 901 3389 1025-65535
acl purge method PURGE
acl CONNECT method CONNECT

acl autenticados proxy_auth REQUIRED
acl redelocal src 192.168.1.0/24

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_allow localhost

http_access allow autenticados
http_access allow redelocal
http_access deny all


error_directory /usr/share/squid/errors/pt


6. Re: Proxy transparent / Iptables

Adivar dos Santos
W@lyk

(usa Outra)

Enviado em 31/05/2011 - 13:47h

Fiz o que vc falou.
Coloquei "iptables -t filter -P INPUT ACCEPT", e configurei o squid da forma que vc informou
Relato abaixo os ocorridos:

1- O proxy transparent não funcionou. Sendo assim, tive que colocar a configuração do proxy no browser.
2- Ao colocar o proxy no broser, ele me padiu usuário e senha. Ao autenticar com um usuário do Linux, aparece uma mensagem de "Proibido o acesso ao Cache".


7. Re: Proxy transparent / Iptables

Ricardo Lino Olonca
ricardoolonca

(usa Debian)

Enviado em 31/05/2011 - 14:47h

Caros,

proxy transparente não funciona com autenticação. Ou um, ou outro.

Quanto ao iptables, é necessário liberar o input na porta 3128.

# iptables -I INPUT -s 192.168.1.0/24 -p tcp --dport 3128 -j ACCEPT


8. Re: Proxy transparent / Iptables

Adivar dos Santos
W@lyk

(usa Outra)

Enviado em 31/05/2011 - 15:28h

Cara,
voltei a minha configuração do squid anterior sem autenticação.
obs: Fiz uma pequena mudança de ip, mas mudei no squid e no iptables. Nada de mais

Digitei as regras de Iptables da seguinte forma e mesmo assim não funcionou o Proxy-Transparent:
obs: mais abaixo seguem configurações das placas de rede

sysctl net.ipv4.ip_forward=1
iptables -F
iptables -t filter -P INPUT ACCEPT
iptables -t filter -P OUTPUT ACCEPT
iptables -t filter -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT

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

iptables -I INPUT -s 192.168.10.0/24 -p tcp --dport 3128 -j ACCEPT
iptables -t filter -A INPUT -i eth1 -j ACCEPT
iptables -t filter -A INPUT -i lo -j ACCEPT

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

-----------------------------------------------

root@servidor-proxy:~# ifconfig ( Só para vocês verem como está minha rede )

eth0 Link encap:Ethernet Endereço de HW xx:xx:xx:xx:xx:xx
inet end.: 192.168.0.197 Bcast:192.168.0.255 Masc:255.255.255.0
endereço inet6: xxxx::xxx:xxxx:xxxx:xxxx/64 Escopo:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Métrica:1
pacotes RX:768 erros:0 descartados:0 excesso:0 quadro:0
Pacotes TX:44 erros:0 descartados:0 excesso:0 portadora:0
colisões:0 txqueuelen:1000
RX bytes:69853 (69.8 KB) TX bytes:5998 (5.9 KB)
IRQ:23 Endereço de E/S:0x8000

eth1 Link encap:Ethernet Endereço de HW yy:yy:yy:yy:yy:yy
inet end.: 192.168.10.10 Bcast:192.168.10.255 Masc:255.255.255.0
endereço inet6: xxxx::xxx:xxxx:xxxx:xxxx/64 Escopo:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Métrica:1
pacotes RX:223 erros:0 descartados:0 excesso:0 quadro:0
Pacotes TX:146 erros:0 descartados:0 excesso:0 portadora:0
colisões:0 txqueuelen:1000
RX bytes:20661 (20.6 KB) TX bytes:17019 (17.0 KB)
IRQ:17 Endereço de E/S:0xe000

lo Link encap:Loopback Local
inet end.: 127.0.0.1 Masc:255.0.0.0
endereço inet6: ::1/128 Escopo:Máquina
UP LOOPBACK RUNNING MTU:16436 Métrica:1
pacotes RX:4 erros:0 descartados:0 excesso:0 quadro:0
Pacotes TX:4 erros:0 descartados:0 excesso:0 portadora:0
colisões:0 txqueuelen:0
RX bytes:240 (240.0 B) TX bytes:240 (240.0 B)



9. Re: Proxy transparent / Iptables

Diego Marin
diegobnx

(usa Debian)

Enviado em 31/05/2011 - 16:30h

tente adicionar isso no seu firewall:

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

modprobe ip_tables
modprobe iptable_nat
modprobe iptable_filter
modprobe iptable_mangle
modprobe ipt_REDIRECT
modprobe ipt_LOG
modprobe ip_conntrack




10. Re: Proxy transparent / Iptables

Adivar dos Santos
W@lyk

(usa Outra)

Enviado em 01/06/2011 - 08:55h

Cara, resolví meu problema em partes.
Vocês não vão acreditar. Eu estava colocando o IP do Servidor-Proxy como DNS primário (mesma confg. quando tenho um router), pois nessa rede não tem Servidor DNS. Então resolvi colocar um DNS do meu provedor de internet com primário e resolveu tudo(Proxy-transparent, Acesso remoto, outlook, etc).

Porem agora, acredito que esteja tudo aberto. Gostaria de fechar tudo e ir abrindo somente as portas que necessito. Preciso saber como criar um script para iniciar junto com o Ubuntu pra não ter a necessidade de eu ter que digitar tudo novamente quando for reiniciado o Servidor.

Segue abaixo a sequencia de comandos do iptables que estou digitando:

sysctl net.ipv4.ip_forward=1
iptables -F
iptables -t filter -P INPUT ACCEPT
iptables -t filter -P OUTPUT ACCEPT
iptables -t filter -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT

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

modprobe ip_tables
modprobe iptable_nat
modprobe iptable_filter
modprobe iptable_mangle
modprobe ipt_REDIRECT
modprobe ipt_LOG
modprobe ip_conntrack

# Aqui ativamos o mascaramento dos pacotes da rede local:

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

# Libera pacotes entrando na eth1 e lo, já que a política INPUT é DROP:

iptables -I INPUT -s 192.168.1.0/24 -p tcp --dport 3128 -j ACCEPT
iptables -t filter -A INPUT -i eth1 -j ACCEPT
iptables -t filter -A INPUT -i lo -j ACCEPT

# Proxy Transparente ******OK eth01 é a placa da rede local
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
______________________________________

O que é realmente necessário nessa lista acima?

Desde já agradeço a todos.


11. Re: Proxy transparent / Iptables

Diego Marin
diegobnx

(usa Debian)

Enviado em 01/06/2011 - 09:32h

na minha opnião usaria: echo 1 > /proc/sys/net/ipv4/ip_forward

em vez de: sysctl net.ipv4.ip_forward=1

e essa regra:

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

que está liberando tudo pois você esta compartilhando todas as portas que passam pela eth0,
agora para liberar e bloquear o resto você faz por ex.:

iptables -A FORWARD -s 192.168.1.0/24 -p tcp --dport XXXX -j ACCEPT
iptables -A FORWARD -p tcp --dport XXXX -j DROP

no caso você liberou determinada porta na rede interna dei como exemplo 192.168.1.0/24 e bloqueou o resto.

Esssa regra tb esta liberando a INPUT pra eth1:

iptables -t filter -A INPUT -i eth1 -j ACCEPT

bom se eu disse algo errado por favor me corrigam,

espero ter ajudado.



12. Vamos ao básico

Ricardo Lino Olonca
ricardoolonca

(usa Debian)

Enviado em 01/06/2011 - 13:16h

Vamos ao básico, passo-a-passo.

O teu servidor proxy consegue pingar o google?

$ ping www.google.com

Poste aí o resultado.



diegobnx,

tanto faz usar 'echo 1 > /proc/sys/net/ipv4/ip_forward' como 'sysctl net.ipv4.ip_forward=1'. O efeito é o mesmo.




01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts