squid+https conexiones ssl

Forums: 

Hola comunidad una abrazo a todos, y agradeciendo la molestias que se toman en leer este mail, aqui le vamos...

Bueno en mi trabajo tenemos un squid 2.6 + iptables, con accesso a 50 maquinas por red:

primero:

Las conexiones https: son encriptadas, tal es el uso de estas en gmail, para que este protocolo pueda salir a la internet
simplemente dicho puerto 443 se lo redirecciona hacia fuera

iptables -A FORWARD -s -p tcp -m state --state NEW,ESTABLISHED --dport 443 -j ACCEPT
iptables -A FORWARD -d -p tcp -m state --state ESTABLISHED --sport 443 -j ACCEPT

hasta ahi todo bien pero ups un detalle, este protocolo no pasa por squid bueno podrias redireccionarlo al squid mediante
el siguiente comando:

iptables -t nat -A PREROUTING -s -d ! -p tcp --dport 443 -j REDIRECT --to-ports 3128

==> pero aqui pasa un pequeño detall sale un error... es decir el squid no interpreta conexiones encriptadas mediante ssl, bueno pues me dije algo esta mal hecho o algo no considere... bueno leyendo en san google http://www.lanux.org.ar/pipermail/lista/2006-March/001886.html encontre lo siguiente el famoso metodo CONNECT definido en el squid:

acl SSL_ports port 443 563
acl SAFE_ports port 80
acl SAFE_ports port 8080
acl SAFE_ports port 10000
acl CONNECT method CONNECT
http_access deny !SSL_ports !SAFE_ports
http_access deny CONNECT !SSL_ports

Según algunas paginas en google esto me debería funcionar pero no funciona :( , eso sucede solo cuando agrego al firefox el proxy, me dirijos a la pestaña de hermientas->opciones->Avanzado->red y coloco mi proxy que en mi caso seria 192.168.5.10 (ejemplo), reinico el navegador ya no me conecta a ninguna pagina https:\\ bueno ustedes me diran ya pes no conectes y que todo salga de frente, lo que va al puerto 80 se redireccione al 3128 y lo que va al puerto 443 se valla no mas hacia fuera, pero existe una tendencia a usar protocolos https, que pasara cuando esto se generalice.

bueno pero hay un pequeño detalle de todo esto si no coloco el proxy en el firefox por ejemplo cuando pongo http://localhost , para que me carge el apache, nada no carga nada, le pongo el proxy ahi mismo me carga :S en donde estare haciendo mal aqui mi configuracion de squid e iptables

squid.conf

# Puerto de escucha
http_port 3128 transparent

######################################################################
########################## Opciones de cache #########################
######################################################################

# Patrones cuya coincidencia haran que no sean guardadas en la cache
acl QUERY urlpath_regex cgi-bin \? \.php \.asp
no_cache deny QUERY

# Modelo de reemplazo de objetos de la cache para su mantenimiento y
# uso de espacio en disco
cache_replacement_policy heap LFUDA

#Maximo tamano de objetos en la cache
maximum_object_size 156 MB

# El limite menor y mayor en porcentaje de uso del espacio designado
# para la cache. Dentro de esos limites se maneja el reemplazo de
# objetos antiguos
cache_swap_low 80
cache_swap_high 95

######################################################################################
######################################################################
##################### Parametros administrativos #####################
######################################################################

# Usuario y grupo con el que se ejecuta Squid
cache_effective_user proxy
cache_effective_group proxy

####################################################################
########################## Rutas de archivos #########################
######################################################################

# Directorio de la cache y sus opciones
cache_dir ufs /var/spool/squid 2000 16 256

# Ruta del archivo de registro de consultas de los clientes
cache_access_log /var/log/squid/access.log

# Ruta de archivo de registro del desempeño de la cache
cache_log /var/log/squid/cache.log

# Ruta del archivo de registro de los objetos guardados y removidos
# de la cache
cache_store_log none

# Deshabilitar el registro de la swap de la cache
cache_swap_log /var/log/squid/swap.log

# Archivo de registro del campo User-Agent para todas las peticiones
# HTTP
useragent_log /var/log/squid/useragent.log

# Registrar los tipos MIME en cada peticion HTTP
log_mime_hdrs off

# Ruta del archivo PID de Squid
pid_filename /var/run/squid.pid

######################################################################
######################## Opciones miscelaneas ########################
######################################################################

# Numero de rotaciones a realizar en los logs
logfile_rotate 3

# Idioma usado para los mensajes de error mostrados por Squid
error_directory /usr/share/squid/errors/Spanish

# Aplicacion de redireccion para filtrado
redirect_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf

# Numero de procesos a ejecutarse del redirector
redirect_children 15

# No mostrar la IP desde la que el cliente hace la peticion
forwarded_for off
mime_table /etc/squid/mime.conf

######################################################################
######################### Control de accesos #########################
######################################################################

# Listas de acceso genericas
acl all src 0.0.0.0/0.0.0.0

#hi5
acl redsocial url_regex -i "/etc/squid/redsocial"
acl permitidos-redsocial src "/etc/squid/acl/permitidos-redsocial"

#rapidshare
acl webarchivos url_regex -i "/etc/squid/webarchivos"
acl permitidos-webarchivos src "/etc/squid/acl/permitidos-webarchivos"

#Videos para ver
acl webvideos url_regex -i "/etc/squid/webvideos"
acl permitidos-webvideos src "/etc/squid/acl/permitidos-webvideos"

#otras paginas
acl otrasPaginas url_regex -i "/etc/squid/otrosWeb"

###nueva sub red
acl laboratorio1 src 172.16.0.0/24
acl laboratorio2 src 172.16.1.0/24

## ips que no pasan por delay pools ##
acl laboratorio1-libre src "/etc/squid/acl/laboratorio1-libre"
acl laboratorio2-libre src "/etc/squid/acl/laboratorio2-libre"

# Puertos permitidos
acl SSL_ports port 443 563
acl Safe_ports port 80
acl Safe_ports port 8080
acl CONNECT method CONNECT

## acl de extensiones con trafico reducido ##
acl extensiones url_regex -i "/etc/squid/acl/extensiones"
acl tipo_mime_req.videos req_mime_type "/etc/squid/mime_agr.videos"
acl tipo_mime_rep.videos rep_mime_type "/etc/squid/mime_agr.videos"

acl tipo_mime_req.ficheros req_mime_type "/etc/squid/mime_agr.ficheros"
acl tipo_mime_rep.ficheros rep_mime_type "/etc/squid/mime_agr.ficheros"

# Listas de acceso especiales
acl paginas-adm dstdomain "/etc/squid/nocache"

# Acceso a todos
http_access deny redsocial !permitidos-redsocial
http_access deny webarchivos !permitidos-webarchivos
http_access deny webvideos !permitidos-webvideos
http_access deny otrasPaginas
##Aqui ta el dilema esta coneccion es la que no funca
http_access deny !SSL_ports !Safe_ports !paginas-adm
http_access deny CONNECT !SSL_ports
http_access deny gtalk
http_access allow laboratorio1
http_access allow laboratorio2
http_access allow laboratorio1-libre
http_access allow laboratorio2-libre
http_access deny all

delay_initial_bucket_level 75
delay_pools 4

# Definicion de las clases de cada delay pool
delay_class 1 2
delay_class 2 2
delay_class 3 2
delay_class 4 2

# Parametros de control de cada delay pool definida
delay_parameters 1 131072/131072 65536/65536
delay_parameters 2 65536/65536 32768/32768
delay_parameters 3 32768/32768 16384/16384
delay_parameters 4 -1/-1 -1/-1

# Control de accesos al control de las delay pools
delay_access 1 allow laboratorio1
delay_access 1 allow laboratorio2
delay_access 2 allow extensiones
delay_access 2 allow tipo_mime_req.ficheros
delay_access 3 allow tipo_mime_req.videos
#delay_access 2 allow tipo_mime_rep
delay_access 4 allow laboratorio1-libre
delay_access 4 allow laboratorio2-libre

iptables ...

#e Generated by iptables-save v1.4.2 on Thu Jun 18 03:26:50 2009
*nat
:PREROUTING ACCEPT [47:3720]
:POSTROUTING ACCEPT [77:4638]
:OUTPUT ACCEPT [71:4258]

###### Proxy transparente
-A PREROUTING -s 172.16.0.32/27 -d ! 172.16.0.32/27 -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128

##### Enmascaramiento de la red
-A POSTROUTING -s 172.16.0.0/16 -o eth0 -j MASQUERADE

COMMIT
# Completed on Thu Jun 18 03:26:50 2009
# Generated by iptables-save v1.4.2 on Thu Jun 18 03:26:50 2009
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]

-A FORWARD -s 172.16.1.0/24 -d ! 172.16.1.0/24 -p tcp --dport 443 -j ACCEPT
-A FORWARD -s ! 172.16.1.0/24 -d 172.16.1.0/24 -p tcp --sport 443 -j ACCEPT
########################################################################
################ ACCESO LOCALHOST
########################################################################
-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT

#########################################################################
########## SALIDA PA EL PROXY
#########################################################################
-A INPUT -p tcp -m tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT

#Internet para las redes locales

-A INPUT -s 172.16.0.0/24 -i eth1 -p tcp -m tcp --dport 3128 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -o eth1 -p tcp -m tcp --sport 3128 -d 172.16.0.0/24 -m state --state ESTABLISHED -j ACCEPT

-A INPUT -s 172.16.1.0/24 -i eth1 -p tcp -m tcp --dport 3128 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -o eth1 -p tcp -m tcp --sport 3128 -d 172.16.1.0/24 -m state --state ESTABLISHED -j ACCEPT
#---------------------------------------------------------------------------------------------------------

### Para dns
-A INPUT -i eth0 -p udp -m udp --sport 53 -j ACCEPT
-A OUTPUT -o eth0 -p udp -m udp --dport 53 -j ACCEPT

-A FORWARD -s 172.16.0.0/24 -d ! 172.16.0.0/24 -p udp -m udp --dport 53 -j ACCEPT
-A FORWARD -s ! 172.16.0.0/24 -d 172.16.0.0/24 -p udp -m udp --sport 53 -j ACCEPT

-A FORWARD -s 172.16.1.0/24 -d ! 172.16.1.0/24 -p udp -m udp --dport 53 -j ACCEPT
-A FORWARD -s ! 172.16.1.0/24 -d 172.16.1.0/24 -p udp -m udp --sport 53 -j ACCEPT

############################################################################
##################### PING
###########################################################################
-A INPUT -i eth0 -p icmp -j ACCEPT
-A OUTPUT -o eth0 -p icmp -j ACCEPT

-A INPUT -i eth1 -p icmp -j ACCEPT
-A OUTPUT -o eth1 -p icmp -j ACCEPT

-A FORWARD -i eth1 -o eth0 -p icmp -j ACCEPT
-A FORWARD -i eth0 -o eth1 -p icmp -j ACCEPT

#########################################################
### Configuracion avanzada #####
#########################################################
### Bloqueo de paginas
-A FORWARD -s 172.16.0.0/16 -d 59.106.108.86 -j DROP

# https libre
-A FORWARD -s 172.16.0.0/24 -p tcp -m tcp --dport 443 -j ACCEPT
-A FORWARD -d 172.16.0.0/24 -p tcp -m tcp --sport 443 -j ACCEPT

#### Acceso al skype ####
#-A FORWARD -s 172.16.0.36/27 -d ! 172.16.0.36/27 -j ACCEPT
#-A FORWARD -s ! 172.16.0.36/27 -d 172.16.0.36/27 -j ACCEPT

##Acceso al skype por rango de ip
#-A FORWARD -d ! 172.16.0.0/16 -p tcp -m iprange --src-range 172.16.0.1-172.16.0.254 -j ACCEPT
#-A FORWARD -d ! 172.16.0.0/16 -p tcp -m iprange --dst-range 172.16.0.1-172.16.0.254 -j ACCEPT

##Acceso al MSN
-A FORWARD -s 172.16.0.44 -d ! 172.16.0.0/16 -p tcp -m tcp --dport 1863 -j ACCEPT
-A FORWARD -s 172.16.0.135 -d ! 172.16.0.0/16 -p tcp -m tcp --dport 1863 -j ACCEPT
-A FORWARD -s 172.16.0.136 -d ! 172.16.0.0/16 -p tcp -m tcp --dport 1863 -j ACCEPT
-A FORWARD -s 172.16.0.139 -d ! 172.16.0.0/16 -p tcp -m tcp --dport 1863 -j ACCEPT
-A FORWARD -s 172.16.0.48 -d ! 172.16.0.0/16 -p tcp -m tcp --dport 1863 -j ACCEPT
-A FORWARD -s 172.16.0.53 -d ! 172.16.0.0/16 -p tcp -m tcp --dport 1863 -j ACCEPT
-A FORWARD -s 172.16.0.60 -d ! 172.16.0.0/16 -p tcp -m tcp --dport 1863 -j ACCEPT

#Acceso de la red local a la maquina servidor 192.168.6.10
-A FORWARD -s 172.16.1.0/24 -d 192.168.6.10 -p tcp --dport 381 -m state --state NEW,ESTABLISHED -j ACCEPT
-A FORWARD -d 172.16.1.0/24 -s 192.168.6.10 -p tcp --sport 381 -m state --state ESTABLISHED -j ACCEPT

COMMIT

:P gracias de antemano