Andreso.net

Mi pueblo es Madrid

En la oficina las conexiones a páginas Web son filtradas por un programa llamado SonicWall .  Este programa además de impedir conexiones a páginas de noticias y de música tiene incorporado un filtro de contenido.  En muchas búsquedas relacionadas con el mundo de la informática el filtro de contenido es erróneo.  Por ejemplo el cliente de subversion SmartSvn es denegado porque los filtros automáticos de este programa lo consideran un juego.  Harto de no poder verificar páginas necesarias para desempeñar mi trabajo me he visto obligado a instalar una forma de acceder a páginas Web sin la interferencia de este producto defectuoso.

 

Para saltarse el filtro de contenido y navegar de forma segura es necesario tener acceso a:
  • Un servidor Linux en Internet.  El mío corre un sistema operativo CENTOS 3
  • Un ordenador de sobremesa con Linux.  El mío tiene Ubuntu Maverick Meerkat  instalado.  Cuando empecé este artículo tenía Edgy Etch instalado.

En el servidor instalé primero un proxy HTTP llamado privoxy y luego un proxy SOCKS llamado Dante.   Al no haber ningún rpm disponible para  CENTOS 3 para ninguno de los dos proxies, los compilé a mano.  Para Debian o similares como el Ubuntu, sí existen los paquetes  disponibles para estas variantes del linux y se encuentran con apt-cache search y se instalan con apt-get install

Instalación del proxy HTTP Privoxy 

Para el privoxy me bajé el src.rpm para Fedora Core desde  http://sourceforge.net/project/showfiles.php?group_id=11118. Preferí bajarme un src.rpm ya que son mucho más fáciles de compilar.  Me lo descargué con el wget a la carpeta /tmp de mi servidor.  Después lo único necesario es compilarlo.  El comando es rpmbuild --rebuild privoxy*src.rpm

Esto deja los rpm en /usr/src/redhat/RPMS/i386/  y se instalan con rpm -Uvh /usr/src/redhat/RPMS/i386/privoxy*rpm

 

En la configuracion por defecto del privoxy únicamente se permiten conexiones desde el localhost del servidor al puerto 8118.  Ahora únicamente es necesario arrancar el privoxy y que permanezca arrancado.  Estos son los comandos para CENTOS.

/etc/init.d/privoxy start
chkconfig --level 2345 privoxy on 

Uso del Privoxy

Para acceder por lo tanto a nuestro flamante proxy desde nuestra máquina es necesario hacer un tunel ssh.  Este tunel es necesario volver a hacerlo cada vez que se arranque el ordenador.  Para eso es necesario tener disponible una cuenta ssh en el servidor.  No valen cuentas restringidas como el jailshell de Cpanel.  Es necesario una cuenta que tenga acceso a todo el servidor.  El comando ssh es  

ssh -NL 8118:localhost:8118 usuario@servidor 

Hace falta introducir la contraseña.  Además hace falta repetir este comando cada vez que arranques tu ordenador personal si quieres navegar de forma discreta o saltarte filtros de contenido.

Ahora todo el tráfico que mándemos al puerto 8118 de nuestra máquina aparecerá por arte de magia en el puerto donde escucha el privoxy sin que nadie pueda interceptarlo.

Lo único pendiente es configurar un navegador para que use como proxy el puerto 8118 de nuestra propia máquina. Yo uso Ubuntu y me gusta usar para temas laborales el Firefox. Hay muchos otros navegadores disponibles en el Ubuntu.  Ahora es necesario escoger un navegador para acceder a las páginas menos serias.  Cualquiera vale menos el Konqueror.  Después de haberlo configurado descubrí  que la variable http_proxy que define el método de conexión a Internet también se había asignado con los valores que introduje para el Konqueror.  El Konqueror es una parte fundamental del entorno KDE y configurarlo para acceder a mi proxy tuvo demasiados efectos secundarios.  Lo mismo pasó con el Galeon, que es el navegador por defecto del Gnome. También asigna el proxy por defecto del sistema.

 Cualquier navegador sirve para conectarse con el proxy.  Únicamente es necesario configurarlo para conectarse al puerto 8118 de localhost.  Este proxy únicamente se conecta con los protocolos http y https.  En las configuraciones de proxies de muchos navegadores viene la posibilidad de configurar muchos protocolos adicionales como ftp y gopher.  Ninguno de estos protocolos funcionará. Únicamente el http y el https funcionarán.  Si se quiere seguir utilizando únicamente el Firefox, hay un módulo llamado FoxyProxy que permite un control más exhaustivo de como el Firefox se conecta a cada página Web.

Una vez configurado el proxy se puede probar navegando a una página normal como http://elpais.es y una de protocolo SSL como https://gmail.com.  Si se ven las páginas a través del navegador que se haya configurado, el proxy funciona.  Yo ahora tengo el opera configurado.

Insalación del proxy SOCKS Dante 

 El método para instalar el proxy SOCKS Dante es un poco más complicado ya que al ser compilado exclusivamente desde fuentes hace falta crear el fichero de configuración desde cero así como el programa que lo arranca al arrancar el sistema.  Las fuentes me las descargué de ftp://ftp.inet.no/pub/socks/  En el momento de escribir este artículo la última versión disponible era la 1.19.   Ahora en 2010 la última versión es la 1.22. La versión 1.22 necesita un mínimo de CENTOS 6 y al tener CENTOS 3, no lo puedo actualizar.

Otra vez se descarga en /tmp con el wget y se descomprime.

tar xvpzf dante*tar.gz
rm dante*tar.gz
cd dante*  

Después se compila y se instala.  Lo más sencillo es hacerlo como root aunque hay gente que recomienda jamás compilar como root porque nunca puedes estar seguro si el programa es de fiar.

./configure   --with-sockd-conf=/etc/danted.conf --prefix=/usr/local
make
make install

Estos comandos configuran el Dante para que su archivo de configuración sea /etc/danted.conf y que los ejecutables estén en /usr/local/bin y en /usr/local/sbin.  Todavía no estamos ni a la mitad ya que el archivo de configuración no se ha creado y queda conseguir que el servidor proxy se arranque cuando se arranque el ordenador.  Ambas cosas las tuve que hacer a mano ya que al instarlo manualmente no se crearon ninguno de los archivos necesarios.

Para crear el fichero de configuraición se ejecuta como root

nano /etc/danted.conf

y se pega en el archivo el siguiente texto

# La salida informativa
logoutput: /var/log/dante.log
#Las ips permitidas
internal: 127.0.0.1 port = 1080
#Utiliza eth0. Si tu interfaz de red según ifconfig tuviera otro
#nombre, se edita
external: eth0

# Al unicamente aceptar conexiones internas no es necesario autenticarse
method: username none

#Ningún permiso especial
user.notprivileged: nobody
user.privileged: nobody
user.libwrap: nobody
# Permisos de conexion
client pass {
from: 127.0.0.0/8 port 1-65535 to: 0.0.0.0/0
}
client block {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: connect error
}
block {
from: 0.0.0.0/0 to: 127.0.0.0/8
log: connect error
}
#Permite conexiones internas y prohibe todo lo demás
pass {
from: 127.0.0.0/8 to: 0.0.0.0/0
protocol: tcp udp
}
block {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: connect error
}

 

Ahora es necesario escribir el fichero para arrancar el proxy.  Como root nano /etc/init.d/socksd y se pega el siguiente texto

#!/bin/sh
# Filename: /etc/init.d/sockd
#
# chkconfig: 345 100 100
# description: Starts and stops the sockd
# thx to the samba-team for the script ;)

SOCKD_CONFIG="/etc/danted.conf"
SOCKD=/usr/local/sbin/sockd
SOCKD_OPTIONS="-D  " # debug (-d) is a bad (and space-wasting) idea

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0

# Check that smb.conf exists.
[ -f ${SOCKD_CONFIG} ] || exit 0

# See how we were called.
case "$1" in
  start)
    echo -n "Starting socks: "
    daemon ${SOCKD} ${SOCKD_OPTIONS} -f ${SOCKD_CONFIG}
    echo ""
    touch /var/lock/subsys/sockd
    ;;
  stop)
    echo -n "Shutting down socks: "
    killproc ${SOCKD}
    rm -f /var/lock/subsys/sockd
    echo ""
    ;;
  status)
    status ${SOCKD}
    ;;
  restart)
    echo -n "Restarting socks: "
    $0 stop
    $0 start
    echo "done."
    ;;
  *)
    echo "Usage: $(basename $0) {start|stop|restart|status}"
    exit 1
esac

Ahora se hace ejecutable y se le dice que arranque automáticamente ejecutando como root:

 chmod +x /etc/init.d/sockd
/etc/init.d/sockd  start
chkconfig --level 2345 sockd on

 Uso del Dante

Ahora para conectarse a este proxy se utiliza tal como está configurado el siguiente comando

ssh -NL 1080:localhost:1080 usuario@servidor

 El proxy SOCKS Dante, lo utilizo cuando navego utilizando redes wifi abiertas. El Dante funciona bastante mejor que  el Privoxy.  He configurado el firefox para utilizar como proxy SOCKS el ordenador localhost con el puerto 1080  Todavía no he sido capaz de usarlo en el trabajo ya que tanto el Galeon como el Konqueror cambian la configuración de proxy universal y el Opera no funciona todavía con SOCKS. 

 

Uso de Proxy en Windows

Para conectarse a un proxy SOCKS en Windows el mejor programa es Putty que es un cliente SSH gratuito. Se puede descargar desde http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html En el caso de que no tengas permiso de instalar programas en tu ordenador te puedes descargar el Putty de http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe que es un ejecutable para el que no es necesario ninguna clase de permiso para ejecutar.  Descargar, hacer doble click y disfrutar.

Al abrir el Putty es necesario crear y guardar una sesión

Pantalla Inicial del Putty
En Host Name (or IP address)  se introduce el nombre del servidor.  En Port, el puerto.  En Saved Sessions se introduce un nombre descriptivo y se pulsa sobre Save.

Configuración inicial de los túneles sshSe navega eb el menú hasta Connection >> SSH > Tunnels y se mete en Source Port el 1080 ya que tengo mi Dante escuchando en el puerto 1080.  Se marca Auto y Dynamic y se pulsa sobre Add

Como queda una vez que se hayan guardado los túneles ssh
Al final queda así

Antes de Guardar en el PuttySe selecciona el nombre que se ha escogido para este servidor, en este ejemplo he escogido servidor y se pulsa sobre Save Una vez ya esté todo guardado, cuando se arranque el Putty únicamente es necesario hacer doble click sobre el nombre que hemos dado a este servidor y se abre la ventana de autenticación.

Es un problema en Windows encontrar un navegador que tenga configuración de Proxy independiente del sistema.  Tanto Chrome como Safari como Internet Explorer usan la configuraición de Proxy del sistema. Afortunadamente los navegadores de Mozilla como el Firefox o el Seamonkey permiten configuración individualizada del Proxy.  Por desgracia en el Seamonkey en mi equipo, la pantalla de configuración manual del Proxy es demasiado pequeña y no se puede cambiar el tamaño

Configuración Manual del Proxy en SeamonkeyComo se ve en esta pantalla no hay nada que hacer ya que no aparece la caja de texto para meter el puerto. Afortunadamente no hay ese problema en el Firefox.

configuracion-avanzado-red-firefox
En Firefox se navega a Herramientas >> Opciones >> Avanzado >> Red y se pulsa sobre el botón Configuración...

Configuración manual del Proxy de Firefox como SOCKS

Hay que recordar que el Dante es un Proxy SOCKS.  Se selecciona Configuración manual del proxy: y en el campo Servidor  SOCKS se introduce el 127.0.0.1 que es el ordenador local.  Hay que recordar que el Putty como por arte de magia conecta el puerto 1080  de la máquina local con el puerto 1080 de mi servidor.  En Puerto se intoduce pues el 1080 y se marca la casilla Socks v5.

Se pulsa varias veces sobre Aceptar hasta cerrar todas las ventanas.  Ahora el Firefox se conectará a Internet desde el servidor y la conexión entre el equipo y Internet está cifrada de tal manera que nadie lo puede espiar.

Disfrutad.

Andreso
This email address is being protected from spambots. You need JavaScript enabled to view it.

http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe