Globedia.com

×
×

Error de autenticación

Ha habido un problema a la hora de conectarse a la red social. Por favor intentalo de nuevo

Si el problema persiste, nos lo puedes decir AQUÍ

×
cross

Suscribete para recibir las noticias más relevantes

×
Recibir alertas

¿Quieres recibir una notificación por email cada vez que Claudio Concepción Certad escriba una noticia?

Cómo filtrar el tráfico https en Squid en modo transparente

25/06/2014 13:40 0 Comentarios Lectura: ( palabras)

Squid es un proxy muy potente y aquí hemos trabajado con él. Hoy veremos cómo usar la técnica SSL Bump para poner a Squid "en el medio" interceptando en modo transparente el tráfico "seguro" que va a través del puerto 443 y el protocolo https. Noten que esto no es muy ético y sería buena idea alertar a los usuarios de la red local que esto se está haciendo con fines de auditoría.

Como vimos en un post anterior, podemos crear nuestros propios certificados autofirmados para tratar con https en Apache y otras posibles aplicaciones locales, incluyendo Squid. A los fines de esta guía asumiremos que ya tenemos a Squid trabajando en modo transparente y que solamente estamos trabajando sobre el tráfico https.

Lo primero será crear un certificado autofirmado para Squid. Lamentablemente no podemos usar los mismos que fueron creados para Apache, ya que Squid solo trabaja con los certificados en formato PEM. Usando comandos similares podemos crear tanto la llave privada como el certificado o ambos en un mismo fichero, que sería el certificado con la llave privada incluida.

Creando el certificado

En un solo fichero crearemos el certificado autofirmado y su llave privada, usando el comando openssl, como en el post anterior. Vamos respondiendo interactivamente los requerimientos.

[fraterneo@rainbow ~]$ openssl req -new -newkey rsa:1024 -days 365 -nodes -x509 -keyout squidcert.pem -out squidcert.pem 

Generating a 1024 bit RSA private key

.++++++

.....................++++++

writing new private key to 'squidcert.pem'

-----

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [XX]:DO

State or Province Name (full name) []:Santiago

Locality Name (eg, city) [Default City]:Santiago de los Caballeros

Organization Name (eg, company) [Default Company Ltd]:fraterneo

Organizational Unit Name (eg, section) []:fraterneo

Common Name (eg, your name or your server's hostname) []:rainbow.local

Email Address []:certad@yahoo.com

Configurando Squid

Ya con el certificado listo y antes de continuar, debemos asegurarnos que el Squid que tenemos instalado en nuestro sistema fue compilado con los parámetros que le ayudarán a soportar el procedimiento que estamos haciendo. Estos parámetros son --enable-icap-client y --enable-ssl, y con los siguientes comandos estos parámetros, de existir, saldrán resaltados en color. En Fedora, sistema usado para esta guía, Squid ya los tiene.

[fraterneo@rainbow ~]$ squid -v | grep ssl

[fraterneo@rainbow ~]$ squid -v | grep icap

Ahora copiamos el certificado en una ruta adecuada desde donde Squid lo pueda usar y configuramos el caché donde Squid guardará las copias de dichos certificados.

[fraterneo@rainbow ~]$ sudo mkdir /etc/squid/ssl_cert/

[fraterneo@rainbow ~]$ sudo cp squidcert.pem /etc/squid/ssl_cert/

[fraterneo@rainbow ~]$ sudo /usr/lib64/squid/ssl_crtd -c -s /var/lib/ssl_db

[fraterneo@rainbow ~]$ sudo chown squid /var/lib/ssl_db/

Editamos el fichero de configuración de Squid para agregarle algunos parámetros de SSL Bump y la ruta a nuestro certificado autofirmado.

#

# Recommended minimum configuration:

#

acl homenetwork src 192.168.2.0/24

acl pxenetwork src 10.0.2.0/24

acl forbidden url_regex "/etc/squid/forbidden"

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

#

# Recommended minimum Access Permission configuration:

# Deny requests to certain unsafe ports

http_access deny !Safe_ports

# Deny CONNECT to other than secure SSL ports

http_access deny CONNECT !SSL_ports

# Only allow cachemgr access from localhost

http_access allow localhost manager

http_access deny manager

# We strongly recommend the following be uncommented to protect innocent

# web applications running on the proxy server who think the only

# one who can access services on "localhost" is a local user

#http_access deny to_localhost

#HTTPS (SSL) trafic interception options

always_direct allow all

ssl_bump client-first all

#sslproxy_cert_error deny all

sslproxy_flags DONT_VERIFY_PEER

sslcrtd_program /usr/lib64/squid/ssl_crtd -s /var/lib/ssl_db -M 4MB

sslcrtd_children 8 startup=1 idle=1

#

# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS

#

# Example rule allowing access from your local networks.

# Adapt localnet in the ACL section to list your (internal) IP networks

# from where browsing should be allowed

http_access deny forbidden

http_access allow homenetwork

http_access allow pxenetwork

http_access allow localhost

# And finally deny all other access to this proxy

http_access deny all

# Squid normally listens to port 3128

http_port 10.0.2.1:3128 intercept

# Config for SSL interception

https_port 10.0.2.1:3129 intercept ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/etc/squid/ssl_cert/squidcert.pem

# Uncomment and adjust the following to add a disk cache directory.

#cache_dir ufs /var/spool/squid 100 16 256

# Leave coredumps in the first cache dir

coredump_dir /var/spool/squid

#

# Add any of your own refresh_pattern entries above these.

#

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

# Hostname of the local machine

visible_hostname rainbow.local

Configurando el Firewall (iptables)

Es necesario configurar nuestro Firewall para que trate el tráfico entrante a los puertos correspondientes de la forma en que esperamos.

[fraterneo@rainbow ~]$ sudo iptables -t nat -A PREROUTING -i em+ -p tcp --dport 443 -j DNAT --to-destination 10.0.2.1:3129

[fraterneo@rainbow ~]$ sudo iptables -t nat -A PREROUTING -i em+ -p udp --dport 443 -j DNAT --to-destination 10.0.2.1:3129

[fraterneo@rainbow ~]$ sudo iptables -t filter -A INPUT -m state --state NEW -m tcp -p tcp --dport 3129 -j ACCEPT

[fraterneo@rainbow ~]$ sudo iptables -t filter -A INPUT -m state --state NEW -m udp -p udp --dport 3129 -j ACCEPT

[fraterneo@rainbow ~]$ sudo iptables -t filter -A FORWARD -i em+ -m state --state NEW -m tcp -p tcp -d 10.0.2.1 --dport 3129 -j ACCEPT

[fraterneo@rainbow ~]$ sudo iptables -t filter -A FORWARD -i em+ -m state --state NEW -m udp -p udp -d 10.0.2.1 --dport 3129 -j ACCEPT

[fraterneo@rainbow ~]$ sudo iptables-save

[fraterneo@rainbow ~]$ sudo systemctl restart iptables.service

Configurando los clientes

En los clientes no es necesario hacer configuración, pero sí tomar en cuenta que la dirección IP de nuestro servidor Squid debe ser el gateway de los clientes para que los mismos procuren todo el tráfico http y https a través de Squid. Teniendo siempre presente que muchos sitios como facebook.com rechazan el certificado debido a que no está firmado por una autoridad, como ya mencionamos antes.

Más recursos:

http://wiki.squid-cache.org/Features/SslBump

http://www.squid-cache.org/Doc/config/https_port/

http://www.squid-cache.org/Doc/config/always_direct/


Sobre esta noticia

Autor:
Claudio Concepción Certad (682 noticias)
Fuente:
fraterneo.blogspot.com
Visitas:
3649
Tipo:
Reportaje
Licencia:
Creative Commons License
¿Problemas con esta noticia?
×
Denunciar esta noticia por

Denunciar

Etiquetas

Comentarios

Aún no hay comentarios en esta noticia.