squid transparente http y https iptables

Todos los comentarios sobre redes y servidores en linux y su interacción con otros sistemas operativos.

Moderadores: doc, Kde_Tony, ps-ax

Responder
linux_mcm
Forista Nuevo
Forista Nuevo
Mensajes: 3
Registrado: Jue Abr 03, 2014 8:05 pm

squid transparente http y https iptables

Mensaje por linux_mcm »

Hola a todos, soy nuevo en este sitio y tengo un problema que quisiera y me pudrieran dar información o aportar a esta investigación.

bueno empezamos con el dilema.

Tengo una PC con 2 tarjetas de red con linux ubuntu 12.04 y los servicios de DHCP y SQUID, el cual me permiten administrar una red lan de 50 PC.

mi servidor funciona bien tanto http como https, comparte internet y deniega sitios que yo he configurado pero solamente los http.

El problema es HTTPS que me esta dando un dolor de cabeza porque me salta mis restricciones.

ejemplo http://facebook.com me lo deniega correctamente pero si yo ingreso https://facebook.com me salta mi firewall y mi squid no puede hacer nada para denegarlo

lo raro y que jamas había visto desde que instale este servidor es que si configuro el proxy manualmente en los navegadores de todas las PC si me deniega los sitios tanto como http y https y puedo monitorear ambos protocolos.

pero desde una manera mas profesional y mas simple, pues seria hacerlo transparente sin tener que lidear con la configuración manual en la PC.


ok primero les enseñare mi configuracion actual.

eth0 = 192.168.3.3 (INTERNET)
eth1 = 192.168.1.1 (LAN)

nano /etc/network/interfaces

Código: Seleccionar todo

auto lo
iface lo inet loopback

#LAN
auto eth1
iface eth1 inet static
address 192.168.1.1
netmask 255.255.255.0

auto eth0
iface eth0 inet static
address 192.168.3.3
netmask 255.255.255.0
gateway 192.168.3.254
network 192.168.3.0
broadcast 192.168.3.255
dns-nameservers  8.8.8.8 8.8.4.4

nano /etc/dhcp/dhcpd.conf

Código: Seleccionar todo

ddns-update-style none;
option domain-name "LAN";
option domain-name-servers 8.8.8.8, 8.8.4.4;
default-lease-time 3600;
max-lease-time 7200;
authoritative;
log-facility local7;
subnet 192.168.1.0 netmask 255.255.255.0{
range 192.168.1.2 192.168.1.19;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.1;
}

nano /etc/squid3/squid.conf

Código: Seleccionar todo

acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
acl SSL_ports port 443          # https
acl Safe_ports port 80          # http
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-httpsudo gedit /etc/squid3/squid.conf
acl Safe_ports port 591         # filemaker
acl Safe_ports port 777         # multiling http
acl CONNECT method CONNECT
acl proxymcm src 192.168.1.0/24
acl ip_list_access src "/etc/squid/ip_can_access"
acl noper url_regex "/etc/squid/sitios"
acl youtube dstdomain .youtube.com
http_access deny noper !ip_list_access
http_access allow proxymcm
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access deny all
http_port 3128 transparent
cache_mem 512 MB
cache_dir ufs /var/spool/squid3 1000 16 256
coredump_dir /var/spool/squid3
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern (Release|Packages(.gz)*)$      0       20%     2880
refresh_pattern .               0       20%     4320
visible_hostname SERVIDOR_MCM


nano /etc/rc.local

Código: Seleccionar todo

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

/sbin/iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.1.1:3128
/sbin/iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

exit 0

esta es mi configuracion que permite hacer proxy transparente pero solamente a HTTP
como podran ver tengo
iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.1.1:3128
para redireccionarlo a mi servidor
y para compartir el internet HTTP y HTTPS
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

el problema es el HTTPS que no puedo controlar


pregunta:

Como puedo lograr vincular HTTP y HTTPS a mi servidor SQUID?

intente hacer lo siguiente

si ingreso esto
iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 443 -j DNAT --to-destination 192.168.1.1:3129
el navegador me dice ERROR DE SSL

y si agrego esto a SQUID.CONF

Código: Seleccionar todo

https_port 3129 key=/etc/squid/ssl/squid.key cert=/etc/squid/ssl/squid.crt
ssl_bump none localhost
sl_bump server-first all
sslproxy_cert_error allow all
sslcrtd_program /usr/lib/squid3/ssl_crtd -s /var/lib/ssl_db -M 4MB
NO ME FUNCIONA EL SQUID.

y no entiendo muy bien squid.key y squid.crt

si me pudieran aportar informacion a este problema , se los agradecere y ademas podremos compartir la resolucion de este poblema a futuras generaciones.

Gracias se los agradesco, SALUDOS!.

Avatar de Usuario
Kde_Tony
Moderador
Moderador
Mensajes: 3866
Registrado: Mié Jul 20, 2005 7:00 am
Ubicación: /home/Peru/Lima/La Molina
Contactar:

Re: squid transparente http y https iptables

Mensaje por Kde_Tony »

Vamos por partes, HTTPS no se puede "filtrar"/"bloquear" cuando estamos usando Squid Transparente.

Hay "cajas" que realizar filtrado de HTTPS con Squid Transparente, pero no los he probado: Endian, Zentyal port ejm.

Si bloquear HTTPS quieres, usar Squid normal debes.

sls
"Quiero cambiar al mundo pero no me dan los RPM"
----------------------------
Tony Blair
Linux User # 433253
Ubuntu User # 9562
-----------------------------

Avatar de Usuario
EINOM
Forista Menor
Forista Menor
Mensajes: 71
Registrado: Sab Jun 14, 2008 7:00 am
Contactar:

Re: squid transparente http y https iptables

Mensaje por EINOM »

Bueno se recomienda que manejes siempre el filtrado de manera tradicional y denegando la salida directa para así forzar el filtro a todos tus clientes..

una manera de ejecutar las configuraciones en 50 clientes a la vez es contando con un dominio (para el caso win), usando GPOs o con un server centralizado y una herramienta de administración centralizada tipo puppet, chef o salstack (para lin).

en el caso de ser forzado el tema de proxy transparente (también he estado en esos casos), debes entender que en el caso del https corresponde que el proxy sea quien emita el certificado lo que en si cabe en la descripción de una vulneración de privacidad, tema que se puede manejar apoyado en políticas de tu empresa o buscando la manera de notificar al cliente antes de efectuar el filtrado.

sea cual sea tu alternativa hay tutoriales que plantean una solución al filtro transparente del HTTPS como son:

http://pen-testing-lab.blogspot.com/201 ... -http.html (para debian y derivados)

o este

http://ajayadas.com/e110body-anchor/ (para red hat y derivados)

o4kley
Forista Medio
Forista Medio
Mensajes: 410
Registrado: Sab Ene 01, 2011 2:40 am
Ubicación: Peru

Re: squid transparente http y https iptables

Mensaje por o4kley »

usa el cortafuegos para bloquear conexiones https
"Bañarse en pareja (ahorra agua y ayuda a producir niños ecológicos) =)"
http://o4-gml.blogspot.com/

linux_mcm
Forista Nuevo
Forista Nuevo
Mensajes: 3
Registrado: Jue Abr 03, 2014 8:05 pm

Re: squid transparente http y https iptables

Mensaje por linux_mcm »

Hola después de tanto tiempo porfin lo tengo en funcionamiento lo malo es que estoy batallando para hacerlo transparente

les dejo la configuracion

Código: Seleccionar todo

acl REGEL src 192.168.1.0/24
acl SSL_ports port 443
acl Safe_ports port 80          # http
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 CONNECT method CONNECT

acl ip_list_access src "/etc/squid/ip_can_access"
acl noper url_regex "/etc/squid/sitios"
http_access deny noper !ip_list_access

http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localhost
http_access allow REGEL
http_access allow all

http_port 3127 ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB key=/etc/mydlp/ssl/private.pem cert=/etc/mydlp/ssl/public.pem
http_port 3128 transparent
https_port 3129 intercept ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB  key=/etc/mydlp/ssl/private.pem cert=/etc/mydlp/ssl/public.pem capath=/etc/ssl/certs


ssl_bump allow all
sslproxy_flags DONT_VERIFY_PEER
sslproxy_cert_error allow all
sslcrtd_program /usr/lib/squid3/ssl_crtd -s /var/lib/ssl_db -M 4MB
sslcrtd_children 5

coredump_dir /var/spool/squid3
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern .               0       20%     4320
always_direct allow all
y el certificado

Código: Seleccionar todo

OPENSSL=/usr/bin/openssl
SSLDIR=/etc/mydlp/ssl
mkdir -p $SSLDIR || exit 1
rm -rf $SSLDIR/*
[ -e $SSLDIR/private.pem ] || $OPENSSL genrsa 4096 > $SSLDIR/private.pem
[ -e $SSLDIR/public.pem ] || (echo -e "TR\nAnkara\nTechnopolis\nMyDLP\nMyDLP\n*\nsupport@mydlp.com\n"| $OPENSSL req -new -x509 -days 3650 -key $SSLDIR/private.pem -out $SSLDIR/public.pem)
[ -e $SSLDIR/user.der ] || $OPENSSL x509 -in $SSLDIR/public.pem -outform DER -out $SSLDIR/user.der
lo copioan por completo y lo pegan en la terminal y automaticamente tendran los certificados




de aquy fue donde me base
https://www.youtube.com/watch?v=tz3lZLB_A8U


solo me falta hacerlo transparente por eso hice los puertos 31218 y 3129 para filtrarlos en modo transparente y el puerto 3127 es para configurar el esquid en las pc y veran que si funciona el filtrado https y podran denegar las paginas https.

con esto no se filtra https solo http y https se seguira saltando el squid

Código: Seleccionar todo

iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.1.1:3128
iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
si alguien me puede ayudar a filtrarlo en https se los agradeceria.

Editado -- Mar Sep 15, 2015 9:45 pm --

se me olvidaba, copian el certificado /etc/mydlp/ssl/user.der e instalenlo en su pc remota para que funcione el https con el puerto 3127

gracias.

Responder
  • Temas similares
    Respuestas
    Vistas
    Último mensaje