[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: iptables + squid transparente + liberar https e msn com vídeo/áudio



Matheus Aguiar escreveu:
Pessoal,

Estou configurando uma rede local (192.168.1.0/24) em eth1 com IP
público dinâmico em eth0. Todos os serviços (dhcp3-server 3.0.4-13,
bind9 1:9.3.4-2e e squid 2.6.5-6etc) estão rodando na mesma máquina
com Debian 2.6.24-etchnhalf.1-686.

O dhcp e o bind (domínio interno simples e cache com forward) parecem
estar ok. O Squid transparente funciona para http, mas https e msn só
funcionam se for informado ip:porta do proxy no navegador do cliente.
Mesmo assim conversas com webcam/áudio no msn do cliente não funcionam
(não há problema com os dispositivos). A transferência de arquivos
ocorre normalmente. Criei um script para erguer as regras do iptables
que é carregado pelo /etc/rc.local. Pelo que andei pesquisando,
preciso redirecionar https e msn para não passarem pelo proxy. Acho
que o problema está nas minhas regras do iptables (não estou sabendo
redirecionar corretamente).

Pesquisei bastante mas não consigo uma solução.

O que preciso:
- Fazer com que ip:porta do proxy não precisem ser informados no
navegador do cliente nem para https e msn.
- Fazer com que conversa de áudio/vídeo do msn do cliente funcione, de
preferência sem informar ip:porta do proxy.
- Resumindo: que toda configuração seja feita apenas no servidor.


Minhas configs:


Script para regras do iptables:
#!/bin/bash
# Carrega módulos
modprobe iptable_nat
# Limpa regras
iptables -F
iptables -t nat -F
## SNAT
# Mascaramento
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
# IP forwardubg
echo 1 > /proc/sys/net/ipv4/ip_forward
## DNAT
# Redireciona para proxy transparente
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT
--to-port 3128
## PORTAS
# 80 http
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# 443 https
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
iptables -A FORWARD -p tcp --dport 443 -j ACCEPT
# 953 rndc-bind
iptables -A INPUT -p tcp --dport 953 --syn -s 127.0.0.1 -j ACCEPT
# 1863 MSN
iptables -A INPUT -p tcp --dport 1863 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 1863 -j ACCEPT
iptables -A FORWARD -p tcp --dport 1863 -j ACCEPT
## ABRE PARA A REDE LOCAL
iptables -A INPUT -p tcp --syn -s 192.168.1.0/255.255.255.0 -j ACCEPT
iptables -A OUTPUT -p tcp --syn -s 192.168.1.0/255.255.255.0 -j ACCEPT
iptables -A FORWARD -p tcp --syn -s 192.168.1.0/255.255.255.0 -j ACCEPT
## FECHA O RESTO
iptables -A INPUT -p tcp --syn -j DROP


/etc/squid/squid.conf:
## GLOBAL
# Porta e tipo
http_port 3128 transparent
# Cache no disco
cache_dir ufs /var/spool/squid 1000 16 256
# Cache na memória RAM
cache_mem 80 MB
# Usuário
cache_effective_user proxy
# Grupo
cache_effective_group proxy
# E-mail
cache_mgr squid_adm@servidor.rede
# Nome do host
visible_hostname servidor
# Servidor DNS
dns_nameservers 192.168.1.1
# Língua de erros
error_directory /usr/share/squid/errors/Portuguese
# Log de acessos
access_log /var/log/squid/access.log
## ACLs
acl INTRANET src 192.168.1.0/255.255.255.0
http_access allow INTRANET
acl all src 0.0.0.0/0.0.0.0
http_access deny all



Alguém ajuda?

Grato desde já,
Matheus Aguiar


Olá Matheus,
Só analisando as linhas do seu firewall:

Script para regras do iptables:
#!/bin/bash
# Carrega módulos
modprobe iptable_nat
# Limpa regras
iptables -F
iptables -t nat -F
Obs: QUAL É A POLÍTICA PADRÃO DO SEU FIREWALL PARA INPUT,OUTPUT E FORWARD?

## SNAT
# Mascaramento
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
# IP forwardubg
echo 1 > /proc/sys/net/ipv4/ip_forward
## DNAT
# Redireciona para proxy transparente
OBS: SE VC DEU MASQUERADE QUER DIZER QUE VC LIBEROU TODAS AS PORTAS INCLUSIVE A 443, COM EXCESSÃO DA PORTA 80 QUE FOI REDIRECIONADA PARA A 3128. OU SEJA, DEVERIA FUNCIONAR O HTTPS.
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT
--to-port 3128
## PORTAS
# 80 http
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
OBS: VC LIBERA INPUT PARA A PORTA 80 SE NO SEU FIREWALL TEM UM SERVIDOR WWW, VC TEM?
# 443 https
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
iptables -A FORWARD -p tcp --dport 443 -j ACCEPT
OBS: ESTAS TRES REGRAS ACIMA TBM SERIA SE NO SEU FIREWALL TEM UM SERVIDOR WWW COM SSL, VC TEM?
# 953 rndc-bind
iptables -A INPUT -p tcp --dport 953 --syn -s 127.0.0.1 -j ACCEPT
# 1863 MSN
iptables -A INPUT -p tcp --dport 1863 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 1863 -j ACCEPT
iptables -A FORWARD -p tcp --dport 1863 -j ACCEPT
## ABRE PARA A REDE LOCAL
iptables -A INPUT -p tcp --syn -s 192.168.1.0/255.255.255.0 -j ACCEPT
iptables -A OUTPUT -p tcp --syn -s 192.168.1.0/255.255.255.0 -j ACCEPT
iptables -A FORWARD -p tcp --syn -s 192.168.1.0/255.255.255.0 -j ACCEPT
## FECHA O RESTO
iptables -A INPUT -p tcp --syn -j DROP


Use o tcpdump para monitorar os pacotes usando a seguinte sintaxe:
tcpdum -i ethx host 192.168.0.x
Onde ethx corresponde a interface interna da sua rede e 192.168.0.x corrresponde a estação que esta tentando acessar a pagina https.

Abçs
Rondineli Saad


Reply to: