Back to Top

Camino Caminante Vereda

Tag Archives: subversion

Acceder a páginas Web de forma privada

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
andres@andreso.net

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

Importar repositorio Subversion en Ubuntu Edgy

El problema es debido a que tanto subversion como apache están enlazados con libapr0.  Parece que cuando se quiera utilizar apache y subversion juntos es necesario que ambos estén enlazados con la misma versión del libapr que creo que significa Apache Portable Library.  Según  http://svn.haxx.se/users/archive-2006-10/1552.shtml la librería libapr0 está limitada a ficheros de 2 GigaBytes.  El archivo que yo quería importar tenía 2.2 GigaBytes. La copia de seguridad del otro repositorio tenía más de 8 GigaBytes.  El artículo además decía que era necesario que tanto el apache como el subversion necesitaban estar compilados con la misma versión del apr.  La versión 1 del libapr era necesaria.  Me veía con la tarea desagradable de compilar el libapr, compilar el apache, compilar el subversion y compilar el php.  Detesto compilar el php.

 Con un apt-cache search vi que Edgy trae libapr1.  Lo instalé con
sudo apt-get install  libapr1 libaprutil1 libapr1-dev libaprutil1-dev

Desgraciadamente tanto el apache como el subversion seguían estando enlazados con libapr0.  Mala suerte.

 Después de consultar en el canal #svn en freenode me dijeron que únicamente era necesario compilar el subversion con la versión 1 del libapr.  No era necesario compilar el resto de cosas.  Me quedé muy aliviado.  En la página del subversión la única versión disponible para descargar era en este momento al 1.4.3.  Me olía mucho que un repositorio hecho con la versión 1.4.3 no iba a ser compatible con el subversion 1.3.2 que traía Edgy.  Afortunadamente  en  el canal #svn me dijeron que desde   http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=6781&expandFolder=6781&folderID=260 me podía descargar versiones anteriores.  Me descargué la versión 1.3.2 a mi home.  Escogí esta versión ya que es la que trae Ubuntu Edgy.

Descomprimí el subversion

cd
mkdir source
cd ~/source
tar xvjf../subversion-1.3.2.tar.bz2
cd ~/source/subversion-1.3.2
./configure –help

Vi que el programa de configuración traía las opciones  –with-apr y –with-apr-util  Gracias al locate vi que el archivo para poner en la opción de –with-apr era /usr/bin/apr-1-config y el archivo de  –with-apr-util era /usr/bin/apu-1-config  Con esta información ya podía compilar el subversion.  No me interesaba instalarlo ya que iba a utilizar la versión que trae el Edgy.

cd ~/source/subversion-1.3.2
./configure –with-apr=/usr/bin/apr-1-config –with-apr-util=/usr/bin/apu-1-config
make

 No hice make install ya que no me interesa para nada una versión del subversion incompatible con el apache.  Ya tenía un binario de svnadmin que podía usar para recuperar mi repositorio.  Me fui a la carpeta donde había creado el repositorio y lo importé con

~/source/subversion-1.3.2/subversion/svnadmin/svnadmin \
load . < /ruta/a/fichero_dump

Funcionó a la perfección.  Ya tenía importado mi repositorio.  Por desgracia hubo un ligero pero.  Un pero que no me deja más remedio que prescindir totalmente de Ubuntu Edgy en mi servidor.  Tengo una revisión de más de dos Gigabytes.  La mierda de enlazar tanto apache como subversion con libapr0 hace que una distribución tan excelente como Ubuntu Edgy me sea inservible para mi servidor.

 En la carpeta /db/revs de mi repositorio, un ls -lh revela lo siguiente.

total 2.1G
-rw-r–r– 1 andres andres  115 2007-02-17 15:27 0
-rw-r–r– 1 andres andres 2.1G 2007-02-18 17:26 1
-rw-r–r– 1 andres andres 105K 2007-02-18 17:26 2
-rw-r–r– 1 andres andres 331K 2007-02-18 17:26 3
-rw-r–r– 1 andres andres 2.9M 2007-02-18 17:26 4
-rw-r–r– 1 andres andres  19K 2007-02-18 17:27 5
-rw-r–r– 1 andres andres  24K 2007-02-18 17:27 6
-rw-r–r– 1 andres andres  17K 2007-02-18 17:27 7
-rw-r–r– 1 andres andres  16K 2007-02-18 17:27 8
-rw-r–r– 1 andres andres  53K 2007-02-18 17:27 9

Mi revisión 1 según este listado tiene un tamaño de 2.1 Gigabytes.  Eso significa que no puedo guardar ninguna modificación de ningún archivo de esta revisión, durante la cual cree mi repositorio.  He sido capaz de agregar nuevos archivos a mi repositorio, pero cuando he intentado modificar uno de los archivos de esta revisión, el subversion dice que no encuentra la revisión 1.  Lo que pasa es que el libapr0 no es capaz de leer el archivo ya que tiene más de dos Gigabytes.

 Los empaquetadores de Ubuntu, al haber enlazado un programa que es fundamental para mí con una librería obsoleta, han hecho que me sea inviable utilizar Ubuntu Edgy para mi servidor.  Yo necesito la posibilidad de trabajar con archivos de tamaño arbitrario.  El que me limiten el tamaño de los archivos que puede manejar el sistema operativo ha convertido esta distribución en inservible.

 Andreso