Bienvenido!

¡Se bienvenido!

viernes, 10 de diciembre de 2010

Cómo hacer un túnel SSH para saltarse un proxy

Es muy normal tener un proxy en la empresa (transparente) que no te permite acceder a las páginas web que los administradores crean que no debes. El problema es que esto se hace con categorías y a menudo incluye páginas que son buenas o que puedes necesitar para trabajar.

Aquí escribo una guía de como conectarte a cualquier PC de fuera y saltártelo.

Requerimientos para poder hacerlo (al menos el método que conozco yo):

  • Ordenador accesible donde sea, en tu casa, o de un conocido, o un servidor que tengas alquilado, etc.
  • Posibilidad de crear conexiones SSH desde el lugar donde esté el proxy hasta el servidor del punto 1.
Si se cumplen los requisitos previos, puedes montar el mecanismo, el cual consta de un servidor de SSH y un PuTTY.

El funcionamiento es el siguiente: el pc limitado (llamaré así al que sufre el proxy) hace una conexión por SSH al servidor externo, pero no es una simple conexión, si no que además el PuTTY puede crear un túnel SSH. Ésto es: todo dato que se "tuneliza" es encapsulado en paquetes SSH (esto implica que están cifrados y ni el tato puede leerlos) y sale por el otro lado, que es el servidor adonde nos conectamos.

- Forma de configurar el servidor para que acepte estas conexiones con túnel:

Hay varias opciones: Si el servidor es un sistema Linux (Unix), basta con instalar el servidor de SSH de la distribución, que seguramente será el OpenSSH (sshd). Una vez instalado (si no lo está ya), hay que tocar el fichero de configuración 'sshd_config', que suele estar en '/etc'. Dentro, hay que reiniciar el servicio después de añadir esta línea:

     AllowTcpForwarding yes

Segunda opción: El servidor es un sistema Windows. Podemos elegir usar VMware con un Linux corriendo dentro o usar Cygwin. En el primer caso bastaría con configurar el linux del VMware tal y como dice el punto anterior, y en el caso de usar Cygwin, los pasos son similares, configurar el sshd_config y reiniciar el sshd. Algún día pondré una guía de como montar el sistema Cygwin :)

- Forma de configurar el PuTTY:

Lo primero es probar que llegamos al servidor externo por SSH (por defecto, el puerto 22, pero si lo cambiamos en el servidor, también debe funcionar). Abrimos el PuTTY y en la línea de conexión hay que poner la ip o nombre DNS del servidor y poner el puerto (seleccionando tipo SSH). Si podemos conectar, todo perfecto porque entonces funcionará :)

Ahora falta añadir la funcionalidad de proxy socks a la conexión por PuTTY. A la hora de conectar, tenemos una lista grande a la izquierda, en la que hay que buscar la categoría SSH, desplegarla y pinchar en Tunnels. Una vez allí, tenemos que escribir en "Source Port" un nº de puerto que nos guste, que sea alto y que no esté en uso por nada más. Dejamos "Destination Port" en blanco, y seleccionamos los 'radiobuttons' Dynamic y Auto. Pulsamos en Add y debe de salir en la lista de arriba el nº de puerto con una D delante: DXXXX

Existe un tick arriba del todo que es para permitir las conexiones desde otros hosts. Ésto vale para que un solo PC haga la conexión SSH y cualquier otro pc de la red local lo use como proxy de salida en vez de que cada uno haga una conexión SSH. Si el tick no está puesto, solo te deja conectarte desde tu propio PC.

Recomiendo salvar estas opciones en la sección "Session" del PuTTY. Se salva poniendo un nombre a la conexión en el campo "Saved sessions" y dando al botón Save (no olvidar poner la dirección y puerto arriba).

Ahora tenemos un proxy de tipo Socks v5 sin autenticación en nuestro PC, que vale para cualquier programa que permita conectarse por un proxy SOCKS.

- Cómo configurar el Firefox o cualquier otro navegador para usar el proxy socks:

En Opciones -> Red -> Configuración hay que poner las siguientes opciones:

Configuración manual del proxy:

- Proxy HTTP vacío
- Quitar el tick "Usar el mismo proxy para todo"
- Proxy SSL vacío
- Proxy FTP vacío
- Servidor SOCKS: 127.0.0.1 puerto: El que se puso en PuTTY
- SOCKS v5
- No usar proxy para: Direcciones web, ip's y dominios para los cuales no queremos usar el proxy (direcciones de red local, por ejemplo).

Con eso basta para navegar a través del proxy :)

Dejad cualquier comentario sobre el artículo, y si tenéis sugerencias de como mejorarlo, mejor :)

miércoles, 1 de diciembre de 2010

Cómo recuperar datos de un disco de red NAS LaCie

Voy a explicar lo que hay que hacer para recuperar un disco de red Ethernet Big Disk de LaCie. En mi caso ha sido el de 1 terabyte (TB), pero se debe poder aplicar a cualquiera que tenga dos discos internos.

Lo que le ocurría al disco en cuestión era que no era capaz de iniciar su sistema operativo, por lo que se quedó completamente inaccesible, ni por ethernet ni por USB, así que, tuve que desmontarlo para sacar los discos e intentar examinarlos en un ordenador normal, anotando en qué posición va cada disco (por el serial, por ej), ya que es importante para que luego se detecten como es debido, porque no contienen la misma información.

Para ello, cogí un pc de la oficina (el disco de red estropeado está en el curro), le desconecté su disco duro, conecté los dos discos del NAS (van por SATA) y arranqué con el último Knoppix (6.2.1).

El SO detectó los dos discos con unas estructuras bastante curiosas la verdad:
sda: sda1 < sda5 sda6 sda7 sda8 sda9 > sda2 
sdb: tabla de particiones desconocida

Para que el disco principal se detecte como sda, se debe conectar el disco que está debajo de la placa del NAS en el primer puerto del PC y el disco que está más cerca del frontal, en el segundo, si no, se invertirán los nombres, cosa que tampoco es que importe mucho jeje.

No conozco la utilidad de todas las particiones, pero las que hacen falta son:
  • sda2: Parcial de datos
  • sda5: swap
  • sda8: partición ext3 con el sistema operativo del disco (aquí tengo una pequeña duda de fácil resolución: sda7 y sda9 también son ext3 y no estoy del todo seguro de cual es de la que hay que usar un archivo, pero la duda se resuelve a la hora de buscar el fichero en cuestión, ya que solo se encuentra en una de ellas.
La partición de datos que usa el disco está formateada en XFS y va montada sobre el dispositivo md0 (raid por software), el cual no se creará de forma automática y hay que montarlo. Para ello hace falta el fichero /etc/mdadm.conf de la partición que mencionaba antes (sda8) y como si estamos usando el livecd que yo usé, hay que copiarlo sobre /etc/mdadm/mdadm.conf sobrescribiendo el que haya, si lo hay (me suena que sí).

Si le echamos un vistazo al fichero, se ve que sirve para unir sda2 con todo sdb y así crear el dispositivo md0. Para hacer esto último, hay que ejecutar como root: 'mdadm --assemble /dev/md0'

Una vez tenemos el dispositivo md0 creado, ya se puede montar como cualquier otro, y es de tipo XFS. En este paso, pude copiar todo lo que era legible (había errores de lectura de sectores) del disco a otra unidad por red (montando un recurso samba), pero lo podemos copiar donde sea.

Se puede intentar el programa 'xfs_repair' sobre /dev/md0 aunque me fallaba.

En este paso las opciones de recuperación no son muchas debido a los errores de lectura. Pude usar un segundo disco de red idéntico que tenemos para hacer un clon, ya que los errores de lectura daban por varios sitios, pero leí de un caso en el que solo fallaba el disco 2 (sdb) y bastó con regenerar el disco entero y crear de nuevo el md0 y su partición XFS.

El método de recuperación que hice fue este:
  • Desmontar el otro disco de red, coger el primer disco y enchufarlo al pc donde había puesto los otros dos.
  • Comprobar que disco se trata: principal (sda) o exclusivo de datos (sdb) y usar dd_rescue para clonarlo sobre el defectuoso. El comando es: 'dd_rescue /dev/sdX /dev/sda' siendo sdX el nuevo disco detectado, que puede ser cualquiera (comprobarlo con 'dmesg'). Si el disco estropeado es el de datos, usad el comando sobre sdb en vez de sda.
  • Una vez se clonen uno o los dos discos (en mi caso hice los dos), el dispositivo md0 no funcionará directamente porque la partición XFS que tiene se asocia con los ID's de los discos (o algo así entendí del error que obtuve) y hay que usar 'xfs_repair /dev/md0', solucionándose el problema y dejando una partición correcta y usable.
  • Si solo se recupera uno de los discos, no se como se comportará el md0, puesto que tendrá datos incongruentes y supongo que habría que regenerarlo entero con mdadm (no se cómo se hace jeje).
Una vez ya no hay errores de lectura, bien porque hemos reparado los discos físicamente, o los hemos sustituido por otros nuevos clonando encima con dd_rescue, ya se puede ensamblar el disco de red. Recordad montar los discos en la misma posición que estaban para que la placa del disco los detecte como debe y no invertidos.

Si se ha clonado de otro disco LaCie, como hice yo, no se deben encender los dos a la vez de primeras porque por ahora son exactamente el mismo disco, con el mismo nombre e IP, pero basta con entrar al administrador web y retocar lo que sea, formateando la partición de datos si se desea.

Quien quiera, que ponga sugerencias de métodos de reparación de los discos en los comentarios :)

Suerte si os toca recuperar uno!