Estas aquíBlogs / blog de calel / Protegiendo squid proxy con autenticación y túnel SSH

Protegiendo squid proxy con autenticación y túnel SSH


Por calel Enviado el 08 Abril 2016

(actualizado para jessie y squid3)

Un proxy web es un caché para almacenar copias de archivos web y así disminuir el consumo de red. Debido a que el proxy actúa como intermediario entre un cliente y los servidores web que se visitan, éste puede ser utilizado para incrementar la seguridad y privacidad del cliente.

Los ejemplos de uso del proxy squid que se han presentado en este blog (ver Usando el proxy squid para bloquear cookies y anuncios comerciales) son para uso local. El proxy se consulta a localhost.

Puede ser ventajoso a veces consultar el proxy en forma remota, por ejemplo, si estamos fuera de casa y necesitamos acceder páginas web sensibles. Para ello debemos permitir que el proxy pueda ser accedido desde Internet. Antes de hacer esto debemos obviamente protegerlo.

Darle a squid autenticación

Como root crea un usuario proxy y dále una clave:

# htpasswd -c /etc/squid3/passwd miproxy
New password:
Re-type new password:
Adding password for user miproxy

Este comando no solo crea el archivo /etc/squid3/passwd, le da al usuario 'miproxy' una clave encriptada.

Edita '/etc/squid3/squid.conf'. En la sección autenticación agrega una etiqueta "auth_param",

auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid3/passwd

después de todos los ejemplos comentados.

En la sección donde se insertan reglas propias, que comienza con la linea,

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

agrega la regla,

acl AuthUser proxy_auth miproxy
http_access allow AuthUser

La primera línea define AuthUser, la segunda la utiliza para dar acceso mediante el instructivo http_access. Esta regla se puede insertar antes o después de dar acceso a 'localhost' o 'localnet', dependiendo si se desea que todos se autentiquen o sólo aquellos que se conectan desde el exterior. Las reglas se interpretan en forma secuencial; toda regla de acceso que esté antes de 'http_access allow AuthUser' no requerirá autenticación, mientras que toda regla de acceso que esté después requerirá autenticación.

Esconder la IP de procedencia

Si se desea aumentar la privacidad, podemos también esconder la IP del cliente. Esto puede resultar ventajoso cuando sitios utilizan la IP del cliente para ofrecernos servicios locales.

Modifica el instructivo 'forwarded_for' a,

forwarded_for delete

Modifica también 'via'. Por omisión está en 'on'. Modifícala a 'off',

via off

Esto evita que el proxy indique la IP de origen en la cabecera HTML de la redirección.

Visita el sitio http://pgl.yoyo.org/http/browser-headers.php para ver el efecto con o sin esta modificación.

Usando el proxy remoto

Es necesario habilitar el puerto 3128 para conexiones externas en el cortafuegos del servidor (ver Creando un router en Debian). Agrega la regla,

$IPTABLES -A pqtes-tcp-permitidos -p TCP -m state --state NEW --dport 3128 -j ACCEPT

a la cadena 'pqtes-tcp-permitidos'. La autenticación de squid protege el puerto.

En el navegador local modifica la configuración para usar el proxy remoto,

La configuración del proxy en otros navegadores es muy similar.

Al conectarse al proxy remoto este va a pedir ingresar el usuario proxy y la clave,

Conexión usando un túnel SSH

También puede ser ventajoso encriptar la conexión desde el cliente al proxy. Esto se logra haciendo un túnel SSH desde el cliente hacia el servidor del proxy,

$ ssh -N -f -C -L 8080:localhost:3128 usuario@proxy

en donde usuario es un usuario local del servidor proxy (miservidor.decasa.cl según el ejemplo). Este comando de línea crea un túnel SSH en el puerto 8080 del cliente (localhost) hacia el puerto 3128 del servidor proxy. Obviamente, el servidor SSH debe estar corriendo en proxy, ojalá protegido de una manera prudente por el cortafuegos (ver http://man-es.debianchile.org/cortafuego.html).

La configuración del proxy en el cliente necesita ahora indicar el proxy localhost y el puerto 8080,

Tu voto: Nada Promedio: 5 (72 votos)